首页 > 解决方案 > 精确分数警告导致分数 = 0 sklearn

问题描述

我在 sklearn 中使用precision_score 来评估异常值检测算法的结果。我只训练了一节课,并预测了看不见的数据。所以一个类的标签一直都是0。

我发现了以下内容:

在此处输入图像描述

有两列,真相和预测。(我使用标签编码器来美化数字,在Local Outlier Factor中,它为内点输出1,为异常值输出-1,我使用标签编码器将它们编码为0和1,事实相同)

在此处输入图像描述

但是,算法返回我的准确率是 1,但精度是 0。可以清楚地看到预测与事实完全匹配。我希望这两个参数都得到 1 分。它带有以下警告:

在此处输入图像描述

我应该做什么或我应该阅读的任何链接以缓解此问题。

标签: pythonmachine-learningscikit-learnprecision-recall

解决方案


该文档解释说,只有两个类,它将其视为二进制问题。精度是关于真正的肯定(当答案为 1 时猜测 1)。你没有任何——只有真正的否定(当答案为 0 时猜测为 0)。

如果您对该结果真的不满意,可以使用 zero_division 参数:

precision_score(truth, predicted, zero_division=1)

这样,您将获得所需的 1。


推荐阅读