如何使用 KMeans 进行距离聚类

Posted

技术标签:

【中文标题】如何使用 KMeans 进行距离聚类【英文标题】:How to use KMeans for distance clustering 【发布时间】:2021-11-27 04:19:05 【问题描述】:

我有一个带有 X 和 Y 轴值的数据框

他们没有任何标签

如下图所示

X-COORDINATE Y-COORDINATE
12 34
99 42
90 27
49 64

是否可以使用 KMeans 对数据进行聚类?

如何获取标签并将数据绘制在每个集群的图表上?

【问题讨论】:

你试过 sklearn 的 KMeans 吗? scikit-learn.org/stable/modules/generated/… 你听起来很困惑;正如您所说,您如何从没有标签的数据中获取标签?另外,KMeans(和一般的聚类)不需要(或考虑)标签。 【参考方案1】:

是的,即使没有标签,您也可以使用 k-means,因为 k-means 是一种无监督方法,但是...

首先,您需要缩放您的数据,因为 k-means 是一种距离算法,它使用数据点之间的距离来确定它们的相似性。更多关于 here 的信息。 我发现 this tutorial 对集群非常有用,您可以从它开始。它还描述了如何首先使用轮廓图或肘部图绘制数据以定义完美的聚类数

看起来应该是这样的:

from sklearn.cluster import KMeans

kmeans_model = KMeans(n_clusters=n_clusters) # you can get n_clusters from silhouette/elbow plot or just try out different numbers

kmeans_model.fit(your_dataframe)

labels = kmeans_model.predict(your_dataframe)

print(labels)

K-Means 并不总是表现完美,如果您想获得更好的结果,您还可以尝试其他算法,例如 DBSCAN, HDBSCAN, Agglomerative clustering...。这始终取决于您应该选择哪一个数据。

【讨论】:

以上是关于如何使用 KMeans 进行距离聚类的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中为 kmeans 指定距离度量?

opencv:如何使用kmeans()按角度聚类

如何控制聚类距离或限制聚类选择?

Lab空间中不同距离函数的Kmeans聚类

利用Kmeans聚类分析两类问题

如何使用 Sklearn Kmeans 对稀疏数据进行聚类