如何遍历 sklearn AgglomerativeClustering 生成的树?

我有一个 numpy 文本文件数组,位于:https://github.com/alvations/anythingyouwant/blob/master/WN_food.matrix

这是一个术语之间的距离矩阵,我的术语列表如下:http://pastebin.com/2xGt7Xjh

我使用以下代码生成层次聚类:

import numpy as npfrom sklearn.cluster import AgglomerativeClusteringmatrix = np.loadtxt('WN_food.matrix')n_clusters = 518model = 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)?然后如何遍历这个树状图?


回答:

我已经回答了一个关于 sklearn.cluster.ward_tree 的类似问题:如何可视化 sklearn.cluster.ward_tree 生成的 ward 树?

AgglomerativeClustering 以相同的方式输出树,保存在 children_ 属性中。以下是针对 AgglomerativeClustering 调整的 ward 树问题的代码。它以 (node_id, left_child, right_child) 的形式输出树的结构,每个节点一个。

import numpy as npfrom sklearn.cluster import AgglomerativeClusteringimport itertoolsX = 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_]

https://stackoverflow.com/a/26152118

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注