Python 使用KMeans群集在图像上创建群集

Python 使用KMeans群集在图像上创建群集,python,unsupervised-learning,Python,Unsupervised Learning,我有大约50000张属于9个不同类别的图片。(衬衫、T恤、裤子等) 我正在创建一个程序,将新图像分类到一个具有良好准确性的类中。虽然这是一个标准的分类问题,但精确度并不高,因为某些类别之间没有太大差异。示例:牛仔牛仔裤除了颜色和质地可能与正式裤子相似外,其他都很相似 我希望我能利用无监督的学习来解决这个问题。 但是我在将图像传递给K-Means方法时收到了这个错误消息 ValueError: setting an array element with a sequence. 这是我的代码 da

我有大约50000张属于9个不同类别的图片。(衬衫、T恤、裤子等)

我正在创建一个程序,将新图像分类到一个具有良好准确性的类中。虽然这是一个标准的分类问题,但精确度并不高,因为某些类别之间没有太大差异。示例:牛仔牛仔裤除了颜色和质地可能与正式裤子相似外,其他都很相似

我希望我能利用无监督的学习来解决这个问题。 但是我在将图像传递给K-Means方法时收到了这个错误消息

ValueError: setting an array element with a sequence.
这是我的代码

data_path = '../DATASET/category/train/'
ls = []
dic = {}

for classes in sorted(os.listdir(data_path)):
    if classes.startswith('.'): continue
    for image in sorted(os.listdir(os.path.join(data_path,classes))):
        if image.startswith('.'): continue
        img = np.array(plt.imread(os.path.join(data_path,classes,image)))
        ls.append((classes, img))

cls = [i[0] for i in ls]
img = [i[1] for i in ls]

df = pd.DataFrame()

df['img'] = img
df['label'] = cls

X = np.array(df.drop(['label'], 1))

kmeans = KMeans(n_clusters=9) 
kmeans.fit(X)
我做错了什么


提前感谢

我认为您必须从每个图像中提取特征,然后将其插入KMeans。请参见此处的示例: