2017-02-13 137 views
0

背景:随机森林clasification:如何从“probabilityCol”推断类概率

我对数据帧为[0,1]上运行的随机森林分类与标签类。我的目标是从probabilityCol列中提取标签“1”的概率。

作为每spark ml docs

probabilityCol长度#类等于rawPrediction的向量归一化到一个多项式分布

问题

  1. 向量中的目标类的排序是probabilityCol?我们甚至可以确定一样吗?我想提取一个给定类的可能性(在我的情况下是'1'),推荐的方法是什么?

任何线索将不胜感激。

回答

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"))