我試圖從使用ML管道和DataFrame API的邏輯模型中提取預測概率。預測概率的輸出是一個列向量,存儲每個類(0,1)的預測概率,如下所示。我想知道如何才能提取1級的概率。謝謝!如何拆分由ML Pileline邏輯迴歸生成的預測概率
概率
「[0.13293408418007766,0.8670659158199223]」
「[0.1335112097146626,0.8664887902853374]」
我試圖從使用ML管道和DataFrame API的邏輯模型中提取預測概率。預測概率的輸出是一個列向量,存儲每個類(0,1)的預測概率,如下所示。我想知道如何才能提取1級的概率。謝謝!如何拆分由ML Pileline邏輯迴歸生成的預測概率
概率
「[0.13293408418007766,0.8670659158199223]」
「[0.1335112097146626,0.8664887902853374]」
UDF像這應該工作:
import org.apache.spark.sql.functions.udf
val getPOne = udf((v: org.apache.spark.mllib.linalg.Vector) => v(1))
model.transform(testDf).select(getPOne($"probability"))
這樣的方式也可以達到目標。
import org.apache.spark.mllib.linalg.Vector
model.transform(dataDF).select("prob").map(row => row.getAs[Vector]("prob").toArray)
那麼你可以得到你想要的東西。
您還可以首先將概率列列入org.apache.spark.mllib.linalg.DenseVector,然後提取元素。
model.transform(testDf).select("probability").map(e=> e.asInstanceOf[DenseVector]).map(e=> e(1))