我正在尝试使用xgboost算法解决多类分类问题,但是我不清楚predict_proba
函数的具体工作原理。实际上,predict_proba
函数会生成一系列概率,但我不知道每个概率对应哪个类别。
这是一个简单的例子:
这是我的训练数据:
+------------+----------+-------+| feature1 | feature2 | label |+------------+----------+-------+| x | z | 3 |+------------+----------+-------+| y | u | 0 |+------------+----------+-------+| x | u | 2 |+------------+----------+-------+
然后当我尝试为一个新样本预测概率时
model.predict_proba(['x','u'])
这会返回类似这样的结果:
[0.2, 0.3, 0.5]
我的问题是:概率为0.5的类别是哪个?是类别2,还是3或0?
回答:
看起来你使用的是xgboost的sklearn API。在这种情况下,模型有一个专用的属性model.classes_
,它返回模型学习到的类别,并且输出数组中类别的顺序对应于概率的顺序。
这是一个使用虚拟数据的例子: