如何在 k 均值聚类中设置每个聚类的最小观察数?

agh*_*ghd 6 cluster-analysis machine-learning k-means pandas scikit-learn

我正在尝试根据用户的行为对一些产品进行聚类。我最终得到的是具有不同数量观察值的聚类。

我已经检查了 k 均值聚类参数,但无法找到控制每个聚类的最小(或最大)观测值数量的参数。

例如,这里是观察数量如何分布在不同的集群中。

cluster_id   num_observations
0   6
1   4
2   1
3   3
4   29
5   5
Run Code Online (Sandbox Code Playgroud)

如何处理这个问题?

I_A*_*ary 3

对于那些仍在寻找答案的人。我找到了一个很好的模块这个模块可以处理此类问题

在可以选择和的地方使用pip install size-constrained-clusteringpip install git+https://github.com/jingw2/size_constrained_clustering.git并使用MinMaxKMeansMinCostFlowsize_minsize_max

n_samples = 2000
n_clusters = 3
X = np.random.rand(n_samples, 2)
model = minmax.MinMaxKMeansMinCostFlow(n_clusters, size_min=400,   size_max=800)
model.fit(X)
centers = model.cluster_centers_
labels = model.labels_
Run Code Online (Sandbox Code Playgroud)