Python 使用Sklearn加载本地文件,尝试显示任何图像都会返回emtpy

Python 使用Sklearn加载本地文件,尝试显示任何图像都会返回emtpy,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我正在启动一个ML项目,在我实际制作一个模型之前,我想尝试导入我的图像(我有一个只保存了图像的文件,它们是.png,如果有关系的话),并对它们进行处理和操纵,以便它们适合一个模型。我所做的就是加载文件,然后尝试显示它们,但它什么都不显示。文件路径似乎是正确的,因为我第一次尝试它时它是错误的,并给出了一个很大的错误消息,但现在似乎没有这样做。我怎样才能在加载文件时运行 data[0] 并查看第一个图像(或图像的详细信息)。我的代码如下(我从上述代码的tensorflow指南中导入了许多其他内容,

我正在启动一个ML项目,在我实际制作一个模型之前,我想尝试导入我的图像(我有一个只保存了图像的文件,它们是.png,如果有关系的话),并对它们进行处理和操纵,以便它们适合一个模型。我所做的就是加载文件,然后尝试显示它们,但它什么都不显示。文件路径似乎是正确的,因为我第一次尝试它时它是错误的,并给出了一个很大的错误消息,但现在似乎没有这样做。我怎样才能在加载文件时运行

data[0]
并查看第一个图像(或图像的详细信息)。我的代码如下(我从上述代码的tensorflow指南中导入了许多其他内容,因此我不认为是这样,但如果有必要,我可以在其他导入中进行编辑):

运行这个的输出是:

{'data': [],
 'filenames': array([], dtype=float64),
 'target_names': [],
 'target': array([], dtype=float64),
 'DESCR': None}
如果我尝试data_dir[0],它应该显示第一个图像,错误消息是

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-48-5541d6af8248> in <module>
      2 import sklearn.datasets
      3 data_dir = sklearn.datasets.load_files('/Users/USer/Downloads/C4IMAGES/', shuffle='False')
----> 4 data_dir[0]

KeyError: 0
---------------------------------------------------------------------------
KeyError回溯(最近一次呼叫最后一次)
在里面
2导入sklearn.dataset
3 data_dir=sklearn.dataset.load_文件('/Users/USer/Downloads/C4IMAGES/',shuffle='False')
---->4数据目录[0]
关键错误:0

谢谢你的帮助

实际上,
sklearn.datasets.load_files
的文档说明图像或任何数据文件必须以以下层次结构存在:

容器\u文件夹/
类别1\u文件夹/
file_1.txt file_2.txt…file_42.txt
类别2文件夹/
文件\u 43.txt文件\u 44.txt…

我认为您的图像出现在路径
/Users/USer/Downloads/C4IMAGES/
中。 在这种情况下,您必须创建一个子文件夹,如
category 1
category 2
(如果您的数据未分类,只需创建一个具有任何名称的子文件夹,并将所有图像放在子文件夹中),然后将具有相应类别的图像放在子文件夹中

现在,您可以在函数
load_files
中传递参数
/Users/USer/Downloads/C4IMAGES/
,它应该以二进制格式加载python列表
data_dir['data']
中的数据

然后,您可以将图像从二进制格式转换为numpy数组并显示图像:

import io
import numpy as np    
from PIL import Image

# decode i'th image using: 
img = Image.open(io.BytesIO(data_dir.data[i]))
img = np.asarray(img)

# display i'th image
import matplotlib.pyplot as plt

plt.imshow(img)
plt.show()
参考资料:
1.

2.

函数
sklearn.dataset.load_files
的文档可能会对您有所帮助。还要确保您的路径“/Users/USer/Downloads/C4IMAGES/”位于正确的当前工作目录中,以便访问。好的,这非常有效!最后一个问题:如果我使用从0到len(data_dir)的for循环运行代码,它只运行6个图像,那么对于data_dir中的每个值,需要使用什么值来执行它?注意
data\u dir
是一个包含键值对的字典。如果要处理每个图像,必须迭代
data\u dir['data']
import io
import numpy as np    
from PIL import Image

# decode i'th image using: 
img = Image.open(io.BytesIO(data_dir.data[i]))
img = np.asarray(img)

# display i'th image
import matplotlib.pyplot as plt

plt.imshow(img)
plt.show()