基于python机器学习及深度学习在空间模拟与时间预测领域中的实践技术应用

news2024/11/8 16:32:49
机器学习
理论知识
1.1.1 课程目标
了解机器学习的发展历史、计算原理、基本定义,熟悉机器学习方法的分类,常用机器学习方法,
以及模型的评估与选择;熟悉数据预处理的流程,掌握 python 程序包的使用;理解机器学习在生态
水文中的应用,掌握机器学习模型构建方法,学会构建机器学习模型用于地表参数的空间模拟与时间
预测,并掌握生态水文过程分析。
1.2 机器学习方法
机器学习的发展历史、计算原理、基本定义与术语。
1.3 机器学习方法的分类
机器学习的任务主要可以分为监督学习和非监督学习两大类。根据是否拥有标记信息来区分监督
/非监督学习。分类和回归是监督学习的代表,聚类是非监督学习的代表。

 

1.4 模型评估与选择
在选择机器学习模型时,首先要明确模型的目的,期望完成何种任务。因此要从误差,模型精度
等方面进行评估和选择。
学习器的实际预测输出与样本的真实输出之间的差异称为“误差”,在训练集上的误差又称为“经
验误差”,在新样本上的误差称为“泛化误差”。拟合程度指的是机器学习过程中产生的模型对于测
试集的适应效果怎么样,其中有“过拟合”和“欠拟合”两种情况。
同时,还会利用“测试集”来测试学习器对新样本的判别能力,以“测试误差”作为泛化误差的
近似,常用的方法有留出法,交叉验证法,自助法等。
1.5 Python 使用说明与代码库
1.5.1 Python 简介
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。
Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
Python 是面向对象语言: 这意味着 Python 支持面向对象的风格或代码封装在对象的编程技术。
Python 的发展历史:
Python 是由荷兰人 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机
科学研究所设计出来的。
1991 年,Python 的第一个解释器诞生了。他是由 C 语言实现的,有很多语法来自 C,又受到了
很多 ABC 语言的影响。
Python1.0 版本于 1994 年 1 月发布,这个版本的主要新功能是 lambda, map, filter 和 reduce,
但是 Guido 不喜欢这个版本。
Python2.0 版本于 2000 年 10 月份发布,这个版本的主要新功能是内存管理和循环检测垃圾收集
器以及对 Unicode 的支持。然而,尤为重要的变化是开发的流程的改变,Python 此时有了一个更透
明的社区。
Python3.0 版本于 2008 年 12 月份发布,Python3.x 不向后兼容 Python2.x,这意味着 Python3.x
可能无法运行 Python2.x 的代码。 Python3 代表着 Python 语言的未来
Python 2.7 被确定为最后一个 Python 2.x 版本。
Python3 基本语法格式:
a) 注释格式: 单行注释以 # 开头,多行注释可以用多个 # 号,或者"""和"""。

b) 行与缩进:缩进来表示代码块,不需要使用大括号 {} 。

 

c) 导入需要用到的库或函数:在 python 用 import 或者 from...import 来导入相应的模块。

 

d) 数字类型:int(整数);bool(布尔型);float(浮点数);complex(复数)。

 

e) 数据结构:字符串、列表、元组、字典和集合。

 

1.5.2 编译器的安装与文件的加载
下载 Anaconda,官方网址 https://www.anaconda.com/products/individual ,具体安装教程可
参考该网址 https://www.jb51.net/article/199555.htm
本次课程所用到的程序文件后缀均为.ipynb,.ipynb 是 jupyter notebook 格式的 python 代码,
打开 jupyter notebook 之后点击下图 upload 即可添加,打开。

 

