Apache spark 随机森林分类:如何从“森林分类”推断分类概率;probabilityCol“;

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”总是先出现,

背景:

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

根据,

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

问题

  • 向量概率中目标类的顺序是什么?我们能确定同样的结果吗

  • 如果我想提取一个给定类的可能性(在我的例子中是“1”),那么建议用什么方法提取相同的可能性

  • 任何潜在客户都将不胜感激。

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