我將邏輯迴歸的閾值設置爲0.5,然後將其用於評分。我現在想要獲得精確度,回想一下f1分值。不幸的是,當我嘗試這樣做時,我看到的唯一閾值是1.0和0.0。如何獲得對除0以外和1MLlib:計算多個閾值的精度和調用
例如這裏是O/P的閾值指標:
閾值是:1.0,精確度是:0.85
閾值是:0.0,精密是:0.312641
我沒有得到閾值0.5的精度。這是相關的代碼。
//我在這裏設置Logistic迴歸模型的閾值。
model.setThreshold(0.5)
// Compute the score and generate an RDD with prediction and label values.
val predictionAndLabels = data.map {
case LabeledPoint(label, features) => (model.predict(features), label)
}
//我現在想要計算精度和召回率等指標。由於我已將模型閾值設置爲0.5,因此我希望獲得PR值。
val metrics = new BinaryClassificationMetrics(predictionAndLabels)
val precision = metrics.precisionByThreshold()
precision.foreach {
case (t, p) => {
println(s"Threshold is: $t, Precision is: $p")
if (t == 0.5) {
println(s"Desired: Threshold is: $t, Precision is: $p")
}
}
我剛剛在這裏回答了一個類似的問題http://stackoverflow.com/questions/34216481/spark-regression-model-threshold-and-precision/36063766#36063766 – nDakota