实验篇——根据群体经纬度提取环境数据(数据降维)

news2024/11/26 17:31:03

实验篇——根据群体经纬度提取环境数据(数据降维)

文章目录

  • 前言
  • 一、先导
  • 二、R语言实现
    • 2.1. 分气温、降水、光照、风速、蒸汽压划分数据集
    • 2.2. 对每个数据集降维处理
      • 2.2.1. 气温
      • 2.2.2. 降水
      • 2.2.2. 光照
      • 2.2.3. 风速
      • 2.2.4. 蒸汽压
      • 2.2.5.定义一个函数(额外)
    • 2.3. 整理保存
  • 总结


前言

前一篇文章中对环境数据进行了提取,提取了原始的数据后,根据所需要求对原始数据进行预处理,本章将介绍一下对得到的环境数据进行降维处理。


一、先导

从这几个环境文件来看,可大致分为气温、降水、太阳辐射、风速、蒸汽压这几个方面。

在这里插入图片描述

在biozong文件中,bio1–bio11都是与温度相关的环境因子,bio12–bio19则是与降水有关在这里插入图片描述

二、R语言实现

2.1. 分气温、降水、光照、风速、蒸汽压划分数据集

#分气温、降水、光照、风速、蒸汽压划分数据集

#导入文件:
library(dplyr)
longla<- read.table("D:/Cja_location.txt",header = T) #读取经纬度文件
bio <- read.table("D:/huanjing_chuli/biozong.csv",sep = ",",header = TRUE) #
tmin <- read.table("D:/huanjing_chuli/tminzong.csv",sep = ",",header = TRUE) #
tmax <- read.table("D:/huanjing_chuli/tmaxzong.csv",sep = ",",header = TRUE) #
tavg <- read.table("D:/huanjing_chuli/tavgzong.csv",sep = ",",header = TRUE) #
elev <- read.table("D:/huanjing_chuli/elevzong.csv",sep = ",",header = TRUE)
prec <- read.table("D:/huanjing_chuli/preczong.csv",sep = ",",header = TRUE) #
srad <- read.table("D:/huanjing_chuli/sradzong.csv",sep = ",",header = TRUE)
wind <- read.table("D:/huanjing_chuli/windzong.csv",sep = ",",header = TRUE)
vapr <- read.table("D:/huanjing_chuli/vaprzong.csv",sep = ",",header = TRUE)



#整合为气温数据集
bio1_11 <- dplyr::select(bio,bio1:bio11)  #因为bio1到bio11是有关气温的数据
data_tmp <- cbind(bio1_11,tmax,tmin,tavg)
#ncol(data_tmp)
data_tmp <- dplyr::mutate_all(data_tmp,as.numeric)  #将所有数据转换为数值形式
rownames(data_tmp) <- longla$Population
#head(data_tmp)




#整合为降水数据(同理)
bio12_19 <- dplyr::select(bio,bio12:bio19)  #因为bio12到bio19是有关降水的数据
data_prec <- cbind(bio12_19,prec)
#ncol(data_prec)
data_prec <- dplyr::mutate_all(data_prec,as.numeric)
rownames(data_prec) <- longla$Population
#head(data_prec)




#光照数据集:
data_srad <- dplyr::mutate_all(srad,as.numeric)
rownames(data_srad) <- longla$Population
#head(data_srad)




#风速数据集:
data_wind <- dplyr::mutate_all(wind,as.numeric)
rownames(data_wind) <- longla$Population
#head(data_srad)



# 蒸汽压数据集
data_vapr <- dplyr::mutate_all(vapr,as.numeric)
rownames(data_vapr) <- longla$Population
#head(data_vapr)

2.2. 对每个数据集降维处理

2.2.1. 气温

以气温类别为例

library("FactoMineR") 
library("factoextra") 
#对每个类别进行降维处理,挑选出解释度前99%的因子


