私はSparkでロジスティック回帰モデルを持っています。
出力ベクトルからlabel = 1の確率を抽出し、areaUnderROCを計算します。Sparkでのロジスティック回帰モデルの面積UnderROCの計算
val assembler = new VectorAssembler()
.setInputCols(Array("A","B","C","D","E"))--for example
.setOutputCol("features")
val data = assembler.transform(logregdata)
val Array(training,test) = data.randomSplit(Array(0.7,0.3),seed=12345)
val training1 = training.select("label", "features")
val test1 = test.select("label", "features")
val lr = new LogisticRegression()
val model = lr.fit(training1)
val results = model.transform(test1)
results.show()
label| features| rawPrediction| probability| prediction|
+-----+--------------------+--------------------+--------------------+----------
0.0|(54,[13,31,34,35,...|[2.44227333947447...|[0.91999457581425...| 0.0|
import org.apache.spark.mllib.evaluation.MulticlassMetrics
val predictionAndLabels =results.select($"probability",$"label").as[(Double,Double)].rdd
val metrics = new MulticlassMetrics(predictionAndLabels)
val auROC= metrics.areaUnderROC()
確率は以下のようになります。[0.9199945758142595,0.0800054241857405]
はどのようにして、ベクターからラベル= 1の確率を抽出し、AUCを計算することができますか?
質問がわかりません。デフォルトでは、areaUnderROCがどのように計算するのでしょうか? – jamborta
そうだと思います。 Pythonでは、同じモデルがAUC = 91%、Spark AUC = 73%を返します。私はそれを手動でテストしたい。どのようにしてベクトルから確率値を抽出することができますか? – Liron