예제 #1
0
 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
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
 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
예제 #5
0
    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
예제 #6
0
 def __init__(self, model_type, codes, **kwargs):
     self.codes = codes
     code = ['powerset_label']
     SparseModel.__init__(self, model_type, code, **kwargs)