class ArmClassifier(BaseEstimator, ClassifierMixin): def __init__(self,n_estimators=100,min_samples_split=2): print('ARM: {},{}'.format(n_estimators,min_samples_split)) self.m_nestimators = n_estimators self.m_minsamplessplit = min_samples_split self.classy = MultiOutputClassifier(RandomForestClassifier(n_estimators=n_estimators,min_samples_split=min_samples_split)) def fit(self,X,y=None): return self.classy.fit(X,y) def set_params(self, **params): print('ARM Setparams: {}'.format(params)) self.classy.set_params(**params) def predict(self,X,y=None): return self.classy.predict(X)
def build_classifiers_build_params(classifiers_configs): ''' INPUT classifiers_configs - dict, a dictionary containing the configuration for each classifier OUTPUT classifiers_params_dict - dict, a dictionary containing the grid params to be used for each classifier in the training process This function builds a dictionary with grid params to be used in training process for each classifier whose configurations were given as input. It can handle a single classifier or a list of classifiers. ''' if len(classifiers_configs) > 1: classifiers_params_list = [] classifiers_params_dict = {} for classifier in classifiers_configs: classifier_estimator = classifier['estimator'] classifier_obj = build_estimator_obj(classifier_estimator) classifier_obj = MultiOutputClassifier(classifier_obj.set_params(**classifier['params'])) classifiers_params_list.append(classifier_obj) classifiers_params_dict['clf'] = classifiers_params_list elif len(classifiers_configs) == 1: classifier = classifiers_configs[0] classifier_estimator = classifier['estimator'] classifier_obj = build_estimator_obj(classifier_estimator) classifier_obj = MultiOutputClassifier(classifier_obj) classifiers_params_dict = {'clf' : [classifier_obj]} classifiers_params_dict.update(classifier['params']) print(classifiers_params_dict) return classifiers_params_dict