#tmp:
bio.pca <- PCA(X = data_tmp,scale.unit = TRUE, ncp = 20, graph = TRUE)  #scale.unit = TRUE设置了在进行PCA时自动进行归一化处理
biotem_pre <- bio.pca$ind$coord %>% as.data.frame
#head(biotem_pre)
write.table(biotem_pre,file = 'tmp_PCA.xls',sep="\t",col.names = TRUE,row.names = FALSE)
eig.val<- get_eigenvalue(bio.pca)
eig.val  #查看方差贡献度
toplvector <- biotem_pre[,1:4]
colnames(toplvector) <- c("tmp1",'tmp2','tmp3','tmp4')

在这里插入图片描述

因为我们只挑选出解释度前99%的因子,所以我们只选取前四个因子

在这里插入图片描述

2.2.2. 降水

与上同理

#prec

bio.pca <- PCA(X = data_prec ,scale.unit = TRUE, ncp = 20, graph = TRUE)
biotem_pre <- bio.pca$ind$coord %>% as.data.frame
#head(biotem_pre)
write.table(biotem_pre,file = 'prec_PCA.xls',sep="\t",col.names = TRUE,row.names = FALSE)
eig.val<- get_eigenvalue(bio.pca)
eig.val

toplvector <- cbind(toplvector,biotem_pre[,1:7])
colnames(toplvector)[5:11] <- c("prec1",'prec2','prec3','prec4','prec5','prec6',"prec7")

2.2.2. 光照

#srad
bio.pca <- PCA(X = data_srad ,scale.unit = TRUE, ncp = 20, graph = TRUE)
biotem_pre <- bio.pca$ind$coord %>% as.data.frame
#head(biotem_pre)
write.table(biotem_pre,file = 'srad_PCA.xls',sep="\t",col.names = TRUE,row.names = FALSE)
eig.val<- get_eigenvalue(bio.pca)
eig.val

toplvector <- cbind(toplvector,biotem_pre[,1:6])
colnames(toplvector)[12:17] <- c("srad1",'srad2','srad3','srad4','srad5',"srad6")

2.2.3. 风速



#wind

bio.pca <- PCA(X = data_wind ,scale.unit = TRUE, ncp = 20, graph = TRUE)
biotem_pre <- bio.pca$ind$coord %>% as.data.frame
#head(biotem_pre)
write.table(biotem_pre,file = 'wind_PCA.xls',sep="\t",col.names = TRUE,row.names = FALSE)
eig.val<- get_eigenvalue(bio.pca)
eig.val

toplvector <- cbind(toplvector,biotem_pre[,1:5])
colnames(toplvector)[18:22] <- c("wind1",'wind2','wind3','wind4','wind5')

2.2.4. 蒸汽压

#vapr
bio.pca <- PCA(X = data_vapr ,scale.unit = TRUE, ncp = 20, graph = TRUE)
biotem_pre <- bio.pca$ind$coord %>% as.data.frame
#head(biotem_pre)
write.table(biotem_pre,file = 'vapr_PCA.xls',sep="\t",col.names = TRUE,row.names = FALSE)
eig.val<- get_eigenvalue(bio.pca)
eig.val

toplvector <- cbind(toplvector,biotem_pre[,1:3])
colnames(toplvector)[23:25] <- c("vapr1",'vapr2','vapr3')

2.2.5.定义一个函数(额外)

huangjing_PCA <- function(huangjing_wj,Name){
  bio.pca <- PCA(X = huangjing_wj ,scale.unit = TRUE, ncp = 20, graph = TRUE)
  biotem_pre <- bio.pca$ind$coord %>% as.data.frame
  write.table(biotem_pre,file = paste0(Name ,"_PCA.xls"),sep="\t",col.names = TRUE,row.names = FALSE)
  eig.val<- get_eigenvalue(bio.pca)
  return(list(eig.val = eig.val, biotem_pre = biotem_pre))
  
}

#比如对气温数据进行降维
tmp_jiangwei<- huangjing_PCA(data_tmp,"tmp")
print(tmp_jiangwei)

toplvector <- tmp_jiangwei$biotem_pre[,1:4]
colnames(toplvector) <- c("tmp1",'tmp2','tmp3','tmp4')



