2016-02-13 6 views
6

Używam XGBClassifier (w xgboost) do klasyfikacji wieloklasowej. Podczas wykonywania klasyfikator, ja otrzymuję błąd informujący:XGBClassifier num_class jest nieprawidłowy

unexpected keyword argument 'num_class' 

kod powodujący, że ten błąd jest wymienione poniżej (params jest prawidłowy zestaw parametrów dla xgb):

xgb.XGBClassifier(params, num_class=100) 

Szukałem trochę i odkrył, że parametr "num_class" ma nazwę "n_classes" dla implementacji scikit w XGBClassifier. Próbowałem tę zmianę i otrzymała podobny błąd:

unexpected keyword argument 'n_classes' 

kod powodujący, że ten błąd jest poniżej:

xgb.XGBClassifier(params, num_class=100) 

Każda pomoc w ustaleniu tego błędu jest mile widziana!

Odpowiedz

4

W interfejsie API Sklearn XGB nie trzeba jawnie określać parametru num_class. W przypadku, gdy cel ma więcej niż 2 poziomy, XGBClassifier automatycznie przełącza się w tryb klasyfikacji wieloklasowej.

evals_result = {} 
self.classes_ = list(np.unique(y)) 
self.n_classes_ = len(self.classes_) 

if self.n_classes_ > 2: 
# Switch to using a multiclass objective in the underlying XGB instance 
xgb_options["objective"] = "multi:softprob" 
xgb_options['num_class'] = self.n_classes_ 

Sprawdź kompletny kod źródłowy tutaj: https://github.com/dmlc/xgboost/blob/master/python-package/xgboost/sklearn.py