xgboost predict_proba:如何将概率值和标签进行映射?

6

我正在尝试使用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?

1个回答

8
似乎您正在使用xgboost的sklearn API。在这种情况下,模型具有一个专用属性model.classes_,它返回模型学习的类和输出数组中的类顺序对应于概率的顺序。以下是使用虚拟数据的示例:
import numpy as np
import pandas as pd
import xgboost as xgb

# generate dummy data (10k examples, 10 numeric features, 4 classes of target)
np.random.seed(312)
train_X = np.random.random((10000,10))
train_y_mcc = np.random.randint(0, 4, train_X.shape[0]) #four classes:0,1,2,3

# model
xgb_model_mpg = xgb.XGBClassifier(max_depth= 3, n_estimators=100)
xgb_model_mpg.fit(train_X, train_y_mcc)

# classes
print(xgb_model_mpg.classes_)
>>> [0 1 2 3]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接