【问题标题】:Clustering of Images and Dimensional Reduction using PCA in Python在 Python 中使用 PCA 对图像进行聚类和降维
【发布时间】:2017-08-28 21:01:59
【问题描述】:

我正在做 K 表示图像数据集上的聚类。首先,我加载了图像并存储在 numpy 数组中。共有 24 张图片。我创建的 img_array 的形状是 (24, 300, 400, 3)。为了运行 K 方法,我将其转换为二维数组,现在形状为 (24,360000)。聚类后​​我得到了一个adjusted_rand_score 0.57。

我不知道,如何使用 PCA 并降低图像的尺寸,然后比较聚类精度。

现在,我需要使用 PCA 将维度减少到 400 维、200 维、50 维、5 维,最后是 2 维。

    path = "C://Users/shivam/Desktop/data//"
    os.chdir(path)
    for f in os.listdir('.'):
        if f.endswith('.jpg'):
        img = Image.open(f)
        data = np.asarray( img, dtype='uint8' )
        img_array.append(data)
   df = pd.DataFrame({'image_arrays':img_array})
   df['id'] = range(1, len(df) + 1)

   label_list = ['nature','nature','nature','nature','nature','nature','sunset','sunset','sunset','sunset','sunset','sunset','sunset','sunset','sunset','water','water','water','water','water','water','water','water','water']

   df.head()

   img_arr_2D = img_arr.reshape(24,120000) 

   import numpy as np
   import matplotlib.pyplot as plt
   from matplotlib import style
   style.use("ggplot")
   from sklearn.cluster import KMeans

   X = img_array_2D
   kmeans = KMeans(n_clusters=3, max_iter= 100)
   kmeans.fit(X)

   centroid = kmeans.cluster_centers_
   labels = kmeans.labels_

   colors = ["g.","r.","c."]

   for i in range(len(X)):
       print ("coordinate:" , X[i], "label:", labels[i])
       plt.plot(X[i][0],X[i][1],colors[labels[i]],markersize=10)
       plt.show()

   classes = [0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2]
   labels = kmeans.labels_

   from sklearn.metrics.cluster import adjusted_rand_score
   adjusted_rand_score(classes, labels)

【问题讨论】:

  • 有人在吗,谁能帮忙?
  • 当然可以,但是您的问题表明缺乏努力。 文档中有大量在图像上使用 PCA 的示例。在您提出问题后 105 分钟还寻求一些额外评论的帮助并不是我所说的好风格。没有答案可能是有原因的。并不是,这太难了!
  • 你好,但我试图将所有内容都放在问题中,我正在搜索文档。但无法得到任何东西。请帮忙?

标签: python machine-learning cluster-analysis dimensionality-reduction


【解决方案1】:

即使使用 PCA,结果也不会有太大改善(请注意,PCA 与变量数量的关系很差,您需要数百万张图像才能在此处获得可靠的结果)。

图像的像素表示不如输入。你想要一些东西,例如相同的图片倒置有相同的表示。

所以你需要进行特征提取

您可以制作颜色直方图、视觉词袋,但要获得最先进的技术,您需要进入深度学习。

【讨论】:

    猜你喜欢
    • 2013-09-30
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2020-10-27
    • 2017-08-31
    • 2019-07-21
    • 2018-08-27
    相关资源
    最近更新 更多