Scikit预报_proba输出解释


12

我正在使用python中的scikit-learn库。在下面的代码中,我正在预测概率,但是我不知道如何读取输出。

测试数据

from sklearn.ensemble import RandomForestClassifier as RF
from sklearn import cross_validation

X = np.array([[5,5,5,5],[10,10,10,10],[1,1,1,1],[6,6,6,6],[13,13,13,13],[2,2,2,2]])
y = np.array([0,1,1,0,1,2])

分割数据集

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.5, random_state=0) 

计算概率

clf = RF()
clf.fit(X_train,y_train)
pred_pro = clf.predict_proba(X_test)
print pred_pro

输出

[[ 1.  0.]
 [ 1.  0.]
 [ 0.  1.]]

X_test列表包含3个数组(我有6个样本,test_size = 0,5),所以输出也有3个。

但是我要预测3个值(0,1,2),所以为什么每个数组只能得到2个元素?

我应该如何读取输出?

我还注意到,当我修改y中不同值的数量时,输出中的列数始终是y -1的不同计数。


欢迎来到CrossValidated。您在下面看到我的回答了吗?如果它解决了您的问题,请继续并将其标记为正确答案。否则,让我知道缺少的内容,我会尽力为您清除。

Answers:


5

看一看y_train。是的array([0, 0, 1])。这意味着您的拆分未选取y = 2处的样本。因此,您的模型不知道存在y = 2类。

您需要更多示例才能返回有意义的结果。

另外,请查看文档以了解如何解释输出。


1
这是对的。如果进行设置y = np.array([0,2,1,0,1,2])random_state=2现在将看到3列输出
-tdc

答案解决了我的问题。非常感谢你。列按什么顺序排列?它总是在上升?
HonzaB 2015年

运行clf.classes_。列将按该顺序排列。

就像这样:clf.fit(X_train,y_train).classes_
HonzaB 2015年

1
我认为这会起作用,但是您可以在跑步clf.classes_ 跑步clf.fit(X_train,y_train)
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.