随机森林分类器:哪个类对应概率

时间:2018-04-04 06:08:50

标签: apache-spark machine-learning pyspark random-forest data-science

我正在使用RandomForestClassifier

中的pyspark.ml.classification

我在二进制类数据集上运行模型并显示概率。

我在col概率中有以下内容:

+-----+----------+---------------------------------------+
|label|prediction|probability                            |
+-----+----------+---------------------------------------+
|0.0  |0.0       |[0.9005918461098429,0.0994081538901571]|
|1.0  |1.0       |[0.6051335859900139,0.3948664140099861]|
+-----+----------+---------------------------------------+

我有一个2个元素的列表,这些元素显然对应于预测类的概率。

我的问题 :概率[0总是对应于预测值,而在spark文档中则不清楚!

2 个答案:

答案 0 :(得分:1)

我将你的问题解释为:在“预测”列下的数组中的第一个元素是否始终对应于“预测类”,您指的是随机森林分类器预测观察应该具有的标签。

如果我有正确的答案,那么答案是肯定的。

两个probability行中数组中的项目可以读作模型告诉您:

['My confidence that the predicted label = the true label', 'My confidence that the label != the true label']

如果预测了多个标签,那么您可以让模型告诉您:

['My confidence that the label I predict = specific label 1', 'My confidence that the label I predict = specific label 2', ...'My confidence that the label I predict = specific label N']

这是由您尝试预测的N个标签编制索引的(这意味着您必须注意标签的结构方式)。

或许看看this answer会有所帮助。你可以这样做:

model = pipeline.fit(trainig_data) predictions = model.transform(test_data) print predictions.show(10)

(使用相关管道和示例中的数据。)

这将显示每个班级的概率。

答案 1 :(得分:0)

我在这里发布了几乎相同的问题,我认为答案可能会帮助您: Scala: how to know which probability correspond to which class?

答案在模型拟合之前。

要拟合模型,我们在目标上使用labelIndexer。该标签索引器通过降低频率将目标转换为索引。

ex:如果在我的目标中我有20%的“ aa”和80%的“ bb”,标签索引器将创建一个列“ label”,其列的值为“ bb”为0,“ aa”为1(因为我的“ bb”比“ aa”更常见)

当我们拟合随机森林时,概率与频率顺序相对应。

在二进制分类中:

  • first proba =该班级是火车中最频繁上课的概率
  • 第二个proba =班级是火车中班次较少的班级的概率