R语言实战 聚类分析

本文介绍了R语言中聚类分析的应用,包括层次聚类和划分聚类。通过层次聚类对营养数据集进行分析,展示如何使用hclust()函数进行聚类,并探讨了确定最佳聚类数目的方法。此外,还讲解了K均值聚类,利用kmeans()函数对葡萄酒数据进行聚类。整个过程涵盖了数据预处理、距离计算、聚类算法选择以及结果解读和验证。
摘要由CSDN通过智能技术生成

16.聚类分析

1.前言

聚类分析是一种数据规约技术,在与揭露一个数据集中观测值的子集,可以把大量的观测值规约为若干个类,而类即是被定义为若干个观测值组成的群组,组内相似度高于组间相似度,即是聚类.最常用的聚类时层次聚类划分聚类

层次聚类即是每个观测值自成一类,这些类再两两合并,直到最后只剩下一类。常用的算法有单联动算法,全联动算法,平均联动、质心和word方法。

划分聚类是制定类的K个个数,然后随机分成K类,再重新形成聚合的类。常用的算法是K均值算法和围绕中心点的划分(PAM)。

对flexclust包中的营养数据集nutrient做层次聚类。

解决的问题为:

(1):基于五种营养标准的27类鱼,禽,肉的相同点与不同点

(2):是否有一种方法将这些食物分为若干个有意义的类

另一个问题是用划分聚类分析葡萄酒的化学成分,用rattle包的wine数据,解决的问题有:

(1):意大利葡萄酒样品可否分为更细的类别

(2):若可以,有多少子组?特征分别是什么?

2.聚类分析的一般步骤

(1):选择合适的变量

(2):缩放数据(将每个变量标准化,变为均值为0,标准差为1的变量)

代码实现为:

df1<-apply(mydata,2,function(x){x-mean(x)}/sd(x)))

df2<-apply(mydata,2,function(x){x-mean(x)})

df3<-apply(mydata,2,function(x){(x-mean(x))/mad(x)})

也可以使用scale()函数来讲变量标准化

(3):寻找异常点(采用outliers包中的函数来筛选和删除单变量的离群点,也可用mvoutlier包中包含了能识别多元变量离群点的函数)

(4):计算距离:

(5):选择聚类算法:(层次聚类适用于小样本,划分聚类适合较大的数据量)

(6):获得一种或多种聚类方法

(7):确定聚类数目

(8):得解决方案

(9):结果可视化

(10):解读类

(11):验证结果

3.计算距离

采用的是欧氏距离

R语言实现

data(nutrient,package="flexclust")

head(nutrient,4)
             energy protein fat calcium iron
BEEF BRAISED    340      20  28       9  2.6
HAMBURGER       245      21  17       9  2.7
BEEF ROAST      420      15  39       7  2.0
BEEF STEAK      375      19  32       9  2.6
d<-dist(nutrient)
as.matrix(d)[1:4,1:4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值