当前位置: 首页 > news >正文

基于机器学习、遥感和Penman-Monteith方程的农田蒸散发混合模型研究_刘燕_2022

基于机器学习、遥感和Penman-Monteith方程的农田蒸散发混合模型研究_刘燕_2022

  • 摘要
    • 关键词
  • 1 绪论
  • 2 数据与方法
    • 2.1 数据
    • 2.2 机器学习算法
    • 2.3 Penman-Monteith方程
    • 2.4 Medlyn公式
    • 2.5 模型性能评估
  • 3 基于机器学习算法的混合模型估算农田蒸散量的评价与比较
  • 4 利用人工神经网络算法和遥感植被指数改善PM方程估算农田蒸散量的精度
  • 5 结论

在这里插入图片描述

摘要

  本文的研究内容旨在发展能够准确获取全球或区域尺度蒸散量的混合模型,主要工作包括:
  (1)构建了六种不同的混合蒸散模型。这六种混合模型基于六种传统的机器学习算法,分别是KNN、RF、SVM、XGBoost、ANN、LSTM。然后使用17个全球分布的农田通量站点的涡度协方差通量塔的通量数据构建模型。
  (2)分析了十种不同的输入因子组合对混合模型估算农田蒸散量性能的影响。将气象数据分别和一种、两种、三种以及四种遥感数据输入到机器学习方法中,构建气孔导度模型,进而运用Penman-Monteith(PM)方程计算蒸散。
  (3)评估了六种基于机器学习的混合模型在使用相同的输入变量下估算蒸散的精度,以得到一种较优的基于机器学习的估算蒸散方法。
  (4)构建Medlyn-Penman-Monteith模型。将得到的较优的混合机器学习模型和Medlyn-PM模型比较,以得到适用于不同的环境条件的模型,提升模型模拟区域尺度农田蒸散的精度,能够为区域尺度准确估算农田蒸散提供方法支持。
  (5)研究了ANN-PM模型在干旱环境下的准确性。利用ANN-PM模型的模拟值与观测值之间的相关系数(r)来评估模型的性能。通过比较ANN-PM模型模拟蒸散值与观测值之间的时间序列图,研究模型是否能捕捉干旱站点蒸散的时间序列变化。

关键词

蒸散;机器学习;遥感;Penman-Monteith方程

1 绪论

  本文的主要研究内容如下:
  (1)基于六种不同的ML算法,使用全球17个通量站点的气象数据和中分辨率成像光谱仪(Moderate-resolution Imaging Spectroradiometer, MODIS)数据构建了估算蒸散的六种混合模型,并优化模型的参数。
  (2)分析十种不同的输入变量组合对混合模型的影响。将十种输入因子分别输入到混合模型中,比较每种模型的相关系数和均方根误差来衡量不同的变量组合。进一步比较基于机器学习算法的六种混合模型使用相同的输入变量估算蒸散的性能,得到了一种性能较优的混合模型。
  (3)将上述得到的基于ML算法的混合模型与构建的Medlyn-PM模型比较,评估其估算蒸散的性能。最后研究性能较好的混合模型在干旱环境下的准确性。

2 数据与方法

2.1 数据

2.1.1 通量站点数据
  本文使用来自FLUXNET2015数据集的5个气象因子数据和观测ET数据,日尺度上时间连续的气象数据包括气温(Temperature, Ta)、降水(Precipitation, P)、大气二氧化碳浓度(Carbon dioxide concentration, Ca)、太阳辐射(Solar radiation, SW)和饱和水汽压差(Vapor Pressure Deficit, VPD)。
2.1.2 遥感数据
  MODIS数据包括归一化差异植被指数(NDVI)、增强植被指数( EVI)、植被近红外反射率(NIRv) 和 短 波 红 外 波 段 (SWIR)。

2.2 机器学习算法

  六种机器学习算法(KNN、RF、SVM、XGBoost、ANN、LSTM)

2.3 Penman-Monteith方程

  本研究构建的六种基于ML算法的混合模型和Medlyn-PM模型都是基于PM方程的物理框架,主要差异在于Gs的计算。PM方程的计算公式如下:
在这里插入图片描述
在这里插入图片描述

2.4 Medlyn公式

  基于PM方程的ET区域尺度建模的关键是要准确地量化表面电导,这是ET建模中不确定性的最大来源。因此,Medlyn等将最优气孔行为理论与光合作用模型相结合,为表征Gs提供了一个新的生物物理框架。该Gs模型的计算方法如下:
在这里插入图片描述
在这里插入图片描述
  本文将Medlyn模型与ML方法相结合,研究哪种纯粹基于ML的Gs方法或者Medlyn模型和ML的集成可以表现得更好。

2.5 模型性能评估

  r、RMSE、MAE

3 基于机器学习算法的混合模型估算农田蒸散量的评价与比较

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 利用人工神经网络算法和遥感植被指数改善PM方程估算农田蒸散量的精度

4.1 基于Medlyn公式的混合模型
4.2 干旱气候下ET估计模型的评估
4.3 Medlyn公式的参数优化
4.4 实验结果分析
4.4.1 ANN-PM模型与Medlyn-PM模型的比较
4.4.2 评估ANN-PM模型在干旱气候下估算蒸散的性能

5 结论

  主要结论如下:
  (1)不同模型的最优参数:基于KNN模型的K值为5,基于RF模型和XGBoost模型的max_depth分别为8和7,基于ANN模型和LSTM模型的隐含层数都为2、每层神经元数分别是48和40,基于Medlyn模型的待定系数g0=0.06、g1=3.94。
  (2)与使用一种RS因子的混合模型相比,使用两种RS因子的混合模型呈现了较好的结果(RMSE=18.60-26.29 W m-2,r=0.87-0.96);使用三种或四种RS因子的混合模型表现出的性能和使用两种RS因子的混合模型的性能相似。
  (3)基于不同的ML算法的混合模型中,ANN-PM模型表现出较强地估算蒸散的能力(RMSE=18.67-20.69 W m-2,r=0.90-0.94)。
  (4)ANN-PM模型和Medlyn-PM模型相比,ANN-PM模型在估算农田蒸散方面具有较好的性能(RMSE=19.23-19.71 W m-2,r=0.93),拟合效果好,精度较高且适用范围广。
  (5)ANN-PM模型能较好地捕捉干旱站点(DE-Rus,US-Tw2,US-Tw3和US- Twt)ET的时间序列变化。ANN-PM模型在干旱站点估算蒸散的性能是合理的,其在干旱站点预测的ET与观测值的平均r是0.87,所有站点的平均r是0.86。

相关文章:

基于机器学习、遥感和Penman-Monteith方程的农田蒸散发混合模型研究_刘燕_2022

基于机器学习、遥感和Penman-Monteith方程的农田蒸散发混合模型研究_刘燕_2022 摘要关键词 1 绪论2 数据与方法2.1 数据2.2 机器学习算法2.3 Penman-Monteith方程2.4 Medlyn公式2.5 模型性能评估 3 基于机器学习算法的混合模型估算农田蒸散量的评价与比较4 利用人工神经网络算法…...

博客 cn 站搭建 v3 v3.1

1. 架构设计 v3.1 版本 2. v2.x 存在的痛点 在v2.x版本中,围绕 服务器 遇到了两个主要的问题: 服务器成本高:博客以静态页面为主,理论上可以实现无服务器部署,但是为了防止恶意攻击,不得不使用服务器进…...

2024全国水科技大会暨流域水环境治理与水生态修复论坛(六)

论坛召集人 冯慧娟 中国环境科学研究院流域中心研究员 刘 春 河北科技大学环境与工程学院院长、教授 一、会议背景 为深入贯彻“山水林田湖是一个生命共同体”的重要指示精神,大力实施生态优先绿色发展战略,积极践行人、水、自然和谐共生理念&…...

Python实战:读取MATLAB文件数据(.mat文件)

Python实战:读取MATLAB文件数据(.mat文件) 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的订阅…...

spring boot3登录开发-3(账密登录逻辑实现)

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途。 目录 前置条件 内容简介 用户登录逻辑实现 创建交互对象 1.创建用户登录DTO 2.创建用户登录VO 创建自定义登录业务异…...

Django后端开发——ORM

文章目录 参考资料ORM-基础字段及选项字段类型练习——添加模型类应用bookstore下的models.py数据库迁移——同步至mysqlmysql中查看效果字段选项Meta类定义示例:改表名应用bookstore下的models.py终端效果练习——改表名+字段选项修改应用bookstore下的models.py终端效果ORM基…...

AI模型训练的初步整理

明天会有人来给我们讲AI方面的课,我也一直想整理一下这方面的知识,今天也趁着这个机会做一下功课,算是预习。 首先,AI的模型训练可以分为: 增量学习(Incremental Learning) 增量学习允许模型在…...

