2016-02-13 3 views
6

Я использую XGBClassifier (в xgboost) для классификации нескольких классов. После выполнения классификатора, я получаю сообщение об ошибке с указанием:XGBClassifier num_class недействителен

unexpected keyword argument 'num_class' 

код, который вызвал эту ошибку приведен ниже (PARAMS является допустимым набором параметров xgb):

xgb.XGBClassifier(params, num_class=100) 

Я искал немного и обнаружил, что параметр num_class называется «n_classes» для реализации сценария XGBClassifier для scikit. Я попытался это изменение и получил подобную ошибку:

unexpected keyword argument 'n_classes' 

код, который вызвал эту ошибку приведен ниже:

xgb.XGBClassifier(params, num_class=100) 

Любой помощь в исправлении этой ошибки ценится!

ответ

4

В API Sklearn XGB вам не нужно явно указывать параметр num_class. В случае, если цель имеет более 2 уровней, XGBClassifier автоматически переключается в режим классификации многоклассов.

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_ 

Проверьте полный исходный код здесь: https://github.com/dmlc/xgboost/blob/master/python-package/xgboost/sklearn.py