n
u
m
p
y
实现混淆矩阵(
p
y
t
h
o
n
)
numpy实现混淆矩阵(python)
numpy实现混淆矩阵(python)
假设有A、B、C、D、E五个类别
一 确定输出和标签
import numpy as np
y_true = ["A"]*20 + ["B"]*20 + ["C"]*20 + ["D"]*20 + ["E"]*20
len(y_true)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5cbc8be40166b86b5d09e760512a24c5.png)
y_true
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/268ebcab8f02e7f38f8bec40e0ab23fe.png)
y_pred =["D"]*5+ ["A"]*30 + ["B"]*15 + ["C"]*25 + ["D"]*20 + ["E"]*5
len(y_pred)
y_pred
二 初始化混淆矩阵
classes_num = 5
confusion_matrix = np.zeros((classes_num,classes_num))
confusion_matrix
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/825a5b741c9579c18415fccd44ec1e2c.png)
三 计算混淆矩阵思路:同时遍历所有pred和label,发现属于混淆矩阵哪一个位置,哪一个位置就+1
step1:将pred和label进行一对一组合
list_pred_label = []
for i in range(len(y_pred)):
list_pred_label.append([y_pred[i],y_true[i]])
print(list_pred_label)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a5decd43945d8334c4f4b37aa7f499d9.png)
Step2:遍历list_pred_label,将其中的类别转为混淆矩阵索引(A:0,B:1,C:2,D:3,E:4)
for i in list_pred_label:
if i[0] == "A":
i[0] = 0
elif i[0] == "B":
i[0] = 1
elif i[0] == "C":
i[0] = 2
elif i[0] == "D":
i[0] = 3
elif i[0] == "E":
i[0] = 4
if i[1] == "A":
i[1] = 0
elif i[1] == "B":
i[1] = 1
elif i[1] == "C":
i[1] = 2
elif i[1] == "D":
i[1] = 3
elif i[1] == "E":
i[1] = 4
print(list_pred_label)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/15c4652282f970c13171a2aa562d9938.png)
step3:对混淆矩阵进行赋值
for i in list_pred_label:
confusion_matrix[i[0],i[1]] += 1
print(confusion_matrix)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/122ad05d7fe7b6d621e22d837793fa77.png)