【发布时间】:2018-01-24 16:43:59
【问题描述】:
在标记为 9 个类的 6000 个分量向量上训练 RForest 后,我尝试获取以前未见过的一组向量的类概率,其形状如下:
X.shape
Out[6]: (15091, 6000)
与:
clf = RandomForestClassifier( n_estimators = 100 )
probs = clf.predict_proba(X)
结果我得到了一个列表:
[array([[ 0.61, 0.39],
[ 0.62, 0.38],
[ 0.24, 0.76],
...,
[ 0.96, 0.04],
[ 0.49, 0.51],
[ 0.91, 0.09]]), array([[ 0.91, 0.09],
[ 0.94, 0.06],
[ 0.93, 0.07],
...,
[ 1. , 0. ],
[ 0.96, 0.04],
[ 0.99, 0.01]]), array([[ 0.95, 0.05],
[ 0.9 , 0.1 ],
[ 0.95, 0.05],
...,
带有恭维概率。有什么办法可以消除predict_proba 中的恭维概率,所以这个方法的输出而不是[ 0.96, 0.04] 只包含0.96 而无需自己编码?
* 主要更新 *
将 RForest 返回的概率列表转换为 numpy 数组后:
predictions = np.array(probs)
看它的形状:
predictions.shape
(9, 15091, 2)
揭示了主要问题:我有 9 个类和 15091 个样本,所以predict_proba 应该返回 15091 个列表,其中每个列表依次包含 9 个两个概率元素的列表(赞美)。相反,我得到 9 个列表,每个列表长 15091 个元素,其中每个元素都是一个恭维概率列表。
简而言之,为什么而不是:
(15091, 9, 2)
我明白了:
(9, 15091, 2)
怎么了?
【问题讨论】:
标签: python scikit-learn random-forest