微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 scipy.cluster.hierarchy monocrit 标准仅平坦特定的树

如何解决使用 scipy.cluster.hierarchy monocrit 标准仅平坦特定的树

我正在使用 scipy.cluster.hierarchy 对某些时间序列进行一些凝聚聚类。

我在另一个答案 here 中发现,使用 fcluster 上的 monocrit 标准,我可以手动选择我想要扩展的树。像这样:

import pandas

data = pandas.DataFrame({
'total_runs': {0: 2.489857755536053,1: 1.2877651950650333,2: 0.8898850111727028,3: 0.77750321282732704,4: 0.72593099987615461,5: 0.70064977003207007,6:0.68217502514600825,7: 0.67963194285399975,8: 0.64238326692987524,9:0.6102581538587678,10: 0.52588765899448564,11: 0.44813665774322564,12: 0.30434031343774476,13: 0.26151929543260161,14: 0.18623657993534984,15: 0.17494230269731209,16: 0.14023670906519603,17: 0.096817318756050832,18:0.085822227670014059,19: 0.042178447746868117,20: -0.073494398270518693,21: -0.13699665903273103,22: -0.13733324345373216,23: -0.31112299949731331,24: -0.42369178918768974,25: -0.54826542322710636,26: -0.56090603814914863,27: -0.63252372328438811,28: -0.68787316140457322,29: -1.1981351436422796,30: -1.944118415387774,31: -2.1899746357945964,32: -2.9077222144449961},'total_salaries': {0: 3.5998991340231234,1: 1.6158435140488829,2: 0.87501176080187315,3: 0.57584734201367749,4: 0.54559862861592978,5: 0.85178295446270169,6: 0.18345463930386757,7: 0.81380836410678736,8: 0.43412670908952178,9: 0.29560433676606418,10: 1.0636736398252848,11: 0.08930130612600648,12: -0.20839133305170349,13: 0.33676911316165403,14: -0.12404710480916628,15: 0.82454221267393346,16: -0.34510456295395986,17: -0.17162157282367937,18: -0.064803261585569982,19: -0.22807757277294818,20: -0.61709008778669083,21: -0.42506873158089231,22: -0.42637946918743924,23: -0.53516500398181921,24: -0.68219830809296633,25: -1.0051418692474947,26: -1.0900316082184143,27: -0.82421065378673986,28: 0.095758053930450004,29: -0.91540963929213015,30: -1.3296449323844519,31: -1.5512503530547552,32: -1.6573856443389405}
})


from scipy.spatial.distance import pdist
from scipy.cluster.hierarchy import linkage,dendrogram

distanceMatrix = pdist(data)
Z = linkage(distanceMatrix,method='complete')
monocrit = np.zeros((Z.shape[0],))
monocrit[[-1,-3]] = 1
fc = fcluster(Z,criterion='monocrit',monocrit=monocrit)

Dendogram example

代码将在顶部分叉和第三个分叉上展开。 然而,过了一段时间后,很难直观地确定分叉的“索引”是什么,我不知道如何以其他方式做到这一点。

例如,在这代码中,如果我想在蓝色圆圈中的树上展开,我需要找到它的索引和它之前的分叉。有没有办法在树状图上绘制这些索引?或者至少知道它们是什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。