背景
我在dataFrame上运行随机林分类器,标签类为[0,1]。我的目标是提取标签' 1'的概率。来自 probabilityCol 列。
probabilityCol 长度#等级的向量等于rawPrediction归一化为多项分布
问题:
向量 probabilityCol 中目标类的排序是什么?我们甚至可以确定相同的吗?
如果我想提取给定课程的可能性(在我的情况下是' 1'),提取相同课程的推荐方法是什么。
任何线索都将受到赞赏。
答案 0 :(得分:0)
1)排序对应于labelCol(您的目标列名称)的数值。在概率向量中,类'0'总是先行,然后变为类'1'等等.RandomForest只对数值类值起作用,因此它们总是像索引一样。
2)假设您的数据框预测,列概率。要获得第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"))