Scikit predict_proba 输出解释

机器算法验证 Python scikit-学习
2022-03-28 10:24:43

我正在使用 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 的不同计数。

1个回答

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

您需要更多样本才能返回有意义的内容。

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