use*_*827 11 python scikit-learn grid-search
在以下代码中:
# 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)
Run Code Online (Sandbox Code Playgroud)
什么应该用于预测?
gs?gs.best_estimator_?要么gs.best_estimator_.named_steps['clf']?这3个有什么区别?
Dav*_*ust 17
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)
Run Code Online (Sandbox Code Playgroud)
用best_estimator_.
pred = gs.best_estimator_.predict(X_test)
Run Code Online (Sandbox Code Playgroud)
在管道中调用每个步骤.
X_test_fs = gs.best_estimator_.named_steps['fs'].transform(X_test)
pred = gs.best_estimator_.named_steps['clf'].predict(X_test_fs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6104 次 |
| 最近记录: |