如何从sklearn AgglomerativeClustering遍历树?

 谷智精源 发布于 2022-12-06 10:58
  • php
  • 我有一个numpy文本文件数组:https://github.com/alvations/anythingyouwant/blob/master/WN_food.matrix

    它是术语和彼此之间的距离矩阵,我的术语列表如下:http://pastebin.com/2xGt7Xjh

    我使用以下代码生成分层集群:

    import numpy as np
    from sklearn.cluster import AgglomerativeClustering
    
    matrix = np.loadtxt('WN_food.matrix')
    n_clusters = 518
    model = AgglomerativeClustering(n_clusters=n_clusters,
                                    linkage="average", affinity="cosine")
    model.fit(matrix)
    

    为了获得每个学期的聚类,我本可以做到:

    for term, clusterid in enumerate(model.labels_):
        print term, clusterid
    

    但是如何遍历AgglomerativeClustering输出的树?

    是否有可能将其转换为scipy树状图(http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.cluster.hierarchy.dendrogram.html)?之后我如何遍历树状图?

    1 个回答
    • 我已经为sklearn.cluster.ward_tree回答了类似的问题: 你如何从sklearn.cluster.ward_tree可视化病房树?

      AgglomerativeClustering以相同的方式在children_属性中输出树.这是对AgglomerativeClustering的病房树问题中代码的改编.它以树的每个节点的形式(node_id,left_child,right_child)输出树的结构.

      import numpy as np
      from sklearn.cluster import AgglomerativeClustering
      import itertools
      
      X = np.concatenate([np.random.randn(3, 10), np.random.randn(2, 10) + 100])
      model = AgglomerativeClustering(linkage="average", affinity="cosine")
      model.fit(X)
      
      ii = itertools.count(X.shape[0])
      [{'node_id': next(ii), 'left': x[0], 'right':x[1]} for x in model.children_]
      

      /sf/ask/17360801/

      2022-12-11 02:04 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有