#再比如降水数据集
prec_jiangwei<- huangjing_PCA(data_prec,"prec")
print(prec_jiangwei)
toplvector <- cbind(toplvector,prec_jiangwei$biotem_pre[,1:7])
colnames(toplvector)[5:11] <- c("prec1",'prec2','prec3','prec4','prec5','prec6',"prec7")



#其它数据集也类似





2.3. 整理保存

#转置保存
toplvector <- cbind(longla,elev,toplvector)
order <- row.names(toplvector)
trans_toplvector <- t(toplvector[order,]) %>% as.data.frame()
write.table(trans_toplvector,file = "降维后的环境数据文件.csv",sep = ",",col.names = FALSE)

在这里插入图片描述


总结

本章简单介绍了一下对先前得到的原始环境数据文件进行降维处理的操作。得到预处理后的数据后,就需要正式进入具体的分析了,根据要求的目的,利用这些数据进行专门的分析。

三十辐,共一毂(gŭ),当其无,有车之用。

–2023-9-29 实验篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1053231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【小沐学前端】Node.js实现UDP和Protobuf 通信(protobuf.js)

文章目录 1、简介1.1 node1.2 Protobuf 2、下载和安装2.1 node2.2 Protobuf 3、node 代码示例3.1 HTTP3.2 UDP单播3.4 UDP广播 4、Protobuf 代码示例4.1 例子:awesome.proto 结语 1、简介 1.1 node Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。 Node.js 是一个开源…

基于 SpringBoot+Vue 的教室人事档案管理系统

1 简介 教师人事档案管理系统利用信息的合理管理&#xff0c;动态的、高效的、安全的实现了教师的各种需求&#xff0c;改变了传统的网上查看方式&#xff0c;使教师可以足不出户的在线查看最适合自己个人档案、奖惩信息、档案变动、培训报名或者新闻资讯。 1、教师后台功能模…

闪存工作原理

前言 1、闪存类型 闪存有两种分类&#xff0c;NAND型闪存主要用于存储 2、MOS的特性 MOS管的三个引脚分别是Gate&#xff08;G&#xff09;、Source&#xff08;S&#xff09;和Drain&#xff08;D&#xff09;。Gate&#xff08;G&#xff09;引脚是晶闸管的控制引脚&…

Qt::图层框架-图片图层-序列图层-QGraphicsPixmapItem

二维矢量动画智能制作软件开发合集 链接&#xff1a;软件开发技术分享及记录合集 个人开发二维矢量动画智能制作软件界面如下&#xff1a; 目录 一、图片序列图层原理 二、图片序列图层代码实现 三、图片序列图层软件测试视频 结束语 一、图片序列图层原理 本软件的11种…

Sentinel学习(2)——sentinel的使用,引入依赖和配置 对消费者进行流控 对生产者进行熔断降级

前言 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 本篇博客介绍sentinel的使用&#x…

后端各层的部署开发

