Это потому, что конструктор python для AdaBoostClassifier имеет только следующие параметры, определенные в __init__()
:
base_estimator=None,
n_estimators=50,
learning_rate=1.,
algorithm='SAMME.R',
random_state=None
И для него base_estimator__max_depth
- неизвестный параметр.
Однако,Вы можете использовать set_params()
, который будет правильно обрабатывать их в соответствии с документацией:
Установите параметры этого оценщика.
Метод работает на простомОценщики, а также на вложенных объектах (таких как конвейеры).Последние имеют параметры вида component__parameter , чтобы можно было обновлять каждый компонент вложенного объекта.
Таким образом, вы можете сделать это:
x = {'base_estimator__max_depth':5}
clf = AdaBoostClassifier(base_estimator=DecisionTreeClassifier())
clf.set_params(**x)
ПРИМЕЧАНИЕ : В Python 3 вы также можете сделать следующее (что, я думаю, вы ищете):
x = {'base_estimator':DecisionTreeClassifier(),
'base_estimator__max_depth':5}
clf = AdaBoostClassifier()
clf.set_params(**x)
Вышеуказанное не работает для python2 в настоящее время и будет исправленов следующей версии.См. выпуск здесь .
Другой способ заключается в том, что вы всегда можете сначала установить словарь в DecisionTreeClassifier, а затем передать его в AdaBoostClassifier.
Примерно так:
x = {'max_depth': 5}
base_est = DecisionTreeClassifier(**x)
clf = AdaBoostClassifier(base_estimator = base_est)
Вы имеете в виду что-то еще?Если да, опубликуйте фрагмент кода того, что вы хотите сделать, и мы найдем способ.