prc曲线 sklearn_如何评估高度不平衡数据的准确性(使用naivebayes模型)?

在处理高度不平衡数据时,传统的准确率和AUC曲线不再适用。应使用PRC曲线、精度、召回率和F1分数来评估模型性能。本文介绍了如何使用sklearn库中的precision_score、recall_score和f1_score函数,并强调了在优化这些指标时的权衡。此外,还提到了精确召回曲线在不同阈值下的重要性。
摘要由CSDN通过智能技术生成

首先,你不能使用传统的准确度或AUC曲线的原因是因为你是不平衡的

假设你有99个好的交易和1个欺诈,你想发现欺诈。在

通过简单地预测好的交易(100个好的交易),你将有99%的准确率。这不可能是好事,因为你错过了欺诈交易。在

要计算不平衡的数据集,应该对给定的非多数类使用精度、召回和f1 score。在

召回是您在整个数据集中正确发现的欺诈数量超过欺诈数量。E、 g.您在算法中发现了12个欺诈,数据集中有100个欺诈,因此您的召回将是:

召回=12/100=>12%/0.12

精度是您正确发现的欺诈数量超过您发现的欺诈数量。E、 g.你的算法说你发现了12个欺诈,但在这12个欺诈中,只有8个是真正的欺诈,所以你的精度将是:

精度=8/12=>66%/0.66

F1得分是前两个测量值之间的调和平均值:

F1=(2*精度*召回)/(精度+召回)

所以这里,F1=(2*0.12*0.66)/(0.12+0.66)=0.20=>20%

20%不是很好。完全。在

总的来说,我们的目标是最大化F1分数,有时是te精度,有时是回忆,这取决于你的需要。在

但这是一个权衡,当你改进一个时,另一个就会降低,反之亦然。在

欲了解更多信息,请查看维基百科:

它们也可以在sklearn(sklearn.metrics)中找到:from sklearn.metrics import precision_score

>>> y_true = [0, 1, 2, 0, 1, 2]

>>> y_pred = [0, 2, 1, 0, 0, 1]

>>> precision_score(y_true, y_pred)

0.22

from sklearn.metrics import recall_score

>>> y_true = [0, 1, 2, 0, 1, 2]

>>> y_pred = [0, 2, 1, 0, 0, 1]

>>> recall_score(y_true, y_pred, average='macro')

0.33

from sklearn.metrics import f1_score

>>> y_true = [0, 1, 2, 0, 1, 2]

>>> y_pred = [0, 2, 1, 0, 0, 1]

>>> f1_score(y_true, y_pred, average='macro')

0.26

另一个要遵循的指标是精确召回曲线:

这是在计算不同阈值下的精确度与召回率。在

^{pr2}$

TU0JL.png

怎么读这个?轻松一点!在

这意味着在0.6召回,你有0.9的精确度(或相反)

在1次回忆中,你有0.6的精确度等等。。在

b8NaB.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值