2017-05-04 376 views
-1

我有這樣的代碼。如何從python矩陣中找到TN,TP,FN,FP?

import numpy as np 
confusion_matrix = [[6,0,0,0,0], 
        [0,62,1,1,0], 
        [0,0,30,0,0], 
        [0,1,0,41,0], 
        [0,0,0,0,2]] 
confusion_matrix=np.matrix(confusion_matrix) 
FP = confusion_matrix.sum(axis=0) - np.diag(confusion_matrix) 
FN = confusion_matrix.sum(axis=1) - np.diag(confusion_matrix) 
TP = np.diag(confusion_matrix) 
TN = confusion_matrix.values.sum() - (FP + FN + TP) 

# Sensitivity, hit rate, recall, or true positive rate 
TPR = TP/(TP+FN) 
# Specificity or true negative rate 
TNR = TN/(TN+FP) 
# Precision or positive predictive value 
PPV = TP/(TP+FP) 
# Negative predictive value 
NPV = TN/(TN+FN) 
# Fall out or false positive rate 
FPR = FP/(FP+TN) 
# False negative rate 
FNR = FN/(TP+FN) 
# False discovery rate 
FDR = FP/(TP+FP) 

# Overall accuracy 
ACC = (TP+TN)/(TP+FP+FN+TN) 

但它給出了這樣的錯誤。

AttributeError: 'matrix' object has no attribute 'values' How to find all TP,FP,TN,FN for given matrix.

+1

你不想說'confusion_matrix.sum()',而不是'confusion_matrix.values.sum()'(開頭的行'TN = ')? – Nuageux

+0

另外,不會推薦使用'np.matrix' - 改用'np.array' – Eric

回答

0

改變這個confusion_matrix.values.sum() - (FP + FN + TP)

confusion_matrix.sum() - (FP + FN + TP)