我注意到 Python 和 R 中的 XGBoost 实现仅支持分类目标变量的二元分类。
- 我已经为我的分类问题实现了随机森林和极端随机树
为什么我不能使用此方法对来自多个类别的目标进行分类?
是否可以对我的多类数据集进行调整以使用 XGBoost?
它确实支持多类分类。下面是代码:
param = {
'max_depth': 3, # the maximum depth of each tree
'eta': 0.3, # the training step for each iteration
'silent': 1, # logging mode - quiet
'objective': 'multi:softprob', # error evaluation for multiclass training
'num_class': 3} # the number of classes that exist in this dataset
您可以在 Python 中使用num_class
作为参数进行多类分类。
从 XGboost 文档页面:
指定学习任务和相应的学习目标。
目标选项如下:
-
目标 [默认=注册:平方错误]
-
[...]
-
multi:softmax:设置 XGBoost 以使用 softmax 目标进行多类分类,还需要设置 num_class(类数(
- multi:softprob:与softmax相同,但输出一个ndata * nclass向量,可以进一步重塑为ndata * nclass矩阵。结果包含属于每个类的每个数据点的预测概率。
- [...]
-
-
eval_metric [根据目标默认]
- [...]
- merror:多类分类错误率。它的计算方式为 #(错误大小写(/#(所有情况(。
- mlogloss:多类logloss。
看起来多类分类有很多选择,只需选择您的武器:)