Я установил для параметра пороговое значение моей логистической регрессии значение 0,5, прежде чем использовать его для подсчета очков. Теперь я хочу получить точность, напомнить, оценка f1 для этого значения. К сожалению, когда я пытаюсь сделать это, единственными пороговыми значениями, которые я вижу, являются 1.0 и 0.0. Как получить показатели для других, чем 0 и 1.MLlib: вычисление точности и повторного вызова для нескольких пороговых значений
Для примера здесь является о/р пороговых значений:
Порог: 1,0, точность составляет: 0,85
Порог: 0,0, точность is: 0.312641
Я не получаю точность для порога 0,5. Вот соответствующий код.
// Я устанавливаю пороговое значение моей модели логистической регрессии.
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