为了账号安全,请及时绑定邮箱和手机立即绑定

精度分数与指标公式不匹配

精度分数与指标公式不匹配

慕容708150 2021-09-28 20:42:25
如何根据此混淆矩阵手动计算分数?在这种情况下,精度分数应该是多少?tp / (tp + fp) 转换为 99% (102 / 103)。对?但准确率只有98.36%。如果以下分数正确,为什么精度分数不匹配?(准确率正确率为 94.73% (162/171)我从以下地方得到了这个例子:https://towardsdatascience.com/grid-search-for-model-tuning-3319b259367e更新:如果我想获得如图所示的输出,标签顺序应该是什么?
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

问题是,是,TP和FP在你的困惑矩阵交换。


如本二元分类示例中所述,标签解释如下:


真阴性 expected=0, predicted=0


真阳性 expected=1, predicted=1


假阴性 expected=1, predicted=0


假阳性 expected=0, predicted=1


对于您的示例,这将是:


##              TN       TP       FN       FP

expected =  [0]*102 + [1]*60 + [1]*8 + [0]*1

predicted = [0]*102 + [1]*60 + [0]*8 + [1]*1 


print ("precision " + '{:.16f}'.format(precision_score(expected, predicted)))

print ("recall    " + '{:.16f}'.format(recall_score(expected, predicted)))

print ("accuracy  " + '{:.16f}'.format(accuracy_score(expected, predicted)))


precision 0.9836065573770492

recall    0.8823529411764706

accuracy  0.9473684210526315

因此,这些措施符合预期。


该混淆矩阵是记录在这里


根据定义,混淆矩阵等于已知在组中但预测在组中的观察数量。因此,在二元分类中,真负数为 C 0,0,假负数为 C 1,0,真正数为 C 1,1,假正数为 C 0,1。


这导致以下结果:


results = confusion_matrix(expected, predicted)

print('TN ' ,results[0][0])

print('TP ' ,results[1][1])

print('FN ' ,results[1][0])

print('FP ' ,results[0][1])

print(results)



TN  102

TP  60

FN  8

FP  1

[[102   1]

 [  8  60]]

所以测量再次是可以的,只是混淆矩阵中的位置不是通常的TP左上角的位置。


补救方法很简单,只需手动交换TP和TN


(results[0][0],results[1][1]) = (results[1][1],results[0][0])

print(results)


[[ 60   1]

 [  8 102]]


查看完整回答
反对 回复 2021-09-28
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

从你提到的博客中,

//img1.sycdn.imooc.com//61530dee0001295b04650386.jpg

您可以看到真正的正数(正数通常表示为 1)是第四象限。我知道常见的混淆矩阵示例会将真阳性作为第一象限,但在博客中它是相反的。

因此,精度分数计算将是 60/61 = 0.9836。



查看完整回答
反对 回复 2021-09-28
  • 2 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号