简单好用!经典机器学习聚类算法——K-means






简单好用!经典机器学习聚类算法——K-means

小果  生信果  2023-06-25 19:00:16

生信人R语言学习必备

立刻拥有一个Rstudio账号

开启升级模式吧

(56线程,256G内存,个人存储1T)


最近小果看了很多文章,发现了一些高分文章的共有技术点——聚类


于是小果绝对带给大家一个经典聚类算法的代码案例教学,希望让大家都能写出高分文章,也让小云沾沾喜气!


K-Means聚类是一种无监督学习算法,用于将数据点分组成k个簇。该算法将数据点分配到距离它们最近的簇中,其中距离通常是欧氏距离。


然后,通过计算每个簇的质心(簇中所有数据点的平均值),来确定每个簇的中心点。这些步骤反复进行,直到质心不再改变或达到最大迭代次数为止。让我们直接进入主题!上代码!


1、下载所需要的R包

install.packages("factoextra")install.packages("cluster")


2、加载所需R包

library(factoextra)library(cluster)

 

3、示例数据

该数据为R语言内置数据集,包含美国每个州每10万因不同犯罪类型而被捕的人数,以及每个州居住在城市地区的人口百分比(UrbanPop)


4、选择合适的聚类数量

#读取数据df <- USArrests#去除缺失值df <- na.omit(df)#数据归一化df <- scale(df)

(1)利用手肘法确认最佳聚类数量(手肘法:通常我们创建这类图形寻找某个K类对应的平方和值开始弯曲或趋于平缓的肘形。这通常是最理想的聚类数量。)

fviz_nbclust(df,kmeans,method=”wss”)

 

#根据上图可以看出k=4时出现肘性,所以后续实验聚类数量为4


(2)差距统计确认最佳聚类数量


#计算不同k值聚类差距变化情况gap_stat <- clusGap(df , FUN = kmeans , nstart = 25 , K.max = 10 , B = 50)fviz_gap_stat(gap_stat)


#根据上图可以看出k=4时,差距统计最大,与手肘法结果相同。


5、执行kmeans聚类

# 设置随机种子,让结果可以重现set.seed(1)# 调用kmeans聚类算法 k = 4km <- kmeans(df, centers = 4, nstart = 25)# 结果可视化,并保存到本地result<-fviz_cluster(km, data = df)pdf(file = "Kmean.pdf",width=12,height=9)print(result)dev.off()#保留聚类结果到数据集中final_data <- cbind(USArrests, cluster = km$cluster)

 

 


结果显示分类结果为4个簇,分别包含16、13、13和8个州,以四种颜色圈出对应的区域并展示。


以上就是k-means聚类的实验流程,很简单吧,加到文章里又是点睛的一笔,快动动小手试试吧!


(小果新开发的零代码云生信分析工具平台包含超多零代码小工具,上传数据一键出图,感兴趣的小伙伴欢迎来参观哟,网址:http://www.biocloudservice.com/home.html)


扫码加小果

领取生信大礼包

点击“阅读原文”立刻拥有

↓↓↓