千家信息网

非层次聚类k-means怎么使用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"非层次聚类k-means怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!非层次
千家信息网最后更新 2026年11月02日非层次聚类k-means怎么使用

本篇内容介绍了"非层次聚类k-means怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

非层次聚类

非层次聚类(non- hierarchical clustering)是对一组对象进行简单分组的方法,其分类依据是尽量使得组内对象之间比组间对象之间的相似度更高,在分析之前需要预设小组的数目。非层次聚类需要首先有个预设的结构,比如假设有k个类群,那么将所有对象任意分为k组,然后在这个基础上不断进行替换迭代,来达到最优化的分组结果。

k-均值划分

k-均值(k-means)算法是一种迭代求解的线性聚类算法,它需要给定起始的聚类簇数目,根据给定的聚类簇数目随机选取相同数目的对象作为初始聚类中心,根据所有对象与聚类中心的距离来划分聚类簇,直到所有对象划分完毕,然后根据目前归类情况计算目标函数值:

其中N为对象总数,K为给定的聚类簇数目,rik表示当样本xi划为聚类簇k时为1,否则为0,首次聚类uk为初始聚类中心坐标,初次迭代完则选择每个聚类簇坐标的均值作为下一次的聚类中心,这也是k-均值得名的由来。可以看出,这个公式实际上反映的是所有聚类簇的组内方差,组内方差总和越小,划分越理想。因此,k-means不断迭代上面过程,来最小化组内总方差。整个过程就是通过识别对象的高密度区域来建立分类。

下面我们使用相同数据集,给定聚类簇数目为5,比较对象欧氏距离的层次聚类与 k- 均值聚类,如下所示:
#读取数据data=read.table(file="otu_table.txt", header=TRUE, check.names=FALSE)rownames(data)=data[, 1]data=as.matrix(data[, -1])#将每个样品的物种数据进行总和标准化(即求相对丰度)library(vegan)data=decostand(data, MARGIN=2, "total")*100otu=t(data)#层次聚类otu_dist=vegdist(otu, method="euclidean", diag=TRUE, upper=TRUE, p=2)hcl=hclust(otu_dist, method="ward.D")cluster1=cutree(hcl, 5)#k-means聚类,centers为预设聚类簇数目,nstart为迭代次数kms=kmeans(otu, centers=5, nstart=100)cluster2=kms$clustertable(cluster1, cluster2)

结果如下所示:

可以看出两种聚类其结果并不相同,其中只有两组是完全相同的。一般来说,k-means不适合含有很多0值的原始数据聚类。由于k-means只能对原始数据进行聚类,要想使用其他距离(bray-curtis等),只有将原始数据计算距离矩阵进行PCoA分析,然后根据提取的主坐标进行k-means聚类。

kmeans 函数一次只能返回一个预设组数的聚类结果,但一般情况下我们并不知道多少组数聚类结果更好。 vegan 包的 cascadeKM 可以一次运行不同预设组数的聚类分析,使用方法如下:
#筛选最佳聚类簇数目multikms=cascadeKM(otu, inf.gr=2, sup.gr=22, iter=100, criterion="ssi")plot(multikms, sortg=TRUE)

上例中聚类簇数目从2到22,sortg=TRUE表示根据聚类结果重排样品的顺序。"ssi"为简单结构指数(simplestructrre index),用于评价聚类结果的好坏,一般聚类簇数目越多,结构越复杂,则ssi指数越高。也可以选择"calinski"也即Calinski-Harabasz指数,该指数一般随着聚类簇数目增加而降低,其值越大表明聚类结果越好。分析结果如下所示:

我们所使用数据中一共66个样品,其中左边彩图展示了每个对象(也即样品)在不同分类水平下的小组归属,每一行不同颜色的数目即分类簇的数目。右图为每一个分类水平下终止分类(也即迭代结束)时的统计量,这里以ssi值表示。由此我们可以看出,与层次聚类不同的是,非层次聚类不同聚类水平均是独立运行的。

我们一般希望获得足够大的聚类簇数目以及足够小的 ssi 值,由结果可以看出 k=5 时聚类结果比较理想。

"非层次聚类k-means怎么使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

数目 对象 结果 层次 数据 分类 迭代 不同 均值 相同 指数 样品 分析 原始 坐标 情况 方差 结构 过程 不断 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 新华互联网科技 深圳九邦互联网科技有限公司 互联网科技公司华为 美国互联网保险保险科技 互联网科技垄断 互联网最新的科技有限公司 奇士达互联网科技 赫美联合互联网科技 互联网科技公司有哪些 深圳卡尔迅互联网科技有限公司怎么样 成都仁贤领冠互联网科技有限公司 厦门比较好的科技互联网公司 链环科技传统企业怎么转型互联网 互联网高科技行业有哪些企业 上海万顺科技互联网有限公司招聘 长沙渺峰互联网科技有限公司 北京军民互联网科技公司 山东蛋芒互联网科技有限公司 互联网对科技影响 科技互联网项目 今日互联网科技 互联网 科技服务平台 山东吉时兔互联网科技有限公司 青岛中康互联网医疗科技有限公司 互联网科技商业 哈尔滨屹滨互联网科技有限公司 互联网在线教育科技创业 互联网时代高科技布局 互联网科技大会大佬
0