《R语言与农业数据统计分析及建模》学习——聚类分析

        聚类分析时一种分类技术。与回归分析、判别分析被一起成为多元分析的三大方法。根据分类的方法可将聚类分析分为:层次聚类、快速聚类等。

1、层次聚类

        (1)定义每个观测值(行或单元)为一类

        (2)计算每类和其他各类的距离

        (3)把距离最短的两类合并成一类,这样类的个数就减少一个

        (4)重复步骤(2)(3),知道包含所有观测值的类型合并成单个类为止。

2、快速聚类

        (1)选择K个中心点(随机选择K行)

        (2)把每个数据点分配到离它最近的中性点

        (3)重新计算每类中的点到该类中心点距离的平均值

        (4)分配每个数据到它最近的中心点

        (5)重复步骤(3)(4)直到所有观测值不再被分配或达到最大迭代次数(R默认10次)

3、R语言实现

        以flexclust包中的nutrient数据集为例,进行聚类分析。Nutrient数据集内容是27个不同种类的肉的5个成分含量。

(1)载入数据集

# 安装flexclust包
install.packages("flexclust")
# 载入flexclust包
library(flexclust)
# 载入nutrient数据集
data(nutrient)

(2)数据预处理 

        数据标准化:最常用的方法是将每个变量标准化为均值为0、标准差为1的变量,使用scale()函数。

# 展示行名称
row.names(nutrient)
# 将行名改为小写字母,保证命名的一致性
row.names(nutrient)<-tolower(row.names(nutrient))
# 查看数据
head(nutrient)
# 由于不同变量的变化范围不同,量纲不同,标准化数据有利于均衡各变量的影响
nutrient_scaled<-scale(nutrient)
head(nutrient_scaled)

(3)层次聚类

        dist()函数能够用来计算数据框所有行之间的距离

        层次聚类方法可以用hclust()函数来实现:hclust(d,method=),d为dist()函数产生的距离。

# 计算矩阵或数据框中所有行之间的距离,默认欧几里得距离
d<-dist(nutrient_scaled)
# 层次聚类
fit_average<-hclust(d,method="average")
# 可视化
plot(fit_average,hang=-1,main="Average Linkage Clustering")

(4)快速聚类

        快速聚类法,又称为K均值(K-means)法。

        使用kmeans()函数来实现快速聚类:kmeans(d,centers),d为dist()产生的距离矩阵,centers是要提取的聚类数据。

library(factoextra)
# 计算举证距离
d<-dist(nutrient_scaled)
# 以分类为3进行聚类
k_means<-kmeans(d,3)
# 可视化
fviz_cluster(k_means,nutrient_scaled)

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值