使用树状图可视化层次聚类中的最低节点

Visualize lowest nodes in hierarchical clustering with dendrogram

我正在使用 linkage 为包含大约 5000 个实例的数据集生成凝聚层次聚类。我想可视化层次结构中的 'bottom' 合并,即靠近具有最小距离度量的叶子的节点。

不幸的是,dendrogram 可视化更倾向于显示算法中最后合并的 'top' 个节点。默认情况下,它显示前 30 个节点,折叠树的底部。我可以更改 P 值以显示更多节点,但我必须显示所有 5000+ 才能看到最低级别的聚类,此时绘图不再可读。

MCVE

例如从linkage documentation example开始

openExample('stats/CompareClusterAssignmentsToClustersExample')
run CompareClusterAssignmentsToClustersExample
dendrogram(Z, 'Orient', 'Left', 'Labels', species);

生成前 30 个节点可见的树状图。带有数字标签的节点正在折叠树的较低级别。

我可以增加可见节点的数量以包括所有叶子,但会牺牲可读性。

dendrogram(Z, size(Z,1), 'Orient', 'Left', 'Labels', species);

我想要什么

我真正想要的是上面的放大版本,如下例所示,但显示了前 30 个最近的星团。

我试过的

我尝试为函数提供 Z

的前 30 行
dendrogram(Z(1:30), 'Orient', 'Left');

但是当其中一行引用连续 > 30 的集群时,会引发 "Index exceeds matrix dimensions." 错误。

我也尝试过使用树状图 Reorder 属性,但我很难找到一个有效的顺序来对集群进行从最近到最远的排序。

%The Z matrix is in order from closest cluster to furthest, 
% so I can use it to create an ordering
Y = reshape(Z(:, 1:2)', 1, [])
Y = Y(Y<151);
dendrogram(Z, 30, 'Orient', 'Left', 'Labels', species, 'Reorder', Y);

我收到错误

In the requested ordering of the nodes, some data points belonging to the same leaf in the plot are separated by the points belonging to other leaves. Try to use a different ordering.

如果计算整棵树,这样的排序可能是不可能的,因为会有分支交叉,但我希望如果我只看一部分,会有更好的排序不考虑树和更高级别的集群。

问题

如何改进可视化以显示树状图中最低级别的聚类?

嗯...像 top()?

dendrogram(Z, size(Z,1), 'Orient', 'Left', 'Labels', species);
ylim(max(ylim())-[30,0]);

产量