1.5.3 代码库的安装
Python 为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内
容。用 Python 开发,许多功能不必从零编写,直接使用现成的即可。
本课程将详细介绍三种功能强大且应用广泛的代码库,即 numpy, pandas 和 matplotlib。
Anaconda 中已经自带了某些库,可以打开 Anaconda Prompt,输入 pip list,就可以检查是否已经
安装了所需要的代码库。对于未安装的代码库,在 Anaconda Prompt 中输入 pip install (代码库
名称),即可完成代码库的安装。
1.5.4 NumPy
NumPy 代表 “
Numeric Python”,它是一个由多维数组对象和用于处理数组的例程集合组成的
库。NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型,它描述相同类型的元素集合,可
以使用基于零的索引访问集合中的项目。
数组的创建

数组的运算 

1.5.5 Pandas
Pandas 是 Python 语言的一个扩展程序库,主要用于数据分析。它是基于 Numpy 的,具有强大分
析能力的,结构化数据的工具集。Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Excel 导入数
据。
DataFrame 是 Pandas 的重要数据结构之一,也是在使用 Pandas 进行数据分析过程中最常用的结
构之一。一个表格型的数据结构,既有行标签(
index),又有列标签(
columns),它也被称异构数
据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。
其结构图示意图,如下所示:

DataFrame 的创建

 

1.5.6 Matplotlib
Matplotlib 是 Python 的绘图库,它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代
方案。
直方图

 

1.6 常用机器学习算法练习
1.6.1 支持向量机
支持向量机(
Support Vector Machine,SVM)是一类按监督学习(
supervised learning)方式
对数据进行二元分类的广义线性分类器。给定一组训练实例,每个训练实例被标记为属于两个类别中
的一个或另一个,SVM 训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二
元线性分类器。SVR(支持向量回归)是 SVM(支持向量机)中的一个重要的应用分支。SVR 回归与
SVM 分类的区别在于,SVR 的样本点最终只有一类,它所寻求的最优超平面不是 SVM 那样使两类或多
类样本点分的“最开”,而是使所有的样本点离超平面的总偏差最小。

 

 

模型结果展示:

 

1.6.2 随机森林
随机森林是一种集成算法(
Ensemble Learning),它属于 Bagging 类型,通过组合多个弱分类
器,最终结果通过投票或取均值,使得整体模型的结果具有较高的精确度和泛化性能。其可以取得不
错成绩,主要归功于“随机”和“森林”,一个使它具有抗过拟合能力,一个使它更加精准。其示意图如
下所示:

随机森林流程同支持向量机类似,不同之处仅体现在模型构建阶段,具体的模型构建阶段如下图所示:

 

 

1.7 应用机器学习模型的步骤
1.7.1 数据的收集
根据科学目标,收集相关数据,方法包括但不限于网络爬虫,RSS 反馈以及设备返回的实测数据
等。
1.7.2 输入数据的处理
确保数据格式符合机器学习算法的特定要求,如字符串类型转整型数据,量纲不同的数据做归一
化处理等。
1.7.3 输入数据的分析
利用绘图,特征工程,空值查询等方法,对输入数据进行清洗,剔除掉数据集中的异常值和垃圾
数据。
1.7.4 机器学习算法训练
将上述步骤得到的格式化数据输入道算法,从中抽取知识获信息。
1.7.5 机器学习算法测试
测试算法的工作效果,若不满意算法的输出结果,则应返回上述几个步骤进行改正并重新测试。
1.7.6 机器学习算法应用
将机器学习算法转换成应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工
作。
1.8 机器学习的未来发展
1.8.1 机器学习与物理限制
以物理模型为代表的机理模型和以机器学习为代表的数据驱动模型不会相互替代,相反,将二者
进行结合可能会成为未来的主流。目前混合模型主要可以分为两个方面,一是利用机理知识指导学习
算法关注物理一致性解,二是 Hybrid 模型的引入。
1.8.2 迁移学习
迁移学习是一种机器学习的方法,指的是一个预训练的模型被重新用在另一个任务中。主流的迁
移学习方法有基于实例的迁移,基于特征的迁移,基于共享参数的迁移和基于关系知识的迁移。
数据预处
理流程
&
机器学习
与地表参
数的空间
尺度扩展
2.1 机器学习的数据预处理
确保机器学习模型精度的关键在于输入数据的选择,如果输入数据就存在问题,就会使得模型学
到一些错误的信息,最终造成模型误差。
2.1.1 数据清洗
数据清洗主要涉及到的工作有空值查询,缺失值的插补,文本型变量的转换,异常值的剔除等。
空值查询与缺失值的插补

 

 

 

