层次聚类只有合并邻近的集群

7视图(30天)
我想用一个会凝聚的层次聚类树(病房的算法)在Matlab,即内建函数。但我希望,只有邻近的集群可以合并。我怎样才能实现呢?或者有一个外部工具箱可以做呢?

答案(3)

图像分析
图像分析 2015年5月10日
这听起来像是从算法的性质,实证集群不会成为下一个对集群进行合并。你为什么认为它可能合并一个遥远,non-neighbor集群到目标集群时不同的直接邻居集群更近呢?
2的评论
图像分析
图像分析 2015年5月10日
听起来像他们不知何故集群第一个基于灰度或纹理,这可能让地区无论他们出现在图像,因为标准与位置无关,但只有与强度。然后他们想进一步合并项目只有他们空间接近。 听起来你有一个纸 告诉你如何去做,所以我建议你遵循它的方向。

登录置评。


阿方索Nieto-Castanon
阿方索Nieto-Castanon 2015年5月10日
我建议请求代码的作者(蒂里翁et al。如果是这样,你可以从这里开始 https://github.com/bthirion/frontiers_2014 )。
层次聚类可以表示为一个迭代的过程,开始与每个数据点在一个单独的集群,在每一步你找到最好哪两个集群合并(在所有可能对集群)之间基于一些标准(在这种情况下,试图保持相似的fMRI信号在每个集群尽可能高)。他们的修改只是限制搜索只spatially-neighboring集群,而不是搜索所有可能的集群对,这样产生的集群总是空间连续的。
2的评论
图像分析
图像分析 2015年5月13日
我可以做一个尝试翻译Python代码MATLAB代码。每个人都有代码翻译从一种语言到另一个。最终你会找到答案。

登录置评。


JUNTAO徐
JUNTAO徐 2019年8月29日
编辑:JUNTAO徐 2019年8月29日
我有一个天真的想法意识到这structuredh层次聚类。
最重要的是,让我提出一个快速演示的主意
函数structured_hac ()
T = 1: 0.2: 10 *π;
X = exp (- T / 20)。* cos (T);
Y = exp (- T / 20)。* sin (T);
图(1);
散射(X, Y,“填充”);
C = (X, Y) ';
ANS1 = clusterdata (C,“链接”,“病房”,“Savememory”,“上”,“Maxclust”4);
图(2);
散射(X, Y, [], ANS1“填充”);
日元= squareform (pdist (C));%产生距离
[m, n] =大小(Y1);
Y2 = 10000 * 1 (m, n);%的核心思想是这reassginment
我= 1:1:m
j = 1:1: n
如果我= =我
Y2 (i, j) = Y1 (i, j);
elseifj = =我+ 1
Y2 (i, j) = Y1 (i, j);
elseif张j = =
Y2 (i, j) = Y1 (i, j);
结束
结束
结束
Z1 =连杆(日元“病房”);
ANS2 =集群(Z1,“Maxclust”4);
图(3);
散射(X, Y, [], ANS2“填充”);
图(4);
系统树图(Z1);
Z2 =连杆(Y2,“病房”);
ANS3 =集群(Z2,“Maxclust”4);
图(5);
散射(X, Y, [], ANS3“填充”);
图(6);
系统树图(Z2);
结束
的核心思想是首先使用pdist()函数来生成数据集C的所有数据之间的距离,这产量我们变量y₁演示代码。
然后我们指定这些值在日元不应对ponit一双neiber的距离数据,为一个很大的值,这样在聚类阶段,culster算法不会不neiber集群数据集。这reassginment产量我们Y2。
这个天真的想法,我们可以得到一个很好的结果。
过份原始工厂重新分配的结果。
03. jpg
我们的结果:
02. jpg
从分层树我们也可以看到,我们使用最小的修改来实现我们的目标——合并只有邻近的集群

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!