首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >集合聚类的文档或代码示例

集合聚类的文档或代码示例
EN

Stack Overflow用户
提问于 2021-03-22 15:20:43
回答 1查看 28关注 0票数 1

在我的本科研究项目中,我正在寻找一个聚集聚类的R代码。基本上,我需要知道在R中的hclust方法中发生了什么,我到处都找过了,但是找不到合适的方法来组合两个距离最小的数据点。在生成不同矩阵的第一阶段之后,我不得不开发一个不同的矩阵(实际上,我已经生成了第一个不同的矩阵)。我没有指定R,如果有人能用任何语言给我一个解决方案,我会感激地接受这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-23 00:27:11

在R中使用hclust时,所需的所有信息都存储在函数的输出中。您只需保存输出并读取所需内容即可。但是,输出可能不是完全透明的,所以我将介绍一个非常小的例子,您可以将这些想法应用到您的数据中。

为了得到一个小的例子,我将从内置的虹膜数据中随机抽取8个点,然后在这8个点上使用hclust。由于我没有指定任何不同的内容,所以“hclust`”使用默认的完整链接集群。

代码语言:javascript
运行
复制
set.seed(2021)
S1 = sort(sample(150, 8))
Tree1 = hclust(dist(iris[S1,1:4]))
plot(Tree1, hang=-1)

正如我所说的,hclust的输出包含您所需的内容。它存储在Tree1中。实际上,它所包含的比我认为你想要的更多。通过运行str(Tree1),您可以看到其中的所有内容,但现在,我将集中讨论该结构的两个部分:Tree1$mergeTree1$height

代码语言:javascript
运行
复制
Tree1$merge
     [,1] [,2]
[1,]   -4   -8
[2,]   -5    1
[3,]   -3   -7
[4,]   -1   -2
[5,]   -6    2
[6,]    3    4
[7,]    5    6

这些是什么意思?首先,Tree1$merge告诉我们集群合并的顺序。第一行[1,] -4 -8告诉我们,第一步是将点4(标记为103)和8(标记为140)合并成簇1 (点得到负数,由它们形成的簇得到正数)。下一行[2,] -5 1告诉我们,第二步将点5(带有标签105)与我们从第4点和第8点形成的集群1合并,其余的行显示其余的合并步骤。例如,最后一步合并集群5和6。

好的,现在我们看到了集群被合并的顺序,但是距离是多少?为什么要下这个命令?我们是从Tree1$height得到的,当然,它来自于原始的距离矩阵。让我们也来看看距离矩阵。

代码语言:javascript
运行
复制
Tree1$height
[1] 0.5477226 0.6164414 0.7745967 0.9848858 1.0148892 1.8000000 3.2511536

dist(iris[S1,1:4])
           69        70       102       103       105       110       135
70  0.9848858                                                            
102 0.9643651 1.4696938                                                  
103 1.9416488 2.7386128 1.5684387                                        
105 1.7058722 2.4248711 1.0770330 0.6164414                              
110 2.5534291 3.2511536 2.0322401 0.7549834 1.0148892                    
135 1.1789826 1.8000000 0.7745967 1.3190906 1.0000000 1.9157244          
140 1.5716234 2.3021729 1.2247449 0.5477226 0.5830952 0.9949874 1.1916375

注意,Tree1$height中的第一个条目是0.5477226,即第四点(103个)和第8个点(140个)之间的距离。这是距离矩阵中的最小距离,这就是为什么首先合并这些点的原因。回想下一次合并是第5 (105)点与簇1。当我们使用完整链接,该距离如何计算?从距离矩阵可以看出,4点到5点的距离是0.6164414,8点到5点的距离是0.5830952,所以5点到1点的距离是0.6164414 (完整链路的最大值)。看看距离矩阵的其余部分,我们可以看到,没有任何两个点的距离小于这一点,所以第二次合并是点5,簇1的距离为0.6164414。Tree1$merge的第三行告诉我们,在第三步,我们合并点3和7(标签102和135)。Tree1$height的第三个条目告诉我们,这次合并的距离是0.7745967。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67254161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档