【问题标题】:How to visualize a high dimensional data set that I fitted using MiniBatchKmeans如何可视化我使用 MiniBatchKmeans 拟合的高维数据集
【发布时间】:2019-11-24 12:34:56
【问题描述】:

上下文:所以我有一个包含 32k 图像的数据集,每个图像都是 200x200 并且是黑白的。我将 200x200 的照片按行主要顺序变成了 40k 的单一尺寸。我基本上有一个 32k x 40k 的 numpy 矩阵,第一个值是图像索引,第二个值是 1 或 0,用于该特定图像的像素索引。我在上面运行了 MiniBatkKmeans:

with open('np_array.pickle', 'rb') as handle:
    np_list = pickle.load(handle)

# used a batch system for k mean so my machine doesn't run out of memory
mbk = MiniBatchKMeans(init='k-means++', n_clusters=5,
                      batch_size=200,
                      max_no_improvement=10, verbose=0)
mbk.fit(np_list)

现在我想知道“查看”这个数据集以及所有形成的集群的最佳方式是什么,如果可能的话,每张照片都相互关联。

【问题讨论】:

    标签: python scikit-learn cluster-analysis data-visualization k-means


    【解决方案1】:

    T-SNE 可能有助于可视化聚类算法的输出。它显示了相似的点彼此靠近,而不同的点在低维空间中分开。 This 文章展示了如何在 python 中完成。根据用例,您可能希望使用 PCA 或其他答案中提到的链接中提到的其他算法。

    【讨论】:

      【解决方案2】:

      您可以对高维特征向量执行降维,例如多维缩放 (MDS)。因此,您可以将 32k 特征向量从 40k 减少到 1、2 或 3 维。

      我无法告诉您 MDS 是否是对您的数据执行降维的最佳方法。看看this的博文,里面描述的方法很多。

      最终,您将拥有 32k 个 1-、2- 或 3-d 数据点,这些数据点可以很容易地进行可视化。根据它们的集群对数据点进行颜色编码,如果幸运的话,它们也会在投影中分开。

      【讨论】:

        【解决方案3】:

        不要期望 k-means 在 40000 维像素值上运行良好。您需要提取更好的特征。 无论如何,几乎所有数据很可能都在一个集群中。

        不管怎样,这里忘记散点图。

        但每个中心也是 200x200 像素。因此,您可以轻松地可视化每个集群的“平均”图片。然后还可视化集群中一些最近和最远的样本。

        然后你会发现它没有产生有用的集群。

        【讨论】:

          猜你喜欢
          • 2017-09-14
          • 2016-04-27
          • 1970-01-01
          • 2022-08-04
          • 1970-01-01
          • 2018-07-16
          • 2015-08-07
          • 1970-01-01
          • 2020-03-12
          相关资源
          最近更新 更多