我正在努力实现集群自适应学习,正如paper中所提出的那样。为了实现层次聚类,我使用了以下内容:
X = sp.hstack((title, abstract), format='csr')
Z = ward(X.todense())
如果要创建这样的树状图:
然后我可以使用以下行:
clusters = fcluster(Z, k=2, criterion='maxclust')
获取每个X
所属的类(即图中的2或3)表示为0或1。
如何拆分组,以便从每个X的多个级别获取标签。例如,如何从2,4和9或3中获取每个X所属的类的列表, 5和6。
答案 0 :(得分:0)
使用
fcluster(Z, height, criterion='distance')
其中level是一个整数(0,1,2,...),表示平面群集中允许cophenetic distance。
两个物体之间的共生距离是树状图的高度,其中包含两个物体的两个分支合并为一个分支
这意味着:
我在10个元素上生成了一些连接Z并运行
[fcluster(Z, height, criterion='distance') for height in range(5)]
来说明这一点:
[10,5, 3, 1, 6, 4, 7, 8, 9, 2] <- level 0, everyone separate
[6, 3, 2, 1, 3, 2, 4, 4, 5, 1] <- 6 clusters
[4, 3, 2, 1, 3, 2, 3, 3, 3, 1] <- 4 clusters
[3, 3, 2, 1, 3, 2, 3, 3, 3, 1] <- 3 clusters
[2, 2, 2, 1, 2, 2, 2, 2, 2, 1] <- 2 clusters