Tim*_*Tim 9 python scikit-learn
假设我想训练BaggingClassifier那种用途DecisionTreeClassifier:
dt = DecisionTreeClassifier(max_depth = 1)
bc = BaggingClassifier(dt, n_estimators = 500, max_samples = 0.5, max_features = 0.5)
bc = bc.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
我想用GridSearchCV找到两者的最佳参数BaggingClassifier和DecisionTreeClassifier(如max_depth从DecisionTreeClassifier和max_samples从BaggingClassifier),究竟是什么语法?
Tim*_*Tim 11
我自己找到了解决方案:
param_grid = {
'base_estimator__max_depth' : [1, 2, 3, 4, 5],
'max_samples' : [0.05, 0.1, 0.2, 0.5]
}
clf = GridSearchCV(BaggingClassifier(DecisionTreeClassifier(),
n_estimators = 100, max_features = 0.5),
param_grid, scoring = choosen_scoring)
clf.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
即说,max_depth"属于" __的base_estimator,也就是我DecisionTreeClassifier在这种情况下.这可以工作并返回正确的结果.
如果您使用的是管道,则可以使用以下内容扩展接受的答案(请注意双,双下划线):
model = {'model': BaggingClassifier,
'kwargs': {'base_estimator': DecisionTreeClassifier()}
'parameters': {
'name__base_estimator__max_leaf_nodes': [10,20,30]
}}
pipeline = Pipeline([('name', model['model'](**model['kwargs'])])
cv_model = GridSearchCV(pipeline, param_grid=model['parameters'], cv=cv, scoring=scorer)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3642 次 |
| 最近记录: |