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

news/2024/10/8 13:40:22/

一、判别分析

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

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

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


http://www.ppmy.cn/news/1441419.html

相关文章

2002-2022年各省总抚养比、少年儿童抚养比、老年人口抚养比数据(人口抽样调查)

2002-2022年各省总抚养比、少年儿童抚养比、老年人口抚养比数据&#xff08;人口抽样调查&#xff09; 1、时间&#xff1a;2002-2022年 2、指标&#xff1a;总抚养比 3、来源&#xff1a;国家统计局、统计年鉴 4、范围&#xff1a;31省&#xff0c; 5、缺失情况&#xff…

C++高级特性:C/C++内存结构模型(十一)

1、内存结构 C/C语言一只被认为是一种底层语言&#xff0c;与其他语言不一样&#xff0c;对内存结构理解是C/C程序员从入门到入土的开端。 其他编程语言对内存管理是透明的&#xff0c;程序员无序关心可以认为是一个黑盒&#xff1b;而C/C不一样理解好内存结构有利于编写健壮性…

Django中的事务

1 开启全局的事务 DATABASES {default: {ENGINE: django.db.backends.mysql, # 使用mysql数据库NAME: tracerbackend, # 要连接的数据库USER: root, # 链接数据库的用于名PASSWORD: 123456, # 链接数据库的用于名HOST: 192.168.1.200, # mysql服务监听的ipPORT: 3306, …

线程、线程组、线程池、锁、事务、分布式

1.线程 Thread类 &#xff0c;可以继承他&#xff0c;复写run方法&#xff0c;然后new一个对象&#xff0c;调用start方法启动。 2.runnable接口&#xff0c;他单独把run方法定义出来了&#xff0c;可以自己实现一个runnable接口&#xff0c;然后new一个runnable对象给到threa…

Python --- 新手小白自己动手安装Anaconda+Jupyter Notebook全记录(Windows平台)

新手小白自己动手安装AnacondaJupyter Notebook全记录 这两天在家学Pythonmathine learning&#xff0c;在我刚刚入手python的时候&#xff0c;我写了一篇新手的入手文章&#xff0c;是基于Vs code编译器的入手指南&#xff0c;里面包括如何安装python&#xff0c;以及如何在Vs…

PDF 正确指定页码挂载书签后,书签页码对不上

这个问题与我的另一篇中方法一样 如何让一个大几千页的打开巨慢的 PDF 秒开-CSDN博客 https://blog.csdn.net/u013669912/article/details/138166922 另做一篇原因是一篇文章附带一个与该文章主题不相关的问题时&#xff0c;不利于被遇到该问题的人快速搜索发现以解决其遇到的…

QT客户端开发的技术难点

QT是一种功能强大且灵活的跨平台应用程序开发框架&#xff0c;但也存在一些技术难点&#xff0c;需要开发者仔细考虑和克服。以下是一些常见的QT开发技术难点。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 跨平台兼容性 QT框架…

使用frp实现内网穿透教程

文章目录 简介frp 是什么&#xff1f;为什么选择 frp&#xff1f; 概念工作原理代理类型 内网穿透教程服务端安装和配置本地Windows&#xff08;客户端&#xff09;安装和配置本地Linux虚拟机&#xff08;客户端&#xff09;安装和配置使用 systemd 管理服务端注意事项 简介 f…