Spyder预测标签和真实标签以Mat格式输出(待续)

1.需求

需要将Spyder里面的预测标签和真实标签输出,并保存为Mat格式,以通过Matlab生成混淆矩阵,为什么要用Matlab生成混淆矩阵呢?python不是也是可以的吗?

import pandas as pd
import torch
from sklearn.metrics import confusion_matrix
df = pd.read_csv(r'C:\Users\Victor\Desktop\whd123\utf8.csv',encoding='utf-8')
Pred = []
for num , label in enumerate(df['pred_label']):
    class_label = label.split(':')
    nums = class_label[-1].split(']')
    Pred.append(int(nums[0][-1]))
GT = []
for num , label in enumerate(df['gt_label']):
    class_label = label.split(':')
    nums = class_label[-1].split(']')
    GT.append(int(nums[0][-1]))
print(confusion_matrix(GT, Pred))

生成的效果如下:
在这里插入图片描述自己也搜集了一些Github上绘制使用Python绘制混淆矩阵的代码,其中也有模仿Matlab视觉效果的,但是配色不如Matlab好看,所以自己想将标签数据导出,然后利用Matlab进行混淆矩阵绘制。

实现

利用上面的代码可以将预测标签真实标签从csv文件读出。通过变量查看器可以看出都是list类型。
在这里插入图片描述在这里插入图片描述元素是整型。在这里插入图片描述我们将两列数据并列输出,命令:

merged_list = list(zip(Pred, GT))

生成
在这里插入图片描述也是list结构,元素的数据类型是tuple(元组)。
在这里插入图片描述将该元组数据保存为Mat格式,在变量查看器上方,可以save as 为Mat数据类型,只能保存为两种数据类型,一种是Mat,一种是*.spydata。

  • 用matlab打开Mat数据文件,Matlab已卸载,后面有时间再安装。
  • 使用python生成混淆矩阵,github搜索confusion_matrix。

参考代码
https://pypi.org/project/pycm/ 史上最强机器学习分类评估库,可以根据混淆矩阵自动生成各种指标。

  • 改变图片大小
# -*- coding: utf-8 -*-
"""
Created on Sun May 21 12:10:04 2023

@author: Victor
"""

from matplotlib import pyplot as plt
from pycm import *
plt.rcParams['figure.figsize'] = (12, 8)  # 设置图像大小为宽度为6英寸,高度为4英寸
plt.rcParams['figure.dpi'] = 100  # 设置图像的 DPI 值为100

cm = ConfusionMatrix(actual_vector=GT, predict_vector=Pred)
cm.classes
cm.print_matrix()
#fig = plt.figure(figsize=(1200, 1200), dpi=300)
cm.plot(cmap=plt.cm.Greens, number_label=True, plot_lib="matplotlib")
plt.tight_layout()  #去除多余白边
plt.savefig('confusion_matrix.png')

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013035197/article/details/130790386
今日推荐