2.1.2 数据集成
合并来自多个数据存储的数据,优秀的集成有助于减少结果数据集的冗余和不一致,有助于提高
其后挖掘过程的准确性和速度。
2.1.3 数据变换
对数据进行规范化处理,以便于后续的信息挖掘。常见的数据变换包括:特征二值化、特征归一
化、连续特征变化,定性特征哑编码等。
2.1.4 数据可视化
利用直方图,散点图,相关系数热力图以及统计变量表格等直观地展现数据的范围、大小、波动
趋势,便于后续模型的选择。

 

2.2 空间尺度扩展模型的构建

 

2.2.1 特征工程
SHAP 是 Python 开发的一个"模型解释"包,可以解释任何机器学习模型的输出。其名称来源于
SH apley A dditive ex P lanation,在合作博弈论的启发下 SHAP 构建一个加性的解释模型,所有的特
征都视为“贡献者”。对于每个预测样本,模型都产生一个预测值,SHAP value 就是该样本中每个
特征所分配到的数值。

2.2.2 训练模型与调优
将处理好的数据放入到 XGBoost 模型中,对模型进行训练,并通过十折交叉,得到模型最佳超参
数。

2.2.3 模型的应用与误差的计算
将测试集输入到训练好的模型中,计算出 y 值,并绘制散点图,计算模型在训练集和测试集上的
R 2 (拟合系数)。

2.2.4 空间数据处理
对遥感图像进行辐射校正和几何纠正、图像整饰、投影变换、镶嵌、特征提取、分类以及各种专
题处理等一系列操作,得到更易于模型处理的遥感影像。
由于遥感影像数量较多,使用 ArcGIS 逐幅影像处理会耗费大量的时间和精力,因此利用 ArcGIS
中的 IDLE,通过 arcpy 调用 ArcToolBox 中的各项工具,实现对遥感图像的批量处理。

2.2.5 尺度扩展与验证
将处理好的遥感影像转为矩阵形式,保证数据形式与训练集保持一致,对整个流域上的蒸散发进
行生产。由于多种模型会得到多种产品结果,而又没有流域的真实值来验证结果的好坏,故采用三角
帽法对各种结果进行不确定性分析。
深度学习
&
机器学习
与地表参
数的时间
尺度扩展
3.1 深度学习
3.1.1 深度学习概论
深度学习是机器学习的一种。深度学习的概念源于人工神经网络的研究,含多个隐藏层的多层感
知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,
以发现数据的分布式特征表示。

3.1.2 深度学习经典模型
深度学习是机器学习的一种。深度学习的概念源于人工神经网络的研究,含多个隐藏层的多层感
知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,
以发现数据的分布式特征表示。
人工神经网络(
ANN)
人工神经网络从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接
方式组成不同的网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。
每个节点代表一种特定的输出函数,称为激活函数(
activation function)。每两个节点间的连接
都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出
则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者
函数的逼近,也可能是对一种逻辑策略的表达。

循环神经网络(
RNN)
循环神经网络是一类以序列(
sequence)数据为输入,在序列的演进方向进行递归(
recursion)
且所有节点(循环单元)按链式连接的递归神经网络。

卷积神经网络(
CNN)
卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络(
Feedforward Neural
Networks),是深度学习的代表算法之一。卷积神经网络与普通神经网络的区别在于,卷积神经网络
包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部
分邻层神经元连接。在 CNN 的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面
由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷
积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权
值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫
做池化(
pooling),通常有均值子采样(
mean pooling)和最大值子采样(
max pooling)两种形式。
子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。

