关于pyspark中RandomForestClassifier概率值对应类别的技术咨询
PySpark RandomForestClassifier概率数组的类别对应关系
嘿,这个问题其实很关键,搞清楚概率对应关系才能正确解读模型输出~
在PySpark的RandomForestClassifier(以及大部分pyspark.ml模块里的分类器)中,probability列的数组元素顺序,是和模型训练时自动排序后的类别标签一一对应的,默认排序规则是按标签的数值升序排列。
结合你给出的二分类数据集例子:
- 你的标签是
0.0和1.0,升序排序后得到的标签顺序是[0.0, 1.0] - 所以probability数组的第一个元素对应类别0.0的预测概率,第二个元素对应类别1.0的预测概率
拿你给出的样本数据举例:
+-----+----------+---------------------------------------+
|label|prediction|probability |
+-----+----------+---------------------------------------+
|0.0 |0.0 |[0.9005918461098429,0.0994081538901571]|
|1.0 |1.0 |[0.6051335859900139,0.3948664140099861]|
第一行的概率数组[0.90059..., 0.09940...],意思是模型预测该样本属于类别0.0的概率约90%,属于类别1.0的概率约10%,这和prediction=0.0的结果完全匹配;第二行的概率数组则表示样本属于0.0的概率约60.5%,属于1.0的概率约39.5%。
如果你想100%确认具体的标签顺序,可以直接查看训练好的模型的labels属性,比如:
# 假设你的训练好的随机森林模型对象名为rf_model print(rf_model.labels)
这个输出的数组顺序,就和probability列的元素顺序完全对应。
内容的提问来源于stack exchange,提问作者moufkir
相关产品推荐
相关产品推荐

