我正在尝试使用决策树分类器(“DTC”)作为基本估计器来调整AdaBoost分类器(“ABT”)。我想同时调整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)
你发布的代码有几处错误:
param_grid
字典的键必须是字符串。你应该得到一个NameError
。AdaBoostClassifier
。None
(而不是none
)不是n_estimators
的有效值。默认值(可能是您的意思)是50。下面是这些修复的代码。 要设置树估计器的参数,可以使用允许访问嵌套参数的“\uuu”语法。
另外,1或2个估计器对AdaBoost也没有实际意义。但我猜这不是你运行的代码。
希望这有帮助。
相关问题 更多 >
编程相关推荐