【问题标题】:Recursive Feature Elimination & Grid Search using scikit-learn: DeprecationWarning使用 scikit-learn 进行递归特征消除和网格搜索:DeprecationWarning
【发布时间】:2016-06-30 02:28:23
【问题描述】:

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

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)

我收到了一个 DeprecationWarning,因为它似乎在 0.18 中删除了“estimator_params”参数;我正在尝试找出在第 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)

返回 ValueError:参数值应该是一个列表。还有……

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)

返回 ValueError:估计器 RFECV 的参数惩罚无效。使用estimator.get_params().keys() 检查可用参数列表。检查键将“C”、“fit_intercept”和“penalty”中的所有 3 个显示为参数键。正在尝试...

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 的适当语法更新代码。任何帮助将不胜感激!

【问题讨论】:

    标签: scikit-learn feature-selection deprecation-warning grid-search


    【解决方案1】:

    回答之前在 SO 上发布的问题:https://stackoverflow.com/a/35560648/5336341。感谢Paulo Alves 的回答。

    相关代码:

    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())
    

    【讨论】:

      猜你喜欢
      • 2014-07-12
      • 2020-07-23
      • 2015-11-19
      • 2016-11-30
      • 2016-08-09
      • 2014-07-30
      • 2016-08-30
      • 2013-08-17
      • 2017-03-30
      相关资源
      最近更新 更多