Scikit learn 递归特征消除&;使用scikit学习的网格搜索:弃用警告

Scikit learn 递归特征消除&;使用scikit学习的网格搜索:弃用警告,scikit-learn,feature-selection,deprecation-warning,grid-search,Scikit Learn,Feature Selection,Deprecation Warning,Grid Search,我正在构建多分类器的网格搜索,并希望使用递归特征消除和交叉验证。我从中提供的代码开始。以下是我的工作代码: param_grid = [{'C': 0.001}, {'C': 0.01}, {'C': .1}, {'C': 1.0}, {'C': 10.0}, {'C': 100.0}, {'fit_intercept': True}, {'fit_intercept': False}, {'penalty': 'l1'}, {'penal

我正在构建多分类器的网格搜索,并希望使用递归特征消除和交叉验证。我从中提供的代码开始。以下是我的工作代码:

param_grid = [{'C': 0.001}, {'C': 0.01}, {'C': .1}, {'C': 1.0}, {'C': 10.0},
              {'C': 100.0}, {'fit_intercept': True}, {'fit_intercept': False},
              {'penalty': 'l1'}, {'penalty': 'l2'}]

estimator = LogisticRegression()
selector = RFECV(estimator, step=1, cv=5, scoring="roc_auc")
clf = grid_search.GridSearchCV(selector, {"estimator_params": param_grid},
                               cv=5, n_jobs=-1)
clf.fit(X,y)
print clf.best_estimator_.estimator_
print clf.best_estimator_.ranking_
print clf.best_estimator_.score(X, y)
我收到了一个弃用警告,因为“estimator_params”参数似乎在0.18中被删除;我试图找出第4行中使用的正确语法

努力

param_grid = [{'C': 0.001}, {'C': 0.01}, {'C': .1}, {'C': 1.0}, {'C': 10.0},
              {'C': 100.0}, {'fit_intercept': True}, {'fit_intercept': False},
              {'fit_intercept': 'l1'}, {'fit_intercept': 'l2'}]
clf = grid_search.GridSearchCV(selector, param_grid,
                               cv=5, n_jobs=-1)
param_grid = {"estimator__C": [.001,.01,.1,1,10,100],
              "estimator__fit_intercept": [True, False],
              "estimator__penalty": ["l1","l2"]}
clf = grid_search.GridSearchCV(selector, param_grid,
                               cv=5, n_jobs=-1)
返回值错误:参数值应为列表。而且

param_grid = {"penalty": ["l1","l2"],
           "C": [.001,.01,.1,1,10,100],
           "fit_intercept": [True, False]}
clf = grid_search.GridSearchCV(selector, param_grid,
                               cv=5, n_jobs=-1)
返回值错误:估计器RFECV的参数惩罚无效。使用
estimator.get_params().keys()
检查可用参数列表。检查这些键时,所有3个“C”、“拟合截距”和“惩罚”都显示为参数键。努力

param_grid = {"estimator__C": [.001,.01,.1,1,10,100],
              "estimator__fit_intercept": [True, False],
              "estimator__penalty": ["l1","l2"]}
clf = grid_search.GridSearchCV(selector, param_grid,
                               cv=5, n_jobs=-1)
永远不会完成执行,所以我猜不支持这种类型的参数赋值


至于现在,我设置为忽略警告,但我想用0.18的适当语法更新代码。任何帮助都将不胜感激

对之前发布在SO上的问题的回答:。谢谢你的回答

相关代码:

params = {'estimator__max_depth': [1, 5, None],
          'estimator__class_weight': ['balanced', None]}
estimator = DecisionTreeClassifier()
selector = RFECV(estimator, step=1, cv=3, scoring='accuracy')
clf = GridSearchCV(selector, params, cv=3)
clf.fit(X_train, y_train)
clf.best_estimator_.estimator_
要查看更多信息,请使用:

print(selector.get_params())