在 python 中使用矩形簇进行聚类
Clustering with rectangular-shaped clusters in python
我有一个二维点的数据库,我想将它们聚类成矩形簇,如下图所示。
我想最小化簇曲面的总和,但又不想有太多簇。
您知道任何相关的 python 实现吗?
所以我找到了解决方案:使用 chebychev 距离的 kmeans 聚类效果很好。
您可以在下面找到一个实现,带有 2d pandas 数据框 df
from scipy.cluster.hierarchy import fclusterdata
n_clusters = 10 #To choose (elbow method, ...)
def chebychev_dist(v1, v2):
return max([abs(v1[i]-v2[i]) for i in range(len(v1))])
cluster_data = fclusterdata(df, t=n_clusters, criterion='maxclust', metric=chebychev_dist)
df['c'] = cluster_data
plt.scatter(df['x'], df['y'], c=df['c'], s=50, cmap='viridis')
我有一个二维点的数据库,我想将它们聚类成矩形簇,如下图所示。
我想最小化簇曲面的总和,但又不想有太多簇。
您知道任何相关的 python 实现吗?
所以我找到了解决方案:使用 chebychev 距离的 kmeans 聚类效果很好。
您可以在下面找到一个实现,带有 2d pandas 数据框 df
from scipy.cluster.hierarchy import fclusterdata
n_clusters = 10 #To choose (elbow method, ...)
def chebychev_dist(v1, v2):
return max([abs(v1[i]-v2[i]) for i in range(len(v1))])
cluster_data = fclusterdata(df, t=n_clusters, criterion='maxclust', metric=chebychev_dist)
df['c'] = cluster_data
plt.scatter(df['x'], df['y'], c=df['c'], s=50, cmap='viridis')