3.2 时间尺度扩展模型的构建
3.2.1 数据准备
将 2017 年站点的蒸散发日尺度数据导入,并绘制折线图。

3.2.2 数据转换
将一列变成两列,第一列是 t 天的蒸散发值,第二列是 t+1 天的蒸散发值。look_back 就是预
测下一步所需要的 time steps,timesteps 就是 LSTM 认为每个输入数据与前多少个陆续输入的数
据有联系。

3.2.3 模型构建与预测
构建 LSTM 模型,根据需求设定模型参数

将训练好的模型进行预测,并进行反归一化,最后计算得分,绘制结果图像

基于python机器学习及深度学习在空间模拟与时间预测领域中的实践技术应用 (qq.com)

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

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

相关文章

美国培生教育集团下PYP Readers系列的音乐是怎样制造的,读了吗?

很多小朋友都对音乐很感兴趣。 TA可能会喜欢Pop Music , 可能会喜欢Rap Music, 也可能会喜欢Rock&Roll...... 那么TA可能会想,这些音乐到底是怎样产生的呢? 没错,乐器(Instrument)! 好书推荐…

【YOLO系列】YOLO V1论文总结

目标检测论文总结 【RCNN系列】 RCNN Fast RCNN Faster RCNN 【YOLO系列】 YOLO V1 文章目录目标检测论文总结前言一、Pipeline二、模型设计1.训练阶段2.损失函数2.1.框回归损失2.2.置信度损失2.3.分类损失总结前言 一些经典论文的总结。 一、Pipeline YOLO的pipeline很简单…

排查 Hive 任务导致磁盘写满的过程

计算的中间结果会写到 HDFS,如果用户写的SQL 有问题。如用户的 SQL 如下: select * from A join B where a.dt20230101 and b.dt20230101,如 A 表 dt20230101 分区 1000万行,B 表 dt20230101 有 1万行记录。由于 SQL 没有关联条件…

Druid 连接池技术的使用

文章目录官网链接连接性能消耗问题分析数据库连接池的作用市面常见连接池产品和对比国货之光druid连接池使用导入druid依赖硬编码方式(了解)软编码方式druid配置(了解)官网链接 http://www.apache-druid.cn/GettingStarted/chapter-1.html 连接性能消耗…

[Vue组件及组件之间的通信]一.Vue脚手架的使用;二.Vue的组件和组件之间的通信

目录 一.Vue脚手架的使用 1.通过命令行使用vue-cli的指令创建:vue init webpack 项目名称 2使用webStorm软件:本质仍然使用vue脚手架 3.使用vue ui创建:vue提供的图形化的操作界面 二.Vue的组件和组件之间的通信 1.组件:是vu…

数字签名与签名验证过程

1.1 生成数字签名 1 利用RSA算法生成公钥、私钥。私钥由密钥持有者自主保存,公钥可对外发布。 2 准备好待签名的文档。 3 利用哈希算法(HASH),生成待签名文档的摘要。(文档摘要) 4 利用签名者的私钥&am…

谷粒学院——第十八章、统计分析

准备工作 需求分析 1、统计在线教育项目中,每一天有多少注册人数 2、把统计出来的注册人数,使用图表显示出来 创建数据库表 创建工程 service_statistics 配置文件 # 服务端口 server.port8008# 服务名 spring.application.nameservice-statistic…

Python基础(二十一):面向对象深入了解

文章目录 面向对象深入了解 一、魔法方法 1、__init__() 2、__str__() 3、__del__()

数据结构入门——二叉树(C语言实现)

