我正在使用pyspark.ml.classification
RandomForestClassifier
我在二进制类数据集上运行模型并显示概率。
我在Col概率中有以下内容:
+-----+----------+---------------------------------------+
|label|prediction|probability |
+-----+----------+---------------------------------------+
|0.0 |0.0 |[0.9005918461098429,0.0994081538901571]|
|1.0 |1.0 |[0.6051335859900139,0.3948664140099861]|
+-----+----------+---------------------------------------+
我有一个2个元素的列表,显然与预测类的概率相对应。
我的问题:概率[0始终对应于预测值,而在火花文档中,尚不清楚!
我将您的问题解释为问:列"预测"下的数组中的第一个元素始终与"预测类"相对应,您的意思是标签随机森林分类器预测该观察应该具有。
如果我有正确的话,答案是肯定的。
两个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个标签索引(这意味着您必须谨慎对标签的结构化方式谨慎(。
也许有助于查看此答案。您可以做类似的事情:
model = pipeline.fit(trainig_data)
predictions = model.transform(test_data)
print predictions.show(10)
(使用相关管道和示例中的数据。(
这将向您显示每个班级的概率。
我在这里发布了几乎相同的问题,我认为答案可能会对您有所帮助:Scala:如何知道哪种概率与哪个类?
答案是在模型拟合之前。
为了拟合模型,我们在目标上使用了标记器。此标签索引器通过下降频率将目标转换为索引。
ex:如果在我的目标中,我有20%的" AA",而" bb"标签索引的80%将创建一个列"标签",该列为" bb"的值0,而" aa"的值为1(因为我" bb"比" aa"频繁(
当我们安装一个随机森林时,概率对应于频率的顺序。
在二进制分类中:
- 第一个proba =该类是火车集中最常见的类概率
- 第二个概率=概率是该类是火车集中较少频繁的类