Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyrotch混淆矩阵图_Python_Matplotlib_Pytorch_Confusion Matrix - Fatal编程技术网

Python Pyrotch混淆矩阵图

Python Pyrotch混淆矩阵图,python,matplotlib,pytorch,confusion-matrix,Python,Matplotlib,Pytorch,Confusion Matrix,我遇到了绘制混淆矩阵的问题。上下两行的位置不正确。 当我绘制它时,它看起来是这样的 我认为我的代码没有问题,因为我完全是从YouTube上获取的 def plot\u conflusion\u矩阵(cm、类、, 正常化=错误, title='混乱矩阵', cmap=plt.cm.Blues): """ 此函数用于打印和打印混淆矩阵。 可以通过设置“normalize=True”来应用规范化。 """ 如果正常化: cm=cm.astype('float')/cm.sum(axis=1)[:,n

我遇到了绘制混淆矩阵的问题。上下两行的位置不正确。 当我绘制它时,它看起来是这样的

我认为我的代码没有问题,因为我完全是从YouTube上获取的

def plot\u conflusion\u矩阵(cm、类、,
正常化=错误,
title='混乱矩阵',
cmap=plt.cm.Blues):
"""
此函数用于打印和打印混淆矩阵。
可以通过设置“normalize=True”来应用规范化。
"""
如果正常化:
cm=cm.astype('float')/cm.sum(axis=1)[:,np.newaxis]
打印(“标准化混淆矩阵”)
其他:
打印('混淆矩阵,无规范化')
印刷品(厘米)
plt.imshow(厘米,插值=最近’,cmap=cmap)
标题(标题)
plt.colorbar()
勾号=np.arange(等级)
plt.xticks(刻度线、等级、旋转=45)
plt.yticks(刻度线、等级)
fmt='.2f'如果规格化,则其他'd'
thresh=cm.max()/2。
对于itertools.乘积(范围(cm.形状[0]),范围(cm.形状[1])中的i,j:
plt.text(j,i,格式(cm[i,j],fmt),
水平对齐=“中心”,
color=“白色”如果cm[i,j]>thresh-else“黑色”)
plt.紧_布局()
plt.ylabel(“真实标签”)
plt.xlabel('预测标签')
#图形分析
cm=混淆矩阵(序列集目标、序列预变量argmax(dim=1))
名称=(‘T恤/上衣’、‘裤子’、‘套头衫’、‘连衣裙’、‘外套’、‘凉鞋’、‘衬衫’、‘运动鞋’、‘包’、‘踝靴’)
plt.图(figsize=(10,10))
绘图矩阵(cm,名称)

您可以手动更改y轴的范围

plt.ylim(-0.5,len(名称)-0.5)
出于某种原因,估算轴范围的启发式方法不仅不能使您对正在绘制的点感兴趣,而且对两个轴上的(-0.5;+0.5)周围环境也感兴趣


最低点的y坐标为0,最高点的y坐标为
len(names)-1

谢谢您的解决方案!实际上,将第二个“+”改为“-”对我很有用,即plt.ylim(-0.5,len(names)-0.5)。你也能提供一个理由吗?谢谢你抓住了打字错误。实际上我不知道matplotlib启发式算法是如何工作的,所以它得到了错误的ylim,但是手动重置它是有效的。非常感谢。还有一个问题。你知道如何使我的色条(在骑乘侧)与我的矩阵图对齐(在本例中使其更短)?你可以在函数中使用
分数
参数,并将其设置为类似于0.5的值。你还可以编写
plt.ylim(排序(plt.xlim(),reverse=True)
,它可以与
ax类似地工作