上一篇文章给大家介绍了利用 R语言的 hclust()进行聚类分析的步骤,已经很简单了,但是依然有不少小伙伴来问 “老师,还有更简单的方法吗,最好是一条命令那种”,为了满足的大家的需求,小编也是查了很多资料,终于给大家找到了一个满意的答案,今天就和小编一起来看看 R语言怎么用一行命令来实现聚类分析吧。

加载数据

data(iris)str(iris)




R语言 go富集分析图 r语言聚类分析图_距离计算

输出



iris$Species

使用agens()聚类

cluster 包提供了两种层次聚类的方法,一种是 bottom-up 自底而上,采用先将数据样本先各自看成一类,然后通过合并法的聚类过程,最终形成一个大类,包含全部样本,agnes()函数完成这个功能,这个称为合并层次聚类。而 diana()则采用相反的方法,即 top-down 自顶而下先将所有样本看成一类,然后通过分裂类的过程将样品最终分为各自样本类,这个称为分裂法

agens()函数的形式

agnes(x, diss = TRUE|FALSE, metric = "euclidean", stand = FALSE|TRUE,       method = "average", par.method, keep.diss = n < 100, keep.data = !diss)

其中的 diss指定 x对象是否是不相似矩阵对象,与 hclust()函数不同,agnes() 既可以使用原始数据也可以采用距离矩阵stand 是是否要对数据进行标准化,可以采用的类间距离计算方法“average”平均法“UPGMA”“single”最短距离法“complete”最大距离法“ward”离差法“weighted”权重平均距离法“flexible”弹性法。 keep.diss和 keep.data指定在结果中是否保留不相似矩阵和数据,保留这些结果需要更多的内存。

一条命令实现聚类分析

直接对原始数据进行聚类,样本间的不相似度度量使用欧式距离 euclidean类间距离计算使用最短距离法 single

直接对原始数据进行聚类,样本间的相似度度量使用欧式距离 euclidean,类间距离计算使用最短距离法 single。ag




R语言 go富集分析图 r语言聚类分析图_pvrect r语言 聚类_02

输出



  • 查看部分聚类过程
data.frame(ag$merge,ag$height)[50:55,]




R语言 go富集分析图 r语言聚类分析图_聚类分析_03

输出



  • 聚类结果可视化
plot(ag, ask = FALSE, which.plots = NULL)




R语言 go富集分析图 r语言聚类分析图_聚类分析_04

输出




R语言 go富集分析图 r语言聚类分析图_聚类_05

输出



  • 输出样本所属的类别

假设聚为3 类,输出每个样本所属的类别。

cutree(ag, k=3)




R语言 go富集分析图 r语言聚类分析图_聚类_06

输出



注:图中开头的[1]里的数字表示,接下来的样本是第几个样本。