2016-10-18 25 views
6

Próbuję użyć opakowania XGBClassifier dostarczonego przez sklearn dla problemu wieloklasowego. Moje klasy to [0, 1, 2], celem którego używam jest multi:softmax. Kiedy próbuję dopasować klasyfikatora uzyskaćxgboost sklearn wartość 0st Parametr num_class powinien być większy równy 1

xgboost.core.XGBoostError: value 0for Parameter num_class should be greater equal to 1

Gdy próbuję ustawić parametr num_class I pojawia się błąd

got an unexpected keyword argument 'num_class'

Sklearn jest ustawienie tego parametru automatycznie, więc nie powinnam przekazać ten argument. Ale dlaczego mam pierwszy błąd?

Odpowiedz

3

Trzeba ręcznie dodać parametr num_class do xgb_param

# Model is an XGBClassifier 
    xgb_param = model.get_xgb_params() 
    xgb_param['num_class'] = 3 
    cvresult = xgb.cv(xgb_param, ...) 

XGBClassifier ma ustawić tę wartość automatycznie jeśli używasz jego metody fit, ale nie w sposób cv

-1

Czy używasz funkcji xgboost.cv? Napotkałem te same problemy, ale znalazłem rozwiązanie. Oto mój kod:

xgb_param = model.get_xgb_params() 
    extra = {'num_class': 3} 
    xgb_param.update(extra) 
    cvresult = xgb.cv(xgb_param, xgtrain, ...) 

xgb_param to słownik parametrów modelu XGBoost. Następnie dołączam do niego nowy dykt extra, aby określić num_class, przekazać nowy dyktat funkcji cv. To działa.