|
- from sklearn import metrics
- import numpy as np
-
- def cal_multi(y_true,y_pred):
- """
- :param y_true: 真实类标
- :param y_pred: 预测类标
- :return: FPR、、、、、
- """
- Prcesion = metrics.precision_score(y_true, y_pred, average='macro')
- F1 = metrics.f1_score(y_true, y_pred, average='macro')
- Recall = metrics.recall_score(y_true, y_pred, average='macro')
- ACC = metrics.accuracy_score(y_true, y_pred)
- cnf_matrix = metrics.confusion_matrix(y_true, y_pred)
-
- FP = cnf_matrix.sum(axis=0) - np.diag(cnf_matrix)
- FN = cnf_matrix.sum(axis=1) - np.diag(cnf_matrix)
- TP = np.diag(cnf_matrix)
- TN = cnf_matrix.sum() - (FP + FN + TP)
-
- FP = FP.astype(float)
- FN = FN.astype(float)
- TP = TP.astype(float)
- TN = TN.astype(float)
-
- TNR = TN / (TN + FP)
- TPR = TP / (TP + FN)
- FPR = FP / (FP + TN)
- FNR = FN / (TP + FN)
-
- # TNR.fillna(0)
- # TPR.fillna(0)
- # FPR.fillna(0)
- # FNR.fillna(0)
- #
- # print(TNR)
- # print(TPR)
- # print(FPR)
- # print(FNR)
-
- TPR = np.nanmean(TPR)
- TNR = np.nanmean(TNR)
- FPR = np.nanmean(FPR)
- FNR = np.nanmean(FNR)
-
- TNR = np.nan_to_num(TNR)
- TPR = np.nan_to_num(TPR)
- FPR = np.nan_to_num(FPR)
- FNR = np.nan_to_num(FNR)
- return FPR, FNR, TNR, TPR, ACC, Prcesion, Recall, F1
-
- FPR, FNR, TNR, TPR, ACC, Prcesion, Recall, F1 = cal_multi([1,0,1], [1,0,0])
- print(TPR, FNR, FPR, TNR, ACC, Prcesion, Recall, F1)
|