目录 一、创建数据库 二、entity层 三、mapper层 四、service层 五、controller层 一、创建数据库 CREATE TABLE user (id bigint NOT NULL AUTO_INCREMENT COMMENT id,name varchar(10) DEFAULT NULL COMMENT 姓名,sex varchar(5) DEFAULT NULL COMMENT 性别,phone varcha…

NLP 03(LSTM)

一、LSTM LSTM (Long Short-Term Memory) 也称长短时记忆结构,它是传统RNN的变体,与经典RNN相比&#xff1a; 能够有效捕捉长序列之间的语义关联缓解梯度消失或爆炸现象 LSTM的结构更复杂,它的核心结构可以分为四个部分去解析: 遗忘门、输入门、细胞状态、输出门 LSTM内部结构…

如何在Qt中引入Network模块

2023年10月1日&#xff0c;周日凌晨 如果用的是CMake find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network) 如果用的是qmake QT network

zemax光线光扇图

光线光扇图&#xff1a; 过光瞳Y轴的光束剖面&#xff0c;称为子午光扇&#xff1b; 过光瞳X轴的光束剖面&#xff0c;称为弧矢光扇。 可以显示作为光瞳坐标函数的光线像差。 对于视场内任意一点&#xff0c;取其子午面内的光线&#xff0c;以光线在光阑面上的透射点坐标为横…

IDEA 使用

目录 Git.gitignore 不上传取消idea自动 add file to git撤销commit的内容本地已经有一个开发完成的项目&#xff0c;这个时候想要上传到仓库中 Git .gitignore 不上传 在项目根目录下创建 .gitignore 文件夹&#xff0c;并添加内容&#xff1a; .gitignore取消idea自动 add…

毛玻璃态卡片悬停效果

效果展示 页面结构组成 页面的组成部分主要是卡片。其中卡片的组成部分主要是包括了图片和详情。 卡片的动效是鼠标悬停在卡片上时&#xff0c;图片会移动到左侧&#xff0c;并且图片是毛玻璃效果。所以我们在布局的时候图片会采用绝对布局。而详情则是基础布局。 CSS3 知识…

PS 切片工具 选择切片 切片存储

上文 PS 透视裁剪工具 中 我们简单讲述了透视裁剪工具 今天 我们来讲他后面的切片工具 首先 他的用途还是很多的 例如 你有一个很大的图片 其中包括 轮播 导航 主题内容 但他们都在一个图片上 你就可以用切片工具 将完整的图片切成多个部分 这里 我们选择了切片工具 光标也会…

Drift plus penalty 漂移加惩罚Part1——介绍和工作原理

文章目录 正文Methodology 方法论Origins and applications 起源和应用How it works 它是怎样工作的The stochastic optimization problem 随机优化问题Virtual queues 虚拟队列The drift-plus-penalty expression 漂移加惩罚表达式Drift-plus-penalty algorithmApproximate sc…

OpenCV之分水岭算法(watershed)

Opencv 中 watershed函数原型&#xff1a; void watershed( InputArray image, InputOutputArray markers ); 第一个参数 image&#xff0c;必须是一个8bit 3通道彩色图像矩阵序列&#xff0c;第一个参数没什么要说的。关键是第二个参数 markers&#xff0c;Opencv官方文档的说…

Python函数语法与面向对象回顾(精华)

目录 函数 语法定义 返回值 位置参数 关键字传递 默认参数 函数参数中 / 作用 lambda表达式 递归函数 面向对象 初识对象 继承 构造函数 ​编辑 多态 "私有属性" 动态 类方法和静态方法 函数 语法定义 pyhon的函数定义语法是 def 函数名(参数…

【Python实战】-- 按条件提取所有目录下所有Excel文件指定行数据

系列文章目录 文章目录 系列文章目录前言一、背景二、使用步骤1.源码 总结 前言 一、背景 有多个目录&#xff0c;每个目录下有若干Excel文件&#xff0c;我们要提取每个Excel里面指定的行数据&#xff1a; 目录如下&#xff1a; 注&#xff1a;目录数量、名称不限&#xff0c…

Egg使用jwt拦截jtoken验证

安装 npm install egg-jwt注册插件 在config文件夹子下 plugin,js下 use strict;module.exports {//mysqlmysql: {enable: true,package: egg-mysql},//jwtjwt: {enable: true,package: egg-jwt} };使用中间件 在app文件下创建 middleware 文件夹 在middleware 文件下创建…

Cannot resolve MVC view ‘xxx‘

这是在springboot下通过controller访问templates目录下的静态文件&#xff08;Hello.html)报的错误 原因&#xff1a;缺少thymeleaf依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</ar…

初级篇—第四章聚合函数

文章目录 聚合函数介绍聚合函数介绍COUNT函数AVG和SUM函数MIN和MAX函数 GROUP BY语法基本使用使用多个列分组WITH ROLLUP HAVING基本使用WHERE和HAVING的对比开发中的选择 SELECT的执行过程查询的结构SQL 的执行原理 练习流程函数 聚合函数介绍 聚合函数作用于一组数据&#x…

ELK介绍

一、前言 前面的章节我们介绍通过ES Client将数据同步到ElasticSearch中&#xff0c;但是像日志这种数据没有必要自己写代码同步到ES那样会折腾死&#xff0c;直接采用ELK方案就好&#xff0c;ELK是Elasticsearch、Logstash、Kibana三款开源软件的缩写&#xff0c;ELK主要用于…