def get_xgboost_model(name="xgboost_common"): return scope.get_xgb_model( n_estimators=scope.int( hp.quniform( get_full_name(name, "n_estimators"), 1, 200, 1, ), ), max_depth=scope.int( hp.quniform( get_full_name(name, 'max_depth'), 1, 13, 1, ), ), min_child_weight=scope.int( hp.quniform( get_full_name(name, 'min_child_weight'), 1, 6, 1, ), ), subsample=scope.int( hp.uniform( get_full_name(name, 'subsample'), 0.5, 1, ), ), gamma=hp.uniform( get_full_name(name, 'gamma'), 0.5, 1, ), nthread=1, seed=RANDOM_STATE, )
def get_model_params(name="model_common", xgb_name=None, lr_name=None): xgb_result_name = xgb_name if xgb_name is not None else get_full_name( name, 'xgb') lr_result_name = lr_name if lr_name is not None else get_full_name( name, 'lr') return hp.choice(name, ( get_xgboost_params(xgb_result_name), get_linear_model_params(lr_result_name), get_rf_model_params('rf'), ))
def get_linear_model(name="logistic_regression"): """Set up hyperparameters and ranges for logistic regression model.""" return scope.get_lr_model_wrapper( C=hp.uniform(get_full_name(name, 'C'), 0, 1), penalty=hp.choice(get_full_name(name, 'penalty'), ('l1', 'l2')), class_weight=hp.choice(get_full_name(name, 'class_weight'), (defaultdict(lambda: 1.0), 'balanced')), fit_intercept=hp.choice(get_full_name(name, 'fit_intercept'), (False, True)), random_state=RANDOM_STATE)
def get_min_size_prefilter_params(name="min_size_prefilter_common"): return scope.get_min_size_prefilter(min_size=hp.quniform( get_full_name(name, 'min_size'), 0, 10, 1, ), )
def get_bayes_based_priority_getter_params( name='bayes_based_priority_getter_common'): return scope.get_bayes_based_priority_getter(max_features=hp.quniform( get_full_name(name, 'max_features'), 0, 3000, 1, ), )
def get_min_simple_features_index_getter_params( name="min_simple_features_index_getter_common"): return scope.get_min_simple_features_index_getter( use_raw_candidate=hp.choice( get_full_name(name, 'use_raw_candidate'), (False, True), ), max_check=1000, )
def get_priority_getter_params(name='priority_getter_common'): return hp.choice( name, ( scope.get_simple_priority_getter(), get_bayes_based_priority_getter_params( get_full_name(name, 'bayes_priority_getter'), ), ), )
def __init__(self, lower_level_model=None): super(BasicModelSelectorPrimitive, self).__init__() # set lower-level model self._lower_level_model = lower_level_model # set model name for logging name = "model_common" xgb_name = 'xgb' lr_name = 'lr' rf_name = 'rf' # set model structure self._model_structure = hp.choice(name, ( get_xgboost_params(name=get_full_name(name, xgb_name)), get_linear_model(name=get_full_name(name, lr_name)), get_rf_model_params(name=get_full_name(name, rf_name)), ))
def get_feature_selector_params(inner_model_params, name='feature_selector_params'): model_based_estimator = get_feature_selector_estimator_params() return hp.choice( name, ( get_k_best_params( inner_model_params=inner_model_params, name=get_full_name(name, 'k_best'), ), #get_boruta_feature_selector_params( # name=get_full_name(name, 'boruta'), # inner_model_params=inner_model_params, #), get_model_based_feature_selector_params( name=get_full_name(name, 'model_based_selector'), estimator=model_based_estimator, inner_model_params=inner_model_params, ), ), )
def __init__(self): super(MultimarkerFeatureSelectorPrimitive, self).__init__() # range for feature selectino threshold l_threshold = -5 u_threshold = 5 name = 'multimarker_feature_selector' xgb_name = 'xgb' lr_name = 'lr' rf_name = 'rf' # structure of the current lever - we will use existing class from previous version from this self._model_structure = scope.get_model_based_feature_selection_model( # lower layer model for estimating features importance estimator=hp.choice(name, ( get_rf_model_params(name=get_full_name(name, rf_name)), get_linear_model(name=get_full_name(name, lr_name)), )), # current layer model that works on filtered features inner_model=hp.choice(name, ( get_xgboost_params(name=get_full_name(name, xgb_name)), get_linear_model(name=get_full_name(name, lr_name)), get_rf_model_params(name=get_full_name(name, rf_name)), )), # threshold for filtering important features feature_selection_threshold_coef=hp.loguniform( get_full_name(name, "threshold"), l_threshold, u_threshold), )
def __init__(self, lower_level_model): super(SingelmarkerFeatureSelectorPrimitive, self).__init__() name = 'single_marker_k_best_selector' xgb_name = 'xgb' lr_name = 'lr' rf_name = 'rf' self._lower_level_model = lower_level_model self._model_structure = scope.get_k_best_wrapper( # current layer model that works on filtered features inner_model=hp.choice(name, ( get_xgboost_params(name=get_full_name(name, xgb_name)), get_linear_model_params(name=get_full_name(name, lr_name)), get_rf_model_params(name=get_full_name(name, rf_name)), )), # lower layer model for estimating features importance k_best=scope.get_k_best( k=hp.qloguniform(get_full_name(name, 'k'), 0, 5, 1), score_func=hp.choice(get_full_name(name, 'score_func'), (chi2, f_classif)), ), )
def get_and_based_index_getter_params(name="and_based_index_getter_common"): return scope.get_and_based_index_getter(use_raw_candidate=hp.choice( get_full_name(name, 'use_raw_candidate'), (False, True), ), )
def get_feature_selector_estimator_params(name='feature_selector_estimator'): return hp.choice(name, ( get_rf_model_params(name=get_full_name(name, 'rf')), get_linear_model_params(name=get_full_name(name, 'lr')), ))