在 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')