如何使用 KMeans 进行距离聚类

How to use KMeans for distance clustering

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

他们没有任何标签

它们看起来如下图所示

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

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

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

是的,即使没有标签也可以使用 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...。选择哪一个总是取决于你的数据。