[英]Scikit-learn RandomForestClassifier output of predict_proba
我有一个数据集,我分成两个用于训练和测试随机森林分类器与scikit学习 。
我有87个班级和344个样本。 的输出predict_proba
是,大部分的时间,一个3维阵列(87, 344, 2)
它实际上是一个list
的87 numpy.ndarray
第(344, 2)
的元素)。
有时候,当我选择不同的样本子集进行训练和测试时,我只得到一个二维数组(87, 344)
(尽管在哪些情况下我无法解决)。
我的两个问题是:
(87, 344, 2)[:,:,1]
,转置它,然后将它与我的基本事实进行比较( roc_auc_score(ground_truth, output_of_predict_proba[:,:,1].T)
本质上。但我不明白它的真正含义。 classifier.predict_proba()
返回类概率。 数组的n
维度将根据您训练的子集中有多少个类而有所不同
您确定用于适合RF的阵列具有正确的形状吗? (n_samples,n_features)用于数据,(n_samples)用于目标类。 在你的情况下你应该得到一个数组Y_pred的形状(n_samples,n_classes)so(344,87),其中行r的项目i是样本X [r,:]的类i的预测概率。 注意sum( Y_pred[r,:] ) = 1
。
但是我想如果你的目标数组Y有形状(n_samples,n_classes),其中每一行都是零,除了一个对应于样本类的一行,那么sklearn将它作为一个多输出预测问题(单独考虑每个类)但我不认为这是你想做的。 在这种情况下,对于每个类和每个样本,您将预测属于该类的概率。
最后,输出确实取决于训练集,因为它取决于类的数量(在训练集中)。 您可以使用属性n_classes
获取它(并且您也可以通过手动设置强制类的数量),并且还可以使用属性classes
获取类的值。 请参阅文档 。
希望能帮助到你 !
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.