gpt4 book ai didi

python - 混淆矩阵错误: Invalid dimensions for image data

转载 作者:行者123 更新时间:2023-12-01 05:56:17 25 4
gpt4 key购买 nike

我正在使用混淆矩阵来衡量分类器的性能。这个例子对我来说效果很好(its from here),但我一直得到TypeError:图像数据的无效尺寸

from numpy import *
import matplotlib.pyplot as plt
from pylab import *

conf_arr = [[50.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [3.0, 26.0, 0.0, 0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0], [4.0, 1.0, 0.0, 5.0, 0.0, 0.0, 0.0], [3.0, 0.0, 1.0, 0.0, 6.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0], [2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.0]]

norm_conf = []
for i in conf_arr:
a = 0
tmp_arr = []
a = sum(i,0)
for j in i:
tmp_arr.append(float(j)/float(a))
norm_conf.append(tmp_arr)

plt.clf()
fig = plt.figure()
ax = fig.add_subplot(111)
res = ax.imshow(array(norm_conf), cmap=cm.jet, interpolation='nearest')
cb = fig.colorbar(res)
savefig("confmat.png", format="png")

我是 python 和 matplotlib 新手。有什么帮助吗?

Matplot 版本是 1.1.1。这是完整的回溯:

在res = ...之后我得到

TypeError      Traceback (most recent call last)
C:\Python27\lib\site-packages\SimpleCV\Shell\Shell.pyc in <module>()
----> 1 res = ax.imshow(array(norm_conf), cmap=cm.jet, interpolation='nearest')

C:\Python27\lib\site-packages\matplotlib\axes.pyc in imshow(self, X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filter
rad, imlim, resample, url, **kwargs)
6794 filterrad=filterrad, resample=resample, **kwargs)
6795
-> 6796 im.set_data(X)
6797 im.set_alpha(alpha)
6798 self._set_artist_props(im)

C:\Python27\lib\site-packages\matplotlib\image.pyc in set_data(self, A)
409 if (self._A.ndim not in (2, 3) or
410 (self._A.ndim == 3 and self._A.shape[-1] not in (3, 4))):
--> 411 raise TypeError("Invalid dimensions for image data")
412
413 self._imcache =None

TypeError: Invalid dimensions for image data

SimpleCV:105> cb = fig.colorbar(res)

对于打印norm_conf,我现在得到结果:[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],...]]。我纠正了缩进问题。但我的困惑.png 非常扭曲。此外,我应该如何继续标记矩阵中的方 block ?

最佳答案

这对我来说很好用(matplotlib 1.1.1rc)。最初我想让你确认你的 matplotlib 版本并发布整个回溯——我所说的“回溯”是指 TypeError 行之前的几行,它显示了导致错误的原因——这仍然是一个好主意,但我想我明白了什么问题可能是。

如果 norm_conf 未填充(即 norm_conf = []),您会收到以下错误:

Traceback (most recent call last):
File "mdim2.py", line 19, in <module>
res = ax.imshow(array(norm_conf), cmap=cm.jet, interpolation='nearest')
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 6796, in imshow
im.set_data(X)
File "/usr/lib/pymodules/python2.7/matplotlib/image.py", line 411, in set_data
raise TypeError("Invalid dimensions for image data")
TypeError: Invalid dimensions for image data

您的代码看起来可能存在一些缩进问题,这在使用混合制表符和空格时经常发生。因此,我建议 (1) 尝试 python -tt yourprogramname.py 来查看是否存在空格错误,以及 (2) 确保自始至终都使用 4 个空格制表符。

关于python - 混淆矩阵错误: Invalid dimensions for image data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com