《R语言与农业数据统计分析及建模》学习——判别分析和主成分分析

本文主要是介绍《R语言与农业数据统计分析及建模》学习——判别分析和主成分分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、判别分析

       判别分析又称“分辨法”。使用已知分类的数据训练建立分类规则,然后把这样的规则应用到未知分类的样本中去分类,以识别位置样本所属的分类。

        判别分析多用于遥感影像的地物分类;农林害虫预报;气象数据中的天气预报等等。

1、载入数据集

        使用R语言自带的iris数据集,进行Fisher线性判别。用MASS包调用相关函数。

# 安装并载入所需MASS包
install.packages("MASS")
library(MASS)# 载入iris数据集
data(iris)
head(iris)

2、输入判别公式

        先验概率(prior probability of groups),为不同的类别分配不同的概率估计,用于确定新观测数据属于哪个类别。

        各组均值向量(group means),即该组各维度的数据均值作为该组的均值向量。

        第一、第二线性判别函数系数(Coefficient of linear discriminants)

        两个判别式对区分各总体贡献的大小(proportion of trace)

# 输入公式,Species作为判别项,其他作为自变量
ld<-lda(Species~.,data=iris)
# 查看建立的公式
print(ld)

3、判别分析结果比较

# 对原始数据进行回判分类
p_iris<-predict(ld)
new_class<-p_iris$class
# 查看结果
print(cbind(iris$Species,new_class,p_iris$x))
# 列表比较
table(iris$Species,p_iris$class)

二、主成分分析

        主成分分析的一半目的是变量的降维和主成分的解释。

        主成分分析通过正交变换将一组核能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫做主成分。

        在变换中,保持变量的总方差不变,同时,使第一主成分具有最大方差,第二主成分具有次大方差,依次类推。

1、载入数据集

        数据集采用R语言自带iris数据集。还需要两个包:

        FactoMineR包:包含主成分分析所需的PCA函数。

        factoextra包:进行主成分的可视化

library('FactoMineR')
library('factoextra')
# 载入数据集
data(iris)
# 查看数据
head(iris,3)

2、主成分分析

        使用FactoMineR包中的PCA()函数。

PCA(X,sacle.unit=T,graph=T)

其中,X表示不包含分类变量的主成分分析数据集;

        scale.unit=T代表是分析前对数据进行标准化处理;

        graph=F代表不显示图像。

3、提取特征值

        使用factoextra包中的get_eigenvalue()函数,提取主成分的特征值/方差贡献率。

# 主成分分析
# iris[,-5],为删除了分类变量的iris数据集
iris_pca<-PCA(iris[,-5],scale.unit=T,graph=F)
# 提取特征值
eig_val<-get_eigenvalue(iris_pca)
print(eig_val)

 

4、结果可视化

        碎石图绘制函数:factoextra包中的fviz_eig()函数

        个体在主成分空间的显示:factoextra包中的fviz_pac_ind()函数

# 可视化
# 碎石图
screen_plot<-fviz_eig(iris_pca)
screen_plot
# 个体PCA可视化
ind_plot<-fviz_pca_ind(iris_pca,geom.ind = "point", # 点图col.ind=iris$Species,palette=c("#00AFBB","#E7B800","#FC4E07"), #颜色设置addEllipses = TRUE, # 添加椭圆legend.title="Groups" # 添加标题
)
ind_plot

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



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

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +