当前位置:  开发笔记 > 编程语言 > 正文

Spark:回归模型阈值和精度

如何解决《Spark:回归模型阈值和精度》经验,为你挑选了1个好方法。

我有逻辑回归模式,我明确地将阈值设置为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的精度和召回值?



1> nDakota..:

您需要在进行预测之前清除模型阈值.清算阈值使您的预测返回分数而不是分类标签.如果不是,您将只有两个阈值,即标签0.0和1.0.

model.clearThreshold()

来自predictionsAndLabels的元组看起来应该是这样但(0.6753421,1.0)不是(1.0,1.0)

看看https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/mllib/BinaryClassificationMetricsExample.scala

如果输入很大,您可能仍希望设置numBins来控制点数.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有