python - 如何在 Bagged DecisionTreeClassifiers 上正确使用 GridSearchCV
问题描述
我目前正在尝试通过 GridSearch 对由装有 BaggingClassifier 的 DecisionTreeclassifiers 组成的集成模型进行超参数调整。我希望能够通过以下参数正确地进行 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
控制每棵树的样本数量的值。
解决方案
我找到了解决方案。创建 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
清楚地解释在:
推荐阅读
- java - Soteria HttpMessageContext.setRegisterSession() 没有按预期工作?
- python - 将复杂的 str 更改为在 pandas Dataframe 中浮动
- reactjs - 我尝试使用 react 和 redux 创建选项卡。一切正常,但我希望在关闭前一个元素时突出显示下一个元素
- python - 如何为 python 应用程序减小这个多阶段 docker 构建的大小
- python - 在项目中从 None 提高 KeyError(key)
- angular - 根据输入角度过滤多维数组
- php - 如何在左连接上比较逗号分隔的 id
- python - "\r\n" 也没有写入下一行
- android - Quickblox 示例视频聊天 - 无法创建用户
- java - 操作栏无法正常工作