聚类分析模型建立(教你如何做聚类分析)

Clustering 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数据分析:鸢尾花数据集的聚类分析实操

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至QQ邮箱:3628405936@qq.com 举报,本站将立刻删除。
(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注