17

次のコードでは:

# 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_? また
  • gs.best_estimator_.named_steps['clf']?

これら3つの違いは何ですか?

4

1 に答える 1

29

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

予測を生成するための 3 つの同等の方法を以下に示します。

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)
于 2016-02-14T06:21:01.023 に答える