2017-02-13 138 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"))