xgboost predict_proba : 如何做概率和标签之间的映射
xgboost predict_proba : How to do the mapping between the probabilities and the labels
我正在尝试使用 xgboost 算法预测求解一个 multiclass classification,但是我不知道 predict_proba
是如何工作的。事实上,predict_proba
生成了一个概率列表,但我不知道每个概率与哪个 class 相关。
这是一个简单的例子:
这是我的火车数据:
+------------+----------+-------+
| feature1 | feature2 | label |
+------------+----------+-------+
| x | z | 3 |
+------------+----------+-------+
| y | u | 0 |
+------------+----------+-------+
| x | u | 2 |
+------------+----------+-------+
然后当我尝试为新示例预测概率时
model.predict_proba(['x','u'])
这将 return 像这样:
[0.2, 0.3, 0.5]
我的问题是:概率为 0.5 的 class 是什么?是 class 2、3 还是 0?
看来你用的是xgboost的sklearnAPI。在这种情况下,模型有一个专用属性 model.classes_
,即模型学习到的 returns 和 类 以及输出数组中 类 的顺序对应于概率。
这是一个使用虚拟数据的示例:
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]
我正在尝试使用 xgboost 算法预测求解一个 multiclass classification,但是我不知道 predict_proba
是如何工作的。事实上,predict_proba
生成了一个概率列表,但我不知道每个概率与哪个 class 相关。
这是一个简单的例子:
这是我的火车数据:
+------------+----------+-------+
| feature1 | feature2 | label |
+------------+----------+-------+
| x | z | 3 |
+------------+----------+-------+
| y | u | 0 |
+------------+----------+-------+
| x | u | 2 |
+------------+----------+-------+
然后当我尝试为新示例预测概率时
model.predict_proba(['x','u'])
这将 return 像这样:
[0.2, 0.3, 0.5]
我的问题是:概率为 0.5 的 class 是什么?是 class 2、3 还是 0?
看来你用的是xgboost的sklearnAPI。在这种情况下,模型有一个专用属性 model.classes_
,即模型学习到的 returns 和 类 以及输出数组中 类 的顺序对应于概率。
这是一个使用虚拟数据的示例:
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]