聚类分析之R语言篇

聚类分析(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

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

鸢尾花花萼及花瓣的长度和宽度系统聚类图

   结果表明,函数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) # 生成聚类图

生成的图如下:

动态聚类结果

时间: 2024-11-03 11:18:32

聚类分析之R语言篇的相关文章

《R的极客理想——高级开发篇 A》一一2.4 R语言中的遗传算法

2.4 R语言中的遗传算法 问题 如何用R语言进行遗传算法的计算? 引言 人类总是在生活中摸索规律,把规律总结为经验,再把经验传给后人,让后人发现更多的规律,每一次知识的传递都是一次进化的过程,最终形成了人类的智慧.自然界的规律,让人类适者生存地活了下来,聪明的科学家又把生物进化的规律,总结成遗传算法,扩展到了更广的领域中.本节将带你走进遗传算法的世界.2.4.1 遗传算法介绍 遗传算法是一种解决最优化的搜索算法,是进化算法的一种.进化算法最初借鉴了达尔文的进化论和孟德尔的遗传学说,从生物进化的

《R的极客理想——高级开发篇 A》一一1.5 R语言的导数计算

1.5 R语言的导数计算 问题 如何用R语言进行导数计算? 引言 高等数学是每个大学生都要学习的一门数学基础课,同时也可能是考完试后最容易忘记的一门知识.我在学习高数的时候绞尽脑汁,但始终都不知道为何而学,生活和工作基本用不到,就算是在计算机行业和金融行业,能直接用到高数的地方也少之又少,学术和实际应用真是相差太远了. 不过,R语言为我打开了一扇高数应用的大门,R语言不仅能方便地实现高等数学的计算,还可以很容易地把一篇论文中的高数公式应用于产品的实践中.因为R语言我重新学习了高数,让生活中充满数

《R的极客理想——高级开发篇 A》一一1.1 R语言知识体系概览

1.1 R语言知识体系概览 问题 如何高效地学习R语言? 引言 最近遇到很多想转行做数据分析的程序员,他们刚开始学习R语言.很多人以为有了其他语言的编程背景,学习R语言就是一件很简单的事情,因而一味地追求速度,但不求甚解.有人说2周就能掌握R语言,但其实掌握的仅仅是R语言的语法,只能算是入门. R语言的知识体系并非语法这么简单,如果都不了解R的全貌,何谈学好R语言呢?本节将介绍R语言的知识体系结构,并告诉读者如何才能高效地学习R语言.1.1.1 R语言的知识体系结构 R语言是一门统计语言,主要用

一个用R语言进行聚类分析的例子

在网上(http://www.rdatamining.com/ )找到了一个用R语言进行聚类分析的例子, 在整个例子中做了一些中文解释说明. 数据集用的是iris. 第一步:对数据集进行初步统计分析 检查数据的维度 > dim(iris) [1] 150   5 显示数据集中的列名 > names(iris) [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Wi

《R的极客理想—工具篇》—— 1.7 R语言的高质量图形渲染库Cairo

1.7 R语言的高质量图形渲染库Cairo 问题 如何让R语言画出无锯齿的高清图? 引言 R语言不仅在统计分析和数据挖掘领域计算能力强大,它在数据可视化领域也不逊于昂贵的商业软件.当然,R在可视化上强大,其背后离不开各种开源软件包的支持,Cairo就是这样一个用于矢量图形处理的类库.Cairo可以创建高质量的矢量图形(GIF.SVG. PDF.PostScript) 和位图(PNG.JPEG.TIFF),同时支持在后台程序中高质量渲染!本节将介绍Cairo在R语言中的使用. 1.7.1 Cair

《R的极客理想——高级开发篇 A》一一1.2 R语言中的数学计算

1.2 R语言中的数学计算 问题 如何用R语言进行数学计算? 引言 R语言是统计语言,生来就对数学有良好的支持,用R语言做数学的计算题特别方便.如果计算器中能嵌入R语言的计算函数,那么绝对是一种高科技产品.我真的把R语言当成我的计算器了!1.2.1 基本计算 R语言对数学计算有着非常好的支持,本节将完整介绍初等数学中的各种计算操作. 本节的系统环境是: Windows 7 64bit R: 3.1.1 x86_64-w64-mingw32/x64 (64-bit) 用R语言实现四则运算操作,包括

《R的极客理想——高级开发篇 A》一一2.2 PageRank算法R语言实现

2.2 PageRank算法R语言实现 问题 如何用R语言实现PageRank算法? 引言 Google搜索,早已成为我每天必用的工具,我无数次惊叹它搜索结果的准确性.同时,我也在做Google的SEO,推广自己的博客.经过几个月尝试,我的博客PR到2了,外链也有几万个.总结下来,还是感叹PageRank的神奇.笔者认为PageRank是改变互联网的算法!2.2.1 PageRank算法介绍 PageRank是Google专有的算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度.

《R的极客理想——高级开发篇 A》一一第2章 R语言的算法实现

第2章 R语言的算法实现 本章用R语言实现了4个算法案例,包括协同过滤算法.PageRank算法.均线模型算法和遗传算法,希望这些案例可以帮助读者理解R语言在实际业务中的应用.

《R的极客理想——高级开发篇 A》一一第1章 R语言知识体系和数学函数

第1章 R语言知识体系和数学函数 本章为全书开篇,主要介绍了R语言知识体系结构及学习资料.利用R语言实现数学计算和统计计算以及连续型分布函数的可视化,可帮助读者全面理解R语言,并利用R语言快速地处理基础学科的计算问题.