聚类分析之R语言篇 (Kmeans)

原文地址:http://blog.sciencenet.cn/blog-1114360-735780.html

聚类分析(cluster analysis)是把研究对象(样本或变量)分组成为由类似的对象组成多个类的一种统计方法。聚类结果一般在4-6类,不易太多,或太少。聚类分析目的在于将相似的事物归类,同一类中的个体有较大的相似性,不同类的个体差异性很大。两个个体间(或变量间)的对应程度或联系紧密程度的度量可以用两种方式来测量:1、采用描述个体对(变量对)之间的接近程度的指标,例如“距离”,“距离”越小的个体(变量)越具有相似性;2、采用表示相似程度的指标,例如“相关系数”,“相关系数”越大的个体(变量)越具有相似性。

 

       聚类分析方法包括:系统聚类法、动态聚类法、有序样本聚类法和模糊聚类法等等。本文只介绍较常用的系统聚类法和动态聚类法。


1 系统聚类法

 

以R基础包自带的鸢尾花(Iris)数据进行聚类分析。分析代码如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
###### 代码清单 #######
data(iris); attach(iris)
iris.hc <- hclust( dist(iris[,1:4]))
# plot( iris.hc, hang = -1)
plclust( iris.hc, labels = FALSE, hang = -1)
re <- rect.hclust(iris.hc, k = 3)
iris.id <- cutree(iris.hc, 3)
table(iris.id, Species)
 
###### 运行结果 #######
> table(iris.id,Species)
         Species
iris.id setosa versicolor virginica
        1       50               0             0
        2         0             23            49
        3         0             27             1

聚类分析生成的图形如下:

【转载】聚类分析之R语言篇

   结果表明,函数cuttree()将数据iris分类结果iris.hc编为三组分别以1,2, 3表示,保存在iris.id中。将iris.id与iris中Species作比较发现:1应该是setosa类,2应该是virginica类(因为virginica的个数明显多于versicolor),3是versicolor。


2 动态聚类法

仍以R基础包自带的鸢尾花(Iris)数据进行K-均值聚类分析,分析代码如下:

1
2
3
4
5
6
7
8
9
###### 代码清单 #######
library(fpc)
data(iris)
df<-iris[,c(1:4)]
set.seed(252964) # 设置随机值,为了得到一致结果。
 
(kmeans <- kmeans(na.omit(df), 3)) # 显示K-均值聚类结果
 
plotcluster(na.omit(df), kmeans$cluster) # 生成聚类图

生成的图如下:

【转载】聚类分析之R语言篇


 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值