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

2024-04-27 06:44

本文主要是介绍《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)

这篇关于《R语言与农业数据统计分析及建模》学习——聚类分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/939775

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient