python机器学习及深度学习在空间模拟与时间预测

原文链接icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzUyNzczMTI4Mg==&mid=2247628504&idx=2&sn=6fe3aeb9f63203cfe941a6bb63b49b85&chksm=fa77a9e5cd0020f3aa4f01887e75b15096a182c2b5b42c1044787aa285c650f1469a0ef28aec&token=2124656491&lang=zh_CN&scene=21#wechat_redirect

机器学习理论知识

了解机器学习的发展历史、计算原理、基本定义,熟悉机器学习方法的分类,常用机器学习方法,以及模型的评估与选择;熟悉数据预处理的流程,掌握python程序包的使用;理解机器学习在生态水文中的应用,掌握机器学习模型构建方法,学会构建机器学习模型用于地表参数的空间模拟与时间预测,并掌握生态水文过程分析。

机器学习方法

机器学习的发展历史、计算原理、基本定义与术语。

机器学习方法的分类

机器学习的任务主要可以分为监督学习和非监督学习两大类。根据是否拥有标记信息来区分监督/非监督学习。分类和回归是监督学习的代表,聚类是非监督学习的代表。

模型评估与选择

在选择机器学习模型时,首先要明确模型的目的,期望完成何种任务。因此要从误差,模型精度等方面进行评估和选择。

学习器的实际预测输出与样本的真实输出之间的差异称为“误差”,在训练集上的误差又称为“经验误差”,在新样本上的误差称为“泛化误差”。拟合程度指的是机器学习过程中产生的模型对于测试集的适应效果怎么样,其中有“过拟合”和“欠拟合”两种情况。

同时,还会利用“测试集”来测试学习器对新样本的判别能力,以“测试误差”作为泛化误差的近似,常用的方法有留出法,交叉验证法,自助法等。

  1. Python使用说明与代码库
  2. 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)数据结构:字符串、列表、元组、字典和集合。

编译器的安装与文件的加载

下载Anaconda,官方网址https://www.anaconda.com/products/individual,具体安装教程可参考该网址https://www.jb51.net/article/199555.htm。

本次课程所用到的程序文件后缀均为.ipynb,.ipynb是jupyter notebook格式的python代码,打开jupyter notebook之后点击下图upload即可添加,打开。

​​​​​​​代码库的安装

Python为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容。用Python开发,许多功能不必从零编写,直接使用现成的即可。

本课程将详细介绍三种功能强大且应用广泛的代码库,即numpy, pandas和matplotlib。Anaconda中已经自带了某些库,可以打开Anaconda Prompt,输入pip list,就可以检查是否已经安装了所需要的代码库。对于未安装的代码库,在Anaconda Prompt中输入pip install (代码库名称),即可完成代码库的安装。

​​​​​​​NumPy库

NumPy代表 “Numeric Python”,它是一个由多维数组对象和用于处理数组的例程集合组成的库。NumPy 中定义的最重要的对象是称为ndarray的N维数组类型,它描述相同类型的元素集合,可以使用基于零的索引访问集合中的项目。

数组的创建

数组的运算

​​​​​​​Pandas库

Pandas是Python语言的一个扩展程序库,主要用于数据分析。它是基于Numpy的,具有强大分析能力的,结构化数据的工具集。Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Excel 导入数据。

DataFrame是Pandas的重要数据结构之一,也是在使用Pandas进行数据分析过程中最常用的结构之一。一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。其结构图示意图,如下所示:

DataFrame的创建

​​​​​​​Matplotlib

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

直方图

散点图

常用机器学习算法练习

支持向量机

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

支持向量机框架:

具体的实现代码:

模型结果展示:

​​​​​​​随机森林

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

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

随机森林的结果展示如下所示:

应用机器学习模型的步骤

数据的收集

根据科学目标,收集相关数据,方法包括但不限于网络爬虫,RSS反馈以及设备返回的实测数据等。

​​​​​​​输入数据的处理

确保数据格式符合机器学习算法的特定要求,如字符串类型转整型数据,量纲不同的数据做归一化处理等。

​​​​​​​输入数据的分析

利用绘图,特征工程,空值查询等方法,对输入数据进行清洗,剔除掉数据集中的异常值和垃圾数据。​​​​​​​

机器学习算法训练

将上述步骤得到的格式化数据输入道算法,从中抽取知识获信息。

​​​​​​​机器学习算法测试

测试算法的工作效果,若不满意算法的输出结果,则应返回上述几个步骤进行改正并重新测试。

​​​​​​​机器学习算法应用

将机器学习算法转换成应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工作。

机器学习的未来发展

机器学习与物理限制

以物理模型为代表的机理模型和以机器学习为代表的数据驱动模型不会相互替代,相反,将二者进行结合可能会成为未来的主流。目前混合模型主要可以分为两个方面,一是利用机理知识指导学习算法关注物理一致性解,二是Hybrid模型的引入。

​​​​​​​迁移学习

迁移学习是一种机器学习的方法,指的是一个预训练的模型被重新用在另一个任务中。主流的迁移学习方法有基于实例的迁移,基于特征的迁移,基于共享参数的迁移和基于关系知识的迁移。

机器学习的数据预处理

确保机器学习模型精度的关键在于输入数据的选择,如果输入数据就存在问题,就会使得模型学到一些错误的信息,最终造成模型误差。

​​​​​​​数据清洗

数据清洗主要涉及到的工作有空值查询,缺失值的插补,文本型变量的转换,异常值的剔除等。

空值查询与缺失值的插补

文本型变量的转换

数据异常值的剔除

​​​​​​​数据集成

合并来自多个数据存储的数据,优秀的集成有助于减少结果数据集的冗余和不一致,有助于提高其后挖掘过程的准确性和速度。

​​​​​​​数据变换

对数据进行规范化处理,以便于后续的信息挖掘。常见的数据变换包括:特征二值化、特征归一化、连续特征变化,定性特征哑编码等。

​​​​​​​数据可视化

利用直方图,散点图,相关系数热力图以及统计变量表格等直观地展现数据的范围、大小、波动趋势,便于后续模型的选择。

空间尺度扩展模型的构建

特征工程

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

训练模型与调优

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

模型的应用与误差的计算

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

空间数据处理

对遥感图像进行辐射校正和几何纠正、图像整饰、投影变换、镶嵌、特征提取、分类以及各种专题处理等一系列操作,得到更易于模型处理的遥感影像。

由于遥感影像数量较多,使用ArcGIS逐幅影像处理会耗费大量的时间和精力,因此利用ArcGIS中的IDLE,通过arcpy调用ArcToolBox中的各项工具,实现对遥感图像的批量处理。

尺度扩展与验证

将处理好的遥感影像转为矩阵形式,保证数据形式与训练集保持一致,对整个流域上的蒸散发进行生产。由于多种模型会得到多种产品结果,而又没有流域的真实值来验证结果的好坏,故采用三角帽法对各种结果进行不确定性分析。

深度学习

深度学习概论

深度学习是机器学习的一种。深度学习的概念源于人工神经网络的研究,含多个隐藏层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

​​​​​​​深度学习经典模型

深度学习是机器学习的一种。深度学习的概念源于人工神经网络的研究,含多个隐藏层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

人工神经网络(ANN)

人工神经网络从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激活函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。

循环神经网络(RNN)

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

卷积神经网络(CNN)

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

时间尺度扩展模型的构建

数据准备

将2017年站点的蒸散发日尺度数据导入,并绘制折线图。

数据转换

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

模型构建与预测

构建LSTM模型,根据需求设定模型参数

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

原文链接icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzUyNzczMTI4Mg==&mid=2247628504&idx=2&sn=6fe3aeb9f63203cfe941a6bb63b49b85&chksm=fa77a9e5cd0020f3aa4f01887e75b15096a182c2b5b42c1044787aa285c650f1469a0ef28aec&token=2124656491&lang=zh_CN&scene=21#wechat_redirect

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++语法|虚函数与多态详细讲解(六)|如何解释多态?(面试向)

系列汇总讲解,请移步: C语法|虚函数与多态详细讲解系列(包含多重继承内容) 多态分为了两种,一种是静态的多态,一种是动态的多态。 静态(编译时期)的多态 函数重载 boo…

基于51单片机温度报警系统—数码管显示

基于51单片机温度报警系统 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 1.DS18B20采集温度,数码管显示温度; 2.温度测量范围:0-99度; 3.当温度低于…

NDIS小端口驱动开发(三)

微型端口驱动程序处理来自过度驱动程序的发送请求,并发出接收指示。 在单个函数调用中,NDIS 微型端口驱动程序可以指示具有多个接收 NET_BUFFER_LIST 结构的链接列表。 微型端口驱动程序可以处理对每个NET_BUFFER_LIST结构上具有多个 NET_BUFFER 结构的多…

阻塞信号集和未决信号集_代码实现

1. 程序验证内容 将编号为0,1,2添加到阻塞信号集中&#xff0c;i<信号编号时&#xff0c;发出信号&#xff0c;观察未决信号集状态 当解除阻塞后&#xff0c;原先的信号是否执行&#xff0c;执行顺序是什么 2. 代码实现 #include <unistd.h> #include <stdlib.h…

【全开源】海报在线制作系统源码(ThinkPHP+FastAdmin+UniApp)

打造个性化创意海报的利器 引言 在数字化时代&#xff0c;海报作为一种重要的宣传媒介&#xff0c;其设计质量和效率直接影响着宣传效果。为了满足广大用户对于个性化、高效制作海报的需求&#xff0c;海报在线制作系统源码应运而生。本文将详细介绍海报在线制作系统源码的特…

Spring AI实战之二:Chat API基础知识大串讲(重要)

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos Spring AI实战全系列链接 Spring AI实战之一&#xff1a;快速体验(OpenAI)Spring AI实战之二&#xff1a;Chat API基础知识大串讲(重要)SpringAIOllama三部曲…

JavaFX学习教程二

一、JavaFX 体系结构 JavaFX 场景图(Scene Graph)是构建 JavaFX 应用程序的起点&#xff0c;一种树状数据结构&#xff0c;用于排列&#xff08;和分组&#xff09;图形对象&#xff0c;以便于逻辑表示。 stage:舞台&#xff0c;操作系统窗口的 JavaFX 表示&#xff0c;是所有…

Qt for android 获取USB设备列表(一)Java方式 获取

简介 QtActivity 作为 Qt 应用程序的入口点&#xff0c;负责启动和配置 Qt 应用程序的信息&#xff0c; 后面我们继承 QtActivity 做自定义控制&#xff0c;了解一下 Activity 生命周期概念&#xff0c; 因为 QtActivity 继承自Android的activity&#xff0c;使用周期函数完成我…

VMare下载安装

一.下载 1.百度搜索BROADCOM官网 打开官网&#xff1a; https://www.broadcom.com/​ 2.点击右上角&#xff0c;进行账号注册&#xff0c;注册好后&#xff0c;进行登陆 3.注册好后&#xff0c;进入个人界面&#xff1a;https://support.broadcom.com/#. 按下图所示点击进…

VMware虚拟机中ubuntu使用记录(10)—— 如何在Ubuntu18.04中使用自己的单目摄像头运行ORB_SLAM3(亲测有效,踩坑记录)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. …

大作业爬取手机数据,实现手机推荐系统以及朋友圈手机论坛

1、功能简介 &#xff08;1&#xff09;用户注册与用户登录 &#xff08;2&#xff09;手机搜索、手机比拼、手机个性化推荐 &#xff08;3&#xff09;点击搜索的手机图片会就用户行为&#xff0c;轮播展示用户行为&#xff0c;推荐点击次数靠前的手机 &#xff08;4&#xf…

基于springboot+vue的智慧外贸平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

论文精读:HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face Status: Reading Author: Dongsheng Li, Kaitao Song, Weiming Lu, Xu Tan, Yongliang Shen, Yueting Zhuang Institution: 微软亚洲研究院&#xff08;Microsoft Research Asia&#xff09;, 浙江…

【408精华知识】指令的寻址方式

文章目录 一、指令寻址&#xff08;一&#xff09;顺序寻址&#xff08;二&#xff09;跳跃寻址 二、数据寻址&#xff08;一&#xff09;隐含寻址&#xff08;二&#xff09;立即&#xff08;数&#xff09;寻址&#xff08;三&#xff09;直接寻址&#xff08;四&#xff09;…

外卖系统源码开发全攻略:外卖小程序与后台管理系统的设计与实现

今天&#xff0c;小编将详细介绍外卖系统源码的开发全攻略&#xff0c;从需求分析到设计与实现&#xff0c;为开发者提供全面指导。 一、需求分析 1.用户需求 用户是外卖系统的核心&#xff0c;需满足以下基本需求&#xff1a; -浏览菜单并下单 -实时追踪订单 -多种支付方…

移动硬盘难题:不显示容量与无法访问的解决策略

在使用移动硬盘的过程中&#xff0c;有时会遇到一些棘手的问题&#xff0c;比如移动硬盘不显示容量且无法访问。这种情况让人十分头疼&#xff0c;因为它不仅影响了数据的正常使用&#xff0c;还可能导致重要数据的丢失。接下来&#xff0c;我们就来详细探讨一下这个问题及其解…

Python | Leetcode Python题解之第112题路径总和

题目&#xff1a; 题解&#xff1a; class Solution:def hasPathSum(self, root: TreeNode, sum: int) -> bool:if not root:return Falseif not root.left and not root.right:return sum root.valreturn self.hasPathSum(root.left, sum - root.val) or self.hasPathSum…

太狠了,凌晨5点面试。。

(关注数据结构和算法&#xff0c;了解更多新知识) 网上看到一网友发文说收到面试邀请&#xff0c;面试时间竟然是早晨5点&#xff0c;这是要猝死的节奏。有的网友说应该是下午 5 点&#xff0c;如果是下午 5 点直接写下午 5 点就行了&#xff0c;或者写 17 点也行&#xff0c;直…

Unity Assembly Definition Dotween 引用

原理&#xff1a; 具体Unity程序集原理用法&#xff0c;暂时留坑&#xff0c;不介绍了&#xff0c;相信有很多人也写过了 这里简单放个官方API链接 https://docs.unity3d.com/cn/current/Manual/ScriptCompilationAssemblyDefinitionFiles.html 现象 &#xff1a;Dotween引用…

捕捉二氧化碳也能赚钱?深入探索CCUS技术与商业前景

引言 随着全球变暖和气候变化的加剧&#xff0c;如何有效减少二氧化碳&#xff08;CO2&#xff09;排放成为各国亟待解决的问题。近日&#xff0c;全球最大的二氧化碳捕集工厂在冰岛正式运营&#xff0c;这一消息引起了广泛关注。本文将深入探讨捕集二氧化碳技术&#xff08;C…