我有逻辑回归模式,其中我显式地将阈值设置为0.5。
model.setThreshold(0.5)我训练模型,然后我想获得基本的统计数据--精度、召回率等。
这是我在评估模型时所做的:
val metrics = new BinaryClassificationMetrics(predictionAndLabels)
val precision = metrics.precisionByThreshold
precision.foreach { case (t, p) =>
println(s"Threshold is: $t, Precision is: $p")
}我得到的结果只有0.0和1.0作为阈值,0.5被完全忽略。
下面是上面循环的输出:
阈值为: 1.0,精度为: 0.8571428571428571
阈值为: 0.0,精度为: 0.3005181347150259
当我调用metrics.thresholds()时,它也只返回两个值: 0.0和1.0。
如何获取阈值为0.5的查准率和召回值?
发布于 2016-03-17 22:39:43
在进行预测之前,您需要清除模型阈值。清除阈值使您的预测返回一个分数,而不是分类标签。否则,您将只有两个阈值,即您的标签0.0和1.0。
model.clearThreshold()来自predictionsAndLabels的元组应该类似于(0.6753421,1.0),而不是(1.0,1.0)
如果输入很大,您可能仍然希望设置numBins来控制点的数量。
https://stackoverflow.com/questions/34216481
复制相似问题