今天给大家展示基于R语言的聚类,在此之前呢,首先谈谈聚类分析,以及常见的聚类模型,说起聚类我们都知道,就是按照一定的相似性度量方式,把接近的一些个体聚在一起。这里主要是相似性度量,不同的数据类型,我们需要用不同的度量方式。除此之外,聚类的思想也很重要,要是按照聚类思想来说,主要有这么几大类,第一大类是基于分割的聚类,比如k-means,以及按照这个思路进行了简单扩展的几个聚类,如k-median等。第二大类呢,就是层次聚类,它其实是把个体之间的关系进行了一个层次展示,具体聚为几类,由人为进行设定。第三大类呢,就是基于密度的聚类,这里不要讲基于密度的聚类和基于概率密度分布的聚类相混淆,这其实是一样的,比如混合模型,就是基于概率分布的聚类,而DBSCAN就是基于密度的聚类,实际上,这里密度是指一指局部密度,而不是概率密度分布。那么第四大类呢,就是基于概率密度分布的聚类,这一类聚类方法主要是假设数据来自某个概率分布,或者是某几个概率分布的组合,进而进行参数估计,确定分布的样子,再反过来看看,样本点属于哪一类。那么第五大类呢,是矩阵的分解(Nonnegative Matrix Factorizations ),这一大类其实和之前的几类明显不同,比如SVD分解,或者其他的分解其实在文本挖掘或者推荐算法里边都属于聚类。最后一大类就是谱聚类了。下面我们用R语言进行一下计算。
#要是没有这个包的话,首先需要安装一下
#install.packages("factoextra")
#载入包
library(factoextra)
# 载入数据
data("USArrests")
# 数据进行标准化
df <- scale(USArrests)
# 查看数据的前五行
head(df, n = 5)
Murder Assault UrbanPop Rape
Alabama 1.24256408 0.7828393 -0.5209066