如何使用 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...。选择哪一个总是取决于你的数据。
我有一个包含 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...。选择哪一个总是取决于你的数据。