我读过许多论文,其中作者谈到了“无监督的层次聚集聚类”。它们似乎意味着该算法根据一个超参数来确定集群的数量:
我们将簇内的异质性度量定义为所有对jaccard距离的平均值,并且在每一步中,如果所产生的簇的异质性低于指定的阈值,则将两个簇合并。
当我搜索聚合集群的python实现时,我总是想出sklearn,它需要指定集群的数量。在大多数例子中,这是通过绘制树状图来计算的,然后根据看上去是在盯着图表的星系团来确定--例如,https://towardsdatascience.com/machine-learning-algorithms-part-12-hierarchical-agglomerative-clustering-example-in-python-1e18e0075019,我认为仅仅从图表中就不可能确定3或5是最优的(基于最大垂直距离)。我相信这是Wards方法,但我不确定这与“合并异构性低于阈值的集群”和
这在sklearn中是可能的,还是有另一个python实现可以做到这一点呢?我觉得至少应该有一种方法来编程处理树状图,而不是绘制它?
发布于 2021-02-13 23:19:16
我想我已经想出了如何实现我正在研究的论文中描述的algorithm。我怀疑他们使用了scipy.cluster.hierarchy。
总之,我的过程是:
scipy.cluster.hierarchy.linkage计算连接scipy.cluster.hierarchy.fcluster生成平面簇最后一步是应用上述阈值的地方。关于如何使用fcluster生成基于heterogeneity的集群,我仍然有一个问题。
我发现令人困惑的是,关于如何确定sklearn.cluster.AgglomerativeClustering的集群数量的教程很多,它们使用scipy.cluster.hierarchy.linkage,然后用scipy.cluster.hierarchy.dendrogram绘制树状图,然后用它们直观地识别需要多少集群。
https://datascience.stackexchange.com/questions/89318
复制相似问题