随机森林分类:如何从“probabilityCol”推断类别概率
Posted
技术标签:
【中文标题】随机森林分类:如何从“probabilityCol”推断类别概率【英文标题】:Randomforest clasification : How to infer class probability from "probabilityCol" 【发布时间】:2017-07-02 01:25:40 【问题描述】:背景:
我在标签类为 [0,1] 的数据帧上运行随机森林分类器。我的目标是从 probabilityCol 列中提取标签“1”的概率。
根据spark ml docs,
probabilityCol 长度为 # 类的向量等于 rawPrediction 归一化为多项分布
问题:
向量 probabilityCol 中目标类的顺序是什么?我们甚至可以确定相同的吗?
如果我想提取给定类的可能性(在我的例子中是“1”),那么推荐的提取方法是什么。
任何线索将不胜感激。
【问题讨论】:
【参考方案1】:1) 排序对应于 labelCol 的数值(您的目标列名)。在概率向量中,“0”类总是首先出现,然后是“1”类等。RandomForest 仅适用于数字类值,因此它们总是像索引一样。
2) 假设您的数据框 prediction 包含 probability 列。要获得第 1 类的概率,您可以使用 UDF 函数:
import org.apache.spark.ml.linalg.DenseVector
import org.apache.spark.sql.functions.udf
val classNum = 1
def getTop(x : DenseVector) : Double =
x.toArray(classNum)
val udfGetTop = udf(getTop _)
val predictionTop = prediction
.select("labelIndexed", "probability")
.withColumn("label1Prob", udfGetTop($"probability"))
【讨论】:
以上是关于随机森林分类:如何从“probabilityCol”推断类别概率的主要内容,如果未能解决你的问题,请参考以下文章