【发布时间】:2021-12-24 18:00:32
【问题描述】:
我目前正在尝试通过 GridSearch 对由带有 BaggingClassifier 的决策树分类器组成的集成模型进行超参数调整。我希望能够通过以下参数正确地进行 Gridsearch:
分类器:
'classifier__class_weight': ['balanced'],
'classifier__criterion': ['gini', 'entropy'],
'classifier__max_depth':[1,2,3,4,5,6],
'classifier__max_features':[1,'auto'],
'classifier__min_weight_fraction_leaf': [0.001, 0.005, 0.01],
'classifier__random_state': [0],
'classifier__splitter': ['best','random']
装袋工:
'bagging__bootstrap': [True,False],
'bagging__bootstrap_features': False,
'bagging__max_features': [1.0,2.0,3.0],
'bagging__max_samples': [avgUniqueness,1.0],
'bagging__n_estimators': [10,50,100,1000]
如果可能的话,我想同时调整它们。
我无法立即实现管道,因为 DecisionTreeClassifier 缺少 fit_transform 参数。但我直觉这不是正确的方法。
也许我没有看到一些基本的想法。类似问题的回答是:
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)
但使用此解决方案,您可以只对分类器进行超调,而不是一次对整个集成进行超调。还有一点很重要,我需要将一个固定的 sample_weight 参数传递给分类器,并且“avgUniqueness”是一个 int 值,用于控制每棵树的样本数。
【问题讨论】:
标签: python scikit-learn cross-validation hyperparameters ensemble-learning