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]]

TA贡献1911条经验 获得超7个赞
从你提到的博客中,
您可以看到真正的正数(正数通常表示为 1)是第四象限。我知道常见的混淆矩阵示例会将真阳性作为第一象限,但在博客中它是相反的。
因此,精度分数计算将是 60/61 = 0.9836。
添加回答
举报