潇湘沐
问题是,是,TP和FP在你的困惑矩阵交换。如本二元分类示例中所述,标签解释如下:真阴性 expected=0, predicted=0真阳性 expected=1, predicted=1假阴性 expected=1, predicted=0假阳性 expected=0, predicted=1对于您的示例,这将是:## TN TP FN FPexpected = [0]*102 + [1]*60 + [1]*8 + [0]*1predicted = [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.9836065573770492recall 0.8823529411764706accuracy 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 102TP 60FN 8FP 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]]