问题描述
我在 sklearn 中使用 precision_score 来评估异常值检测算法的结果。 我只训练了一个班级,并预测了看不见的数据。所以一类的标签一直都是0。
我发现了以下内容:
有两列,真实和预测。 (我用标签编码器对数字进行美化,在Local Outlier Factor中,它输出1为内点,-1为离群点,我使用标签编码器将它们编码为0和1,真相相同)
但是算法返回我的accuracy是1,precision为0,可以很明显的看到预测的和真实的完全吻合。我希望这两个参数都得到 1s 的分数。它带有以下警告:
我应该怎么做或我应该阅读任何链接来缓解这个问题。
解决方法
文档解释说,只有两个类,它把它当作一个二元问题。精度是关于真阳性(当答案为 1 时猜测为 1)。你没有任何 - 只有真正的否定(当答案为 0 时猜测为 0)。
如果你真的对这个结果不满意,你可以使用 zero_division 参数:
precision_score(truth,predicted,zero_division=1)
那样,你就会得到你想要的 1。