def __init__(self, model_type, codes, feature_names=None, alphas=None, **kwargs): self.model_type = model_type self.models = {} for i, code in enumerate(codes): model = SparseModel(model_type, feature_names, **kwargs) if alphas is not None: model.set_alpha(alphas[i]) self.models[code] = model
def fit(self, X, all_y): converted = False if len(all_y.shape) == 1: converted = True else: n, n_codes = all_y.shape if n_codes == 1: converted = True if converted: SparseModel.fit(self, X, all_y) else: powerset_y = self.binary_vectors_to_powerset_list(all_y) SparseModel.fit(self, X, powerset_y)
def __init__(self, model_type, codes, feature_names=None, alphas=None, **kwargs): # generate a random order over models self.order = list(codes)[:] random.shuffle(self.order) self.model_type = model_type self.models = {} # create models in the pre-determined order, adding one feature each time for the output of the previous model for i, code in enumerate(self.order): model = SparseModel(model_type, feature_names[:], **kwargs) if alphas is not None: model.set_alpha(alphas[i]) self.models[code] = model feature_names.append(code)
def tune_by_cv(self, X, all_y, alpha_values, td_splits, n_dev_folds, reuser=None, verbose=1): y = self.binary_vectors_to_powerset_list(all_y.as_matrix()) alphas = pd.DataFrame(np.zeros([1, 1]), index=['alpha'], columns=['powerset_label']) valid_f1_summary, best_alpha = SparseModel.tune_by_cv(self, X, y, alpha_values, td_splits, n_dev_folds, reuser, verbose) alphas['alpha', 'powerset_label'] = best_alpha return alphas
def predict(self, X, index=None, codes=None): n, p = X.shape powerset_predictions = SparseModel.predict(self, X) example_str = self.powerset_labels[0] example = [int(i) for i in example_str[1:-1].split(',')] n_codes = len(example) predictions = np.zeros([n, n_codes]) for i in range(n): predictions[i, :] = self.powerset_index_to_binary_vec(powerset_predictions[i]) if index is not None: predictions = pd.DataFrame(predictions, index=index, columns=codes) return predictions
def __init__(self, model_type, codes, **kwargs): self.codes = codes code = ['powerset_label'] SparseModel.__init__(self, model_type, code, **kwargs)