【发布时间】: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