使用sklearn.cluster.AgglomerativeClustering
中的sklearn
,我需要预先指定生成的簇数。相反,我想做的是合并群集,直到群集之间达到某个最大距离,然后停止群集过程。
因此,簇的数量可能会根据数据的结构而变化。我也不在乎生成的簇的数量,也不在乎簇的大小,而只是在乎簇的质心不超过一定距离。
我该如何实现?
答案 0 :(得分:1)
直接使用scipy代替sklearn。恕我直言,这要好得多。
分层聚类是一个三步过程:
但这不适合sklearn的面向监督学习的API偏好,后者希望所有东西都实现fit
,predict
API ...
SciPy为您提供功能:
答案 1 :(得分:1)
在scikit-learn的聚集群集中对distance_threshold
参数的拉取请求可能很有趣:
https://github.com/scikit-learn/scikit-learn/pull/9069
它似乎将在0.22版中合并。
编辑:有关使用scipy使用基于距离的停止准则实现单链接聚类的示例,请参见my answer to my own question。