聚类分析
(1)系统聚类
系统聚类是将每个样品分成若干类的方法,其基本思想是:先将各个样品各看成一类,然后规定类与类之间的距离,选择距离最小的一对合并成新的一类,计算新类与其他类之间的距离,再将距离最近的两类合并,这样每次减少一类,直至所有的样品合为一类为止。
·聚类方法:
最短距离法和最长距离法、重心法和类平均法、离差平方和法(Ward方法)
·分类数的确定(德穆曼准则):
(1)任何类都必须在邻近各类中是突出的,即各类重心之间距离必须大
(2)各类所包含的元素不应过多
(3)分类的数目应该符合使用目的
(4)若采用几种不同的聚类方法处理,则在各自的聚类图上应发现相同的类
·流程图:
(2)模糊聚类
模糊聚类分析是一种采用模糊数学语言对事物按一定的要求进行描述和分类的数学方法。模糊聚类分析一般是指根据研究对象本身的属性来构造模糊矩阵,并在此基础上根据一定的隶属度来确定聚类关系,使得各个类之间的数据差别应尽可能大,类内之间的数据差别应尽可能小。
(3)K-均值法(快速聚类)
k均值聚类算法(k-means)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。
·步骤
(1)先把样品粗略分成K个初始类
(2)进行修改,之歌分派样品到其最近均值的类中。重新计算接受新样品的类和失去样品的类的均值
(3)重复(2)步,直到无各类元素进出
(5)流程图
(6)R语言 案例实现
library(rattle)
library(factoextra)
data(wine,package=“rattle”) #采集数据
head(wine)
df=scale(wine[-1]) #删除第一列后标准化处理
d=dist(df) #计算矩阵距离
#系统聚类
fit.ward=hclust(d,method=“ward.D”) # ward表示离差平方和法
plot(fit.ward) #聚类图
clusters=cutree(fit.ward,k=3) #把树状图分成三类
table(clusters) #系统聚类规模
aggregate(df,by=list(cluster=clusters),median) #median为中间距离法,by后要构造list
rect.hclust(fit.ward,k=3) #在树状图中叠加分三类的结果
#K值聚类
set.seed(1234) #设定随机数
fit.km=kmeans(df,3,nstart=20)
fit.kmKaTeX parse error: Expected 'EOF', got '#' at position 7: size #̲k值聚类规模
fit.kmcenters
fit.km$cluster
plot(df,col=fit.kmcluster,pch=fit.kmcluster)
fviz_cluster(fit.km, data = df)
|
请发表评论