我目前正在使用scikit-learn
处理多标签分类问题,我在学习如何获得每个类/标签的预测概率方面遇到了一些麻烦 - 类似于scikit-learn的.predict_proba()
方法对二进制分类任务有效。
我的y
是一个100x10的二维数组,有10个唯一的类,我使用scikit-learn的ensemble.RandomForestClassifier()
作为我的分类器。
我想做的只是预测一组给定特征属于cl_
中某个类(下面标注为y
)的概率。所以基本上我想象的输出类似于:
cl_1 | cl_2 | cl_3 | cl_4 | cl_5 | cl_6 | cl_7 | cl_8 | cl_9 | cl_10
---------------------------------------------------------------------
0.0 | 0.0 | 0.0 | 0.1 | 0.3 | 0.0 | 0.0 | 0.0 | 0.6 | 0.0
注意:我已将Random Forest分类器拟合到数据集,.predict()
方法按预期工作。但是,.predict_proba()
方法以 C x M 的形式返回概率,其中 C 是唯一类的数量, M 是数据集中的实例数。
澄清/更新:以下是我的数据集中的实际y
实例:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0]
使用.predict_proba()
X_test
返回形状为39 x 848,048的二维数组(其中39是唯一类的数量,848,048是实例数)。
所以用外行人的话来说,我要问的是:自.predict_proba()
返回后我怎么做(就上面的小图而言)。
注意:这:
y_hat_proba = clf.predict_proba(X_test)
print(y_hat_proba[0][1])
返回[ 1. 0.]
答案 0 :(得分:2)
您可以使用.predict_proba(X_test)
来获取每组新概率的概率。如果您需要预测单个点,请确保X_test
只有一行。
输出的形状应为[n_samples,n_classes]形状(在测试集中)。 You can see the function's documentation.