XGB:展示每个预测结果的各特征概率

问题描述:

我正在尝试使用xgboost算法预测解决多类分类,但是我不知道 predict_proba 是如何工作的.实际上, predict_proba 会生成一个概率列表,但我不知道每种概率与哪个类别相关.

这是一个简单的例子:

这是我的训练数据:


+------------+----------+-------+| feature1 | feature2 | label |

+------------+----------+-------+|    x      |    z    |  3  |

+------------+----------+-------+|    y      |    u    |  0  |

+------------+----------+-------+|    x      |    u    |  2  |

+------------+----------+-------+

然后当我尝试预测probas的新例子

model.predict_proba(['x','u'])

这将返回如下内容:

[0.2, 0.3, 0.5]

我的问题是:概率为0.5的类别是什么?是2类,3类还是0类?

似乎您在使用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]

你可能感兴趣的:(XGB:展示每个预测结果的各特征概率)