【问题标题】:Centroids are not centered at clusters质心不以簇为中心
【发布时间】:2018-08-19 05:10:51
【问题描述】:

我正在尝试使用以下代码绘制我的 k 均值分析的质心和聚类:

matrix_reduced = TruncatedSVD(n_components = num_k).fit_transform(matrix)

matrix_embedded = TSNE(n_components=2, perplexity=30,verbose=2, n_iter =500).fit_transform(matrix_reduced)

centroids = kmeans.cluster_centers_
centroids_embedded = TSNE(n_components=2).fit_transform(order_centroids)


fig = plt.figure(figsize=(10,10))
ax1 = fig.add_subplot(111)


ax1.scatter(matrix_embedded[:,0], matrix_embedded[:,1],marker='x',c = kmeans.labels_)
ax1.scatter(centroids_embedded[:,0], centroids_embedded[:,1],marker='o',c = 'red')

plt.show()

不幸的是,质心不在不同的集群中心:

问题:有谁知道是什么原因造成的?我不知道出了什么问题。

谢谢!

【问题讨论】:

  • 您是否尝试过运行更多迭代?随机质心可能需要超过 500 次迭代才能稳定。另外,我无法理解您的代码;您正在训练 TSNE,然后从 K-MEANS 绘制质心?这是两件不同的事情;不是吗?

标签: python-3.x machine-learning scikit-learn k-means


【解决方案1】:

一般来说,在创建任何流形时,您需要提供要在其上表示的所有点(因为最终表示通常取决于数据中的所有点)。

在示例中,您正在创建两个不同的流形:

matrix_reduced = TruncatedSVD(n_components = num_k).fit_transform(matrix)

# first manifold
matrix_embedded = TSNE(n_components=2, perplexity=30,verbose=2, n_iter =500).fit_transform(matrix_reduced)

centroids = kmeans.cluster_centers_
# second manifold
centroids_embedded = TSNE(n_components=2).fit_transform(order_centroids)

这意味着创建的表示是独立的(这就是为什么您看不到它们居中的原因 - 实际上,它们位于不同的空间上)。

解决此问题的方法是将matrix_reducedorder_centroids 加入到一个数据集中,并仅应用一次 TSNE。这应该会显示您所期望的结果。

另外,请注意,如果您在原始矩阵(而不是 matrix_reduced)上使用 k-means,那么结果仍然不正确 - 您需要对质心和 k 的数据应用相同的转换- 表示最初看到的。

总而言之(假设您想在集群之前使用TruncatedSVD),它的工作原理如下:

  1. 读取数据集
  2. 应用TruncatedSVD 将整个数据集转换为一个。
  3. 在转换后的数据集上使用 k-means 得到 k 个质心
  4. 获取质心并将它们连接到数据集的末尾(就好像它们是附加示例一样)
  5. TSNE 应用于整个数据集。
  6. (可选)像往常一样绘制前 N-k 个点。
  7. (可选)用不同的颜色绘制最后的 k 个点(您转换后的质心)。

【讨论】:

  • 感谢您的回复!您能否详细说明我应该如何做到这一点?
  • 当然!我已经扩展了我的答案
  • 我似乎也做错了什么。如果我尝试连接这两个列表,我会得到ValueError: operands could not be broadcast together with shapes (2275,10) (10,4895)
  • @cardelling 此外,[intelligentonlinetools.com/blog/2016/06/05/… 似乎像我正在尝试那样做
猜你喜欢
  • 2012-11-03
  • 2012-11-17
  • 2017-10-07
  • 2021-06-13
  • 2021-04-04
  • 2020-11-20
  • 2021-03-03
  • 2019-06-16
  • 2013-09-29
相关资源
最近更新 更多