数据结构入门——二叉树一. 树概念及结构1.1 树的概念1.2 树的相关概念1.3 树的表示1.4 树的应用二. 二叉树概念及结构2.1 二叉树的概念2.2 特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储结构三. 二叉树的顺序结构及其实现(堆的实现)3.1 二叉树的顺序结构3.2 堆的实现(以大堆为…

要想宝宝吃得好,粮仓就要保护好,做好3点保护粮仓,防止皲裂

众所周知,母乳喂养的妈妈并不容易,因为母乳喂养也有很多“难题”,也会很痛,比如开奶痛、挂奶、堵奶等,疼痛的程度不亚于子宫收缩。还有一个,牛奶,牛奶。.头皲裂的时候,真的是含泪喂奶…

Python实现可视化大屏数据

参考网址如下: 【Python】全网最新最全Pyecharts可视化教程(三):制作多个子图_51CTO博客_python数据可视化pyecharts使用pyecharts拖拉,拽,创建大屏展示 - 简书 (jianshu.com) 智慧大屏是如何实现数据可视化的? - 知…

调查问卷考试问卷创建生成工具助手小程序开发

调查问卷考试问卷创建生成工具助手小程序开发 问卷调查考试软件,可以自由让每一个用户自由发起调查问卷、考试问卷。发布的问卷允许控制问卷的搜集、回答等各个环节的设置,同时支持系统模板问卷,选用模板问卷后可以一键创建属于自己的问卷&a…

JVM基础知识总结

日常工作中接触到的jvm相关的知识,和jvm相关书籍中汇总总结一下jvm相关基础知识,作为对jvm的了解。 文章目录jvm运行时数据区域程序计数器java虚拟机栈堆heap非堆内存 nonheap方法区直接内存 Direct Memory类加载机制类的加载过程类加载器加载过程的详细…

阿里云网络解决方案架构师任江波:全球一张网,支撑游戏业务高效互联

2022 年 8 月 30 日,阿里云用户组(AUG)第 9 期活动在北京举办。活动现场,阿里云网络解决方案架构师任江波,向参会企业代表分享了全球一张网,支撑游戏业务高效互联。本文根据演讲内容整理而成。 在座的很多我…

Web3中文|年度回顾:2022年Web3的发展情况

老生常谈的话题都有一个共同点,那就是它总是包含着一些无趣但至关重要的真理。例如,众所皆知天空是蓝色的,所以大家并不会把它纳入日常讨论,但这并不代表它对物理学、生物学和其他学科而言没有价值。 当我们回望2022年的Web3领域…

docker 部署maven服务器,并将代码发布到maven服务器,并kie-server关联

书接上文 已经搭建好了kie-server的docker swarm集群. 没有搭建business-central是集群是因为这是个页面的可视化的开发环境 一来面向开发人员,不需要集群部署 二来他的数据是放在本地的git服务器上的. 所以每个node的数据不会统一 三来部署好了之后页面也打不开… 四来busines…

推荐系统入门学习(一)【小白入门系列】

推荐系统入门学习(一) 前言:本博客不会采取大量的难懂的语言来介绍推荐系统,只会用一些简单的方式来介绍推荐系统,祝学习愉快! 1、推荐系统的概念 简单的说,推荐系统则是将产品推荐给用户的一…

判断点在多边形内部

一、问题描述已知点P(x,y)和多边形polygon,判断点P(x,y)是否在多边形内部。二、解决方案射线法以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外部。考虑沿着L从无究远处开始自左向右移动&#xff0c…

Android 更改鼠标样式

定义风格 鼠标风格定义位置&#xff1a;\frameworks\base\core\res\res\values\styles.xml 系统定义了两套鼠标的风格&#xff0c;一套是默认&#xff0c;一套是放大的图标的风格&#xff0c;在下面增加自己的鼠标风格图标 <style name"BluePointer"><ite…

Springboot Controller接口默认自动填充 业务实体参数值

前言 今天看有小伙伴求救&#xff1a; 我还是一贯如此&#xff0c; 有人不明白&#xff0c;没玩过HandlerMethodArgumentResolver 。 那么很可能不止他一个人&#xff0c; 那么我就有必要出手。 不多说&#xff0c;开搞。 正文 快速模拟出这个使用场景 &#xff1a; 假如有好多…