Можно ли установить base_estimator как OneVsRestClassifier (DecisionTreeClassifier ()) для Adaboost? - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь построить модель Adaboost на наборе данных с мультиклассовыми метками для возрастной и этнической групп.

Поскольку я планирую получить ROC и AUC, я преобразовал целевые переменные в двоичную форму как yb_train2 для возрастной группы и yb_train3 для этнической группы.Затем я попробовал один-против-отдыха в модели дерева решений, которая отлично работает.

но теперь я понятия не имею, как указать параметры в поиске по сетке, я попробовал следующий код и получил синтаксическую ошибку:

abc = AdaBoostClassifier(base_estimator= (OneVsRestClassifier(DecisionTreeClassifier()))


param_grid = dict(base_estimator__estimator__criterion = ["gini", "entropy"],
                  base_estimator__estimator__splitter = ["best", "random"],
                  n_estimators = [1, 2],
                  learning_rate =  [0.0001,0.001,0.01,0.1,1]
                  )

grid = GridSearchCV(abc,param_grid)

grid.fit(X_train,yb_train2)
print ('best score: {:}').format(grid.best_score_ ), ('with parameter: {:}').format(grid.best_params_)

grid.fit(X_train,yb_train3)
print ('best score: {:}').format(grid.best_score_ ), ('with parameter:{:}').format(grid.best_params_)

enter image description here Может кто-нибудь дать какие-то предложения в такой ситуации?Спасибо:)

1 Ответ

0 голосов
/ 09 марта 2019

Вы пропустили, чтобы закрыть одну из скобок.

from sklearn.ensemble import AdaBoostClassifier
from sklearn.multiclass import OneVsRestClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV

abc = AdaBoostClassifier(base_estimator= (OneVsRestClassifier(DecisionTreeClassifier())))

param_grid = dict(base_estimator__estimator__criterion = ["gini", "entropy"],
                  base_estimator__estimator__splitter = ["best", "random"],
                  n_estimators = [1, 2],
                  learning_rate =  [0.0001,0.001,0.01,0.1,1]
                  )

grid = GridSearchCV(abc,param_grid)      

Это может помочь вам преодолеть синтаксическую ошибку.

Но DecisionTreeClassifier по умолчанию является мультиклассовым классификатором, поэтому я бы посоветовал не использовать поверх него оболочку oneVsRestclassifier.

...