sklearn agglomerative中的距离矩阵聚类

时间:2021-02-20 19:39:20

标签: python scikit-learn hierarchical-clustering

我正在尝试用 3,663 个点对数据集进行聚类。我有 (x,y) 坐标和点对点权重可用。由于我想使用权重而不是欧几里得距离,因此感谢 Vivek Kumar 的回答 here,我使用 Python 的 sklearn 实现了 AgglomerativeClustering。我创建了 20 个集群,每个集群中的点数如下:

Num_points_in_cluster = [673,54,111,88,312,464,332,366,141,128,33,86,426,39,45,1,63,105,2,194]

正如所见,一些集群只有 1 或 2 个点。相反,我希望集群中的点数几乎均匀分布。有没有办法在 AgglomarativeClustering 中解决这个问题,或者是否有任何其他方法(最好在 sklearn 世界中)符合标准?我认为,另一种解决方案可能是解决类似 p 中心的问题,但现成的线性求解器的时间性能可能是一个瓶颈,因为我也想要一个快速解决方案。

出于代码检查目的,这是我的代码,其中 TT_np_matrix 是我的 numpy 矩阵类型的权重矩阵,例如 TT_np_matrix = array([[2,3,4],[5,2,3],[4,5,8]])

agg = AgglomerativeClustering(n_clusters=20, affinity='precomputed',
                                  linkage='average')
agg_results = agg.fit_predict(TT_np_matrix) # The solution is an array

0 个答案:

没有答案