如何使用GridSearchCV输出进行scikit预测?

时间:2016-02-14 05:22:06

标签: python scikit-learn grid-search

在以下代码中:

volatile

预测应该用什么?

  • # Load dataset iris = datasets.load_iris() X, y = iris.data, iris.target rf_feature_imp = RandomForestClassifier(100) feat_selection = SelectFromModel(rf_feature_imp, threshold=0.5) clf = RandomForestClassifier(5000) model = Pipeline([ ('fs', feat_selection), ('clf', clf), ]) params = { 'fs__threshold': [0.5, 0.3, 0.7], 'fs__estimator__max_features': ['auto', 'sqrt', 'log2'], 'clf__max_features': ['auto', 'sqrt', 'log2'], } gs = GridSearchCV(model, params, ...) gs.fit(X,y)
  • gs? 或
  • gs.best_estimator_

这3个有什么区别?

1 个答案:

答案 0 :(得分:13)

gs.predict(X_test)相当于gs.best_estimator_.predict(X_test)。使用其中任何一个,X_test将通过整个管道传递,它将返回预测。

然而,

gs.best_estimator_.named_steps['clf'].predict()只是管道的最后阶段。要使用它,必须已经执行了功能选择步骤。这只有在您之前通过gs.best_estimator_.named_steps['fs'].transform()

运行数据时才有效

生成预测的三种等效方法如下所示:

直接使用gs

pred = gs.predict(X_test)

使用best_estimator_

pred = gs.best_estimator_.predict(X_test)

调用管道中的每个步骤。

X_test_fs = gs.best_estimator_.named_steps['fs'].transform(X_test)
pred = gs.best_estimator_.named_steps['clf'].predict(X_test_fs)