如何使用sklearn进行聚类聚类时基于聚类之间的距离阈值确定聚类数量?

时间:2018-08-20 21:15:28

标签: cluster-analysis distance hierarchical-clustering

使用sklearn.cluster.AgglomerativeClustering中的sklearn,我需要预先指定生成的簇数。相反,我想做的是合并群集,直到群集之间达到某个最大距离,然后停止群集过程。

因此,簇的数量可能会根据数据的结构而变化。我也不在乎生成的簇的数量,也不在乎簇的大小,而只是在乎簇的质心不超过一定距离。

我该如何实现?

2 个答案:

答案 0 :(得分:1)

直接使用scipy代替sklearn。恕我直言,这要好得多。

分层聚类是一个三步过程:

  1. 计算树状图
  2. 可视化和分析
  3. 提取分支

但这不适合sklearn的面向监督学习的API偏好,后者希望所有东西都实现fitpredict API ...

SciPy为您提供功能:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.hierarchy.fcluster.html#scipy.cluster.hierarchy.fcluster

答案 1 :(得分:1)

在scikit-learn的聚集群集中对distance_threshold参数的拉取请求可能很有趣: https://github.com/scikit-learn/scikit-learn/pull/9069

它似乎将在0.22版中合并。

编辑:有关使用scipy使用基于距离的停止准则实现单链接聚类的示例,请参见my answer to my own question