【问题标题】:How to properly GridSearchCV on Bagged DecisionTreeClassifiers如何在 Bagged DecisionTreeClassifiers 上正确使用 GridSearchCV
【发布时间】: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


    【解决方案1】:

    我找到了解决方案。创建 BaggingClassifier 时:

    classifier = BaggingClassifier(base_estimator=None, n_estimators=10, *, max_samples=1.0, max_features=1.0, bootstrap=True, bootstrap_features=False, oob_score=False)
    

    您可以通过“base_estimator__parameter”将参数传递给base_estimator

    清楚地解释于:

    Tuning parameters of the classifier used by BaggingClassifier

    【讨论】:

      猜你喜欢
      • 2018-12-04
      • 2019-11-04
      • 2021-10-04
      • 2019-08-30
      • 2016-12-07
      • 2011-08-12
      • 2013-05-23
      • 2021-11-01
      • 2019-11-30
      相关资源
      最近更新 更多