gpt4 book ai didi

python - 将 GridSearchCV 与 AdaBoost 和 DecisionTreeClassifier 一起使用

转载 作者:IT老高 更新时间:2023-10-28 22:22:33 30 4
gpt4 key购买 nike

我正在尝试使用 DecisionTreeClassifier (“DTC”) 作为 base_estimator 来调整 AdaBoost 分类器 (“ABT”)。我想同时调整 both ABT 和 DTC 参数,但不确定如何实现 - 管道不应该工作,因为我没有将 DTC 的输出“管道”到 ABT。这个想法是在 GridSearchCV 估计器中迭代 ABT 和 DTC 的超参数。

如何正确指定调优参数?

我尝试了以下操作,但在下面生成了一个错误。

[IN]
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.grid_search import GridSearchCV

param_grid = {dtc__criterion : ["gini", "entropy"],
dtc__splitter : ["best", "random"],
abc__n_estimators: [none, 1, 2]
}


DTC = DecisionTreeClassifier(random_state = 11, max_features = "auto", class_weight = "auto",max_depth = None)

ABC = AdaBoostClassifier(base_estimator = DTC)

# run grid search
grid_search_ABC = GridSearchCV(ABC, param_grid=param_grid, scoring = 'roc_auc')

[OUT]
ValueError: Invalid parameter dtc for estimator AdaBoostClassifier(algorithm='SAMME.R',
base_estimator=DecisionTreeClassifier(class_weight='auto', criterion='gini', max_depth=None,
max_features='auto', max_leaf_nodes=None, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
random_state=11, splitter='best'),
learning_rate=1.0, n_estimators=50, random_state=11)

最佳答案

您发布的代码中有几处错误:

  1. param_grid 字典的键需要是字符串。你应该得到一个 NameError
  2. 键“abc__n_estimators”应该只是“n_estimators”:您可能将它与管道语法混合在一起。这里没有任何东西告诉 Python 字符串“abc”代表你的 AdaBoostClassifier
  3. None(而不是 none)不是 n_estimators 的有效值。默认值(可能是您的意思)是 50。

这是包含这些修复的代码。要设置树估算器的参数,您可以使用允许访问嵌套参数的“__”语法。

from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.grid_search import GridSearchCV

param_grid = {"base_estimator__criterion" : ["gini", "entropy"],
"base_estimator__splitter" : ["best", "random"],
"n_estimators": [1, 2]
}


DTC = DecisionTreeClassifier(random_state = 11, max_features = "auto", class_weight = "auto",max_depth = None)

ABC = AdaBoostClassifier(base_estimator = DTC)

# run grid search
grid_search_ABC = GridSearchCV(ABC, param_grid=param_grid, scoring = 'roc_auc')

此外,1 或 2 个估算器对 AdaBoost 来说并没有真正意义。但我猜这不是您正在运行的实际代码。

希望这会有所帮助。

关于python - 将 GridSearchCV 与 AdaBoost 和 DecisionTreeClassifier 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32210569/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com