【Java从入门到精通】Java Number Math 类

Java Number & Math 类 一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。 实例 int a 5000; float b 13.65f; byte c 0x4a; 然而,在实际开发过程中,我们…...

SQL字符集

目标:了解字符集的概念,掌握MySQL数据库存储数据的字符集逻辑以及设置方式 字符集概念 MySQL字符集关系 解决乱码问题 字符集设置原理 1、字符集概念 目标:了解字符集概念,掌握字符集存储和读取的实现原理 概念 字符集:charset或者character set&am…...

openssl 生成nginx自签名的证书

1、命令介绍 openssl req命令主要的功能有,生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书。 主要参数 主要命令选项: -new :说明生成证书请求文件 -x509 :说明生成自签名证书 -key :指定已…...

adb push 使用

adb push命令用于将文件从本地计算机推送到Android设备。要使用adb push命令,需要先连接Android设备并启动ADB调试模式。以下是使用adb push命令的基本步骤: 打开终端(命令提示符)。 使用cd命令导航到存储要推送文件的文件夹。 …...

【Docker】构建pytest-playwright镜像并验证

Dockerfile FROM ubuntu LABEL maintainer "langhuang521l63.com" ENV TZAsia/Shanghai #设置时区 #安装python3依赖与下载安装包 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \&& apt update \&&…...

算法沉淀——穷举、暴搜、深搜、回溯、剪枝综合练习四(leetcode真题剖析)

算法沉淀——穷举、暴搜、深搜、回溯、剪枝综合练习四 01.解数独02.单词搜索03.黄金矿工04.不同路径 III 01.解数独 题目链接:https://leetcode.cn/problems/sudoku-solver/ 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&am…...

如何在java中使用 Excel 动态函数生成依赖列表

前言 在Excel 中,依赖列表或级联下拉列表表示两个或多个列表,其中一个列表的项根据另一个列表而变化。依赖列表通常用于Excel的业务报告,例如学术记分卡中的【班级-学生】列表、区域销售报告中的【区域-国家/地区】列表、人口仪表板中的【年…...

07 MyBatis之高级映射 + 懒加载(延迟加载)+缓存

1. 高级映射 例如有两张表, 分别为班级表和学生表 自然, 一个班级对应多个学生 像这种数据 , 应该如果如何映射到Java的实体类上呢? 这就是高级映射解决的问题 以班级和学生为例子 , 因为一个班级对应多个学生 , 因此学生表中必定有一个班级编号字段cid 但我们在学生的实体…...

MT8791迅鲲900T联发科5G安卓核心板规格参数_MTK平台方案定制

MT8791安卓核心板是一款搭载了旗舰级配置的中端手机芯片。该核心板采用了八核CPU架构设计,但是升级了旗舰级的Arm Cortex-A78核心,两个大核主频最高可达2.4GHz。配备了Arm Mali-G68 GPU,通过Mali-G88的先进技术,图形处理性能大幅提…...

java:Java中的数组详解

目录 Java数组的定义和特点: Java数组的初始化和赋值 Java数组的常用操作 1. 遍历数组 2. 获取数组长度 3. 访问数组元素 4. 数组的拷贝 多维数组 数组的排序和查找 冒泡排序: 快速排序 : 二分查找: 数组的应用: Java数…...

Modern C++ std::visit从实践到原理

前言 std::visit 是 C17 中引入的一个模板函数,它用于对给定的 variant、union 类型或任何其他兼容的类型执行一个访问者操作。这个函数为多种可能类型的值提供了一种统一的访问机制。使用 std::visit,你可以编写更通用和灵活的代码,而无需关…...

谷歌gemma2b windows本地cpu gpu部署,pytorch框架,模型文件百度网盘下载

简介 谷歌DeepMind发布了Gemma,这是一系列灵感来自用于Gemini相同研究和技术的开放模型。开放模型适用于各种用例,这是谷歌非常明智的举措。有2B(在2T tokens上训练)和7B(在6T tokens上训练)模型,包括基础和指令调整版本。在8192个token的上下文长度上进行训练。允许商业使…...

数据结构-查找与排序

数据结构再往后就是比较零散的各种操作&#xff0c;查找与排序是其中最常出现的&#xff0c;今天来总结一下常用的查找与排序所用的方法 查找 顺序查找 最简单的查找方式&#xff0c;遍历&#xff0c;然后比较 bool search1(int *a,int n,int k){for (int i1;i<n;i){//遍…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...

算法—栈系列

一&#xff1a;删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...