2017-02-13 12 views
0

背景:私は[0,1]とラベルクラスをデータフレームにランダムフォレスト分類器を実行していますランダムフォレストclasification:「probabilityCol」からクラス確率を推論する方法

。私の目標は、probabilityCol列からラベル '1'の確率を抽出することです。 rawPredictionに等しい長#クラスのspark ml docs当たりとして

probabilityColベクターは、多項分布に

を正規化質問

  1. ベクトル内のターゲットクラスの順序はどうですかprobabilityCol?同じことを判断することはできますか?

  2. 私は与えられたクラス(私の場合は '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")) 
関連する問題