首页 > 生活

聚类分析模型建立

更新时间:2025-05-19 19:57:26 阅读: 评论:0

Clus[db:tag]ering is a broad set of techniques for finding subgroups of observations within a data set. When we cluster observations, we want observations in the same group to be similar and observations in different groups to be dissimilar.

聚类就是要把你的数据集分成不同的亚组,从而达到组间差异最大化,组内差异最小化的过程,今天就给大家写写如何用R语言做聚类分析。先关注,再往下看哦。

数据介绍

今天用到的数据集还是咱们最熟悉的鸢尾花数据集:

data(iris) plot(iris)

聚类之前我们必须要将数据集进行标准化,这么做的目的就是要消除不同的特征存在不同的量纲,数值差异等的影响:

irisScaled<-scale(iris[, -5]) 用iris数据集进行kmeans聚类

数据我们基本处理好了,因为我们本身就知道鸢尾花数据是有三类的,所以我们就可以直接令聚类的结果等于三。

fitK<- kmeans(irisScaled[, -5], 3)fitK

通过上面的代码我们就可以得到聚类的结果,包括了每一类的个案和每一类各个变量的均值,以及组件变异和总变异的比值等等:

之前我们提到过,聚类的目的就是组间变异越大越好,组内变异越小越好,其实很自然的想,聚成的类别越多肯定组间变异肯定就越大,但是类别太多也就没有意义了嘛,所以

问题来了

如何选择最佳数量的类别呢?

我们这个例子中我们本身是知道的应该是3类比较靠谱。

但是对于一个陌生的数据集怎么确定多少类合适呢?

这个时候我们就一个一个试:

## 选择最佳K类别 k <- list() for(i in1:10){ k[[i]]<- kmeans(irisScaled[,1:4], i) } betweenss_totss <- list() for(i in1:10){ betweenss_totss[[i]]<- k[[i]]$betweenss/k[[i]]$totss } plot(1:10, betweenss_totss, type= "b", ylab = "Between SS / Total SS", xlab = "Clusters (k)")

上面的代码就画出了不同类别时组间变异和总变异的比值情况:

此时一个很好的选择类别数量的方法就是看这个图的拐点,比如上面的图从类别2到类别3的时候斜率基本上减小了,从3到4就更小了,说明4个类对于3个类来讲组间变异和总变异的比值增加其实不多,所以我们就有理由选择只聚类为3类。

还可以出图哦:

plot(iris, col = fitK$cluster)

小结

今天给大家介绍了R语言中Kmeans聚类的操作和类别数量的确定方法。之后会给大家写写层次聚类。感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python和R的,加油。

(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)

往期内容:

K-means聚类详解,小白看过来

python非监督机器学习入门:K均值聚类实例操练

R数据分析:鸢尾花数据集的聚类分析实操

本文发布于:2023-06-06 03:16:56,感谢您对本站的认可!

本文链接:http://www.ranqi119.com/ge/85/233612.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:[db:tag]
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26|友情:优美诗词|电脑我帮您|扬州装修|369文学|学编程|软件玩家|水木编程|编程频道