用于VGG功能的K-means群集无法正常工作

时间:2017-11-06 13:22:42

标签: arrays scikit-learn neural-network cluster-analysis k-means

我有一个大小为37759x4096的多维数组。 37759是特征观测的数量,每个特征的大小为4096.

这些功能是 vgg功能我为37759次提取的图像。我想执行k-means聚类,看看它们是否会在同一个类中进行分组。

代码段:

from sklearn.cluster import KMeans
import numpy as np

features = np.asarray(features) #converting list to features
kmeans = KMeans(n_clusters=17).fit(features)

输出:

 In [26]: kmeans.labels_
Out[26]: array([ 0,  0,  0, ..., 11, 11, 11], dtype=int32)

In [27]: len(kmeans.labels_)
Out[27]: 37759

In [28]: kmeans.cluster_centers_
Out[28]: 
array([[  2.46095985e-01,  -4.32133675e-07,   6.41381502e-01, ...,
          9.16770659e-09,   2.39292532e-03,   9.38249767e-01],
       [  1.18244767e+00,   8.83443374e-03,   8.44059408e-01, ...,
          6.17001206e-09,   7.23063201e-03,   4.57734227e-01],
       [  5.05003333e-01,   2.45869160e-07,   1.07537758e+00, ...,
         -4.24915925e-09,   2.19564766e-01,   6.04652226e-01],
       ..., 
       [  2.72164375e-01,   7.94929452e-03,   8.18695068e-01, ...,
         -3.43425199e-09,   7.62813538e-03,   2.84249210e+00],
       [  1.03947210e+00,   1.03959814e-04,   7.81472027e-01, ...,
          7.42147677e-09,   1.28777415e-01,   8.22515607e-01],
       [  1.55310243e-01,   6.24559261e-02,   7.55328536e-01, ...,
         -3.84170562e-09,   2.09998786e-02,   4.18608427e-01]], dtype=float32)

首先,由于它是一个高维数据,我不确定k-means是否是最好的方法。它只分类了11个集群而不是17集群。 但无论如何,

  1. 我们如何确保它按行(按照样本观察)而不是按列(特征)聚类数组
  2. 相同类的功能堆叠在一起,但我们可以看到在kmeans.cluster_centers_中,群集中心非常不同,从前三个数组推断
  3. 如何可视化此数据?我如何找到独特的阵列?
  4. 您对如何为非常高维度的数据执行聚类有什么想法吗?

1 个答案:

答案 0 :(得分:1)

kmeans中的集群可能会变空,从而消失。

如果发生这种情况,最初的中心选择得很糟糕,结果往往不是“稳定”。如果你尝试不同的初始种子,你可能会得到非常不同的结果。

难以对这些数据进行聚类和可视化,您将找不到一个简单易用的解决方案。