XGBClassifier num_class无效
问题内容:
我正在使用XGBClassifier(在xgboost中)进行多类分类。执行分类器后,我收到一条错误消息:
unexpected keyword argument 'num_class'
导致此错误的代码在下面列出(params是xgb的有效参数集):
xgb.XGBClassifier(params, num_class=100)
我搜索了一下,发现对于XGBClassifier的scikit实现,“ num_class”参数名为“
n_classes”。我尝试了此更改并收到了类似的错误:
unexpected keyword argument 'n_classes'
导致此错误的代码如下:
xgb.XGBClassifier(params, num_class=100)
感谢您提供任何解决此错误的帮助!
问题答案:
在Sklearn XGB API中,您不需要显式指定num_class参数。如果目标具有两个以上级别,则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