Apache spark 随机森林分类:如何从“森林分类”推断分类概率;probabilityCol“;
背景: 我正在数据帧上运行一个随机林分类器,标签类为[0,1]。我的目标是从probabilityCol列中提取标签“1”的概率 根据, probabilityCol长度#类的向量等于归一化为多项式分布的rawPrediction 问题:Apache spark 随机森林分类:如何从“森林分类”推断分类概率;probabilityCol“;,apache-spark,random-forest,apache-spark-ml,Apache Spark,Random Forest,Apache Spark Ml,背景: 我正在数据帧上运行一个随机林分类器,标签类为[0,1]。我的目标是从probabilityCol列中提取标签“1”的概率 根据, probabilityCol长度#类的向量等于归一化为多项式分布的rawPrediction 问题: 向量概率中目标类的顺序是什么?我们能确定同样的结果吗 如果我想提取一个给定类的可能性(在我的例子中是“1”),那么建议用什么方法提取相同的可能性 任何潜在客户都将不胜感激。1)订单对应于labelCol(您的目标列名)的数值。在概率向量中,类“0”总是先出现,
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"))
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"))