import scipy.io
p='D:/debug/predict_array'
r='D:/debug/real_array'
dataP=scipy.io.loadmat(p);# dataP类型为dictionary
dataR=scipy.io.loadmat(r);
predict=dataP['predict_array']#获得其中的矩阵数据
real=dataR['real_array'] #此行往上:将matlab中的矩阵提取到python中
real=real.tolist()#将矩阵转化为列表
predict=predict.tolist()
from itertools import chain
real=list(chain.from_iterable(real))
predict=list(chain.from_iterable(predict))#将二维列表转为一维`import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.metrics import confusion_matrix
def plot_confusion_matrix(confusion):
plt.imshow(confusion,cmap=plt.cm.Blues)
plt.title('Confusion Matrix')
plt.colorbar()
labels = range(1,41)
tick_marks = np.arange(len(labels))
plt.xticks(tick_marks, labels)
plt.yticks(tick_marks, labels)
ax = plt.gca()
#解决坐标重叠问题
for ind, label in enumerate(ax.xaxis.get_ticklabels()):
if ind % 3 == 0: # every 10th label is kept
label.set_visible(True)
else:
label.set_visible(False)
for ind, label in enumerate(ax.yaxis.get_ticklabels()):
if ind % 3 == 0: # every 10th label is kept
label.set_visible(True)
else:
label.set_visible(False)
plt.ylabel('True Label')
plt.xlabel('Predicted Label')
#plt.savefig('confusion_matrix_40class.pdf', format='pdf')
plt.show()
if __name__ == '__main__':
confusion = confusion_matrix(predict, real)#混淆矩阵简单应用
#confusion = np.log10(confusion)
plot_confusion_matrix(confusion)
print(confusion)
%matplotlib inline `
使用python画混淆矩阵(并解决坐标重叠问题)
最新推荐文章于 2025-05-29 21:43:01 发布