对聚类感到困惑

Posted

技术标签:

【中文标题】对聚类感到困惑【英文标题】:Confused with Clustering 【发布时间】:2020-04-19 07:52:13 【问题描述】:

我对数据科学过程中的集群感到非常困惑。 我们知道,在二维空间中对相似点进行分组的过程是基于这个公式:

distance = sqrt( (x2-x1)^2 + (y2-y1)^2 )

但是在向 sklearn 引入输入时,我们只是输入 x 轴值 :( y 轴值发生了什么变化?

例如我们有以下数据库:

index    x     y
------------------
  0      5     8
  1      6     9
  2      7     10

我们将 x 引入 KMeans

from sklearn.cluster import KMeans
kmeans = KMeans(2)
kmeans.fit(df["x"])

没有y值如何计算距离?

【问题讨论】:

好吧,看起来您只是将 x 值传递给它,因此可以在一维中运行聚类算法。 (对其进行搜索。)如果您在 2D 中考虑它,这类似于将所有 y 值设为零。 在 scikit 的示例中,他们为 fit 函数使用了一个 numpy 点数组,而不仅仅是 x 值。 scikit-learn.org/stable/modules/generated/… 这是一个愚蠢的问题。我犯了一个可怕的错误:| 【参考方案1】:

KMeans 聚类可以在任意数量的维度上完成。如您所说,可以使用Euclidean distance 计算距离。可以针对任意数量的维度计算此距离。你传递了一个数组,所以在这种情况下它只是一维,所以公式将简化为:

distance = sqrt((x2-x1)^2)

这实际上只是 (x2-x1) 的绝对值

【讨论】:

以上是关于对聚类感到困惑的主要内容,如果未能解决你的问题,请参考以下文章

9.聚类分析

聚类——Kmeans

matlab聚类分析结果怎么看

机器学习——谱聚类

聚类算法---引言

层次聚类:确定最佳聚类数并统计描述聚类