理解多标记问题的预测概率

时间:2016-02-23 18:22:25

标签: python scikit-learn

我目前正在使用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.]

1 个答案:

答案 0 :(得分:2)

您可以使用.predict_proba(X_test)来获取每组新概率的概率。如果您需要预测单个点,请确保X_test只有一行。

输出的形状应为[n_samples,n_classes]形状(在测试集中)。 You can see the function's documentation.