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.mzph.cn/pingmian/15795.shtml

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

相关文章

网络模型—BIO、NIO、IO多路复用、信号驱动IO、异步IO

一、用户空间和内核空间 以Linux系统为例,ubuntu和CentOS是Linux的两种比较常见的发行版,任何Linux发行版,其系统内核都是Linux。我们在发行版上操作应用,如Redis、Mysql等其实是无法直接执行访问计算机硬件(如cpu,内存…

勒索软件分析_Conti

0. Conti介绍 勒索软件即服务(Ransomware as a Service,RaaS)变体 Conti 推出还不到两年,已经进行了第七次迭代。Conti被证明是一种敏捷而熟练的恶意软件威胁,能够自主和引导操作,并具有无与伦比的加密速度…

详细分析Element中的Drawer(附Demo)

目录 前言1. 基本知识2. Demo2.1 基本用法2.2 不同方向2.3 自定义大小2.4 嵌入表单2.5 嵌套抽屉 3. 实战4. Element Plus(Drawer) 前言 对于该组件针对Vue2比较多,而Element Plus中的Drawer针对Vue3比较多 此处的Demo主要偏向Vue2 后续的El…

探索 Mistral 新发布的具有原生函数调用功能的 7B 模型【附notebook文件】

引言 Mistral 发布了新版的 7B 模型,这次更新引入了原生函数调用功能。对于开发者和 AI 爱好者来说,这一更新极具吸引力,因为它增强了模型的功能和实用性。在这篇博客中,我们将深入探讨这些新功能,展示如何使用该模型…

小程序-修改用户头像

1、调用拍照 / 选择图片 // 修改头像 const onAvatarChange () > { // 调用拍照 / 选择图片 uni.chooseMedia({ // 文件个数 count: 1, // 文件类型 mediaType: [image], success: (res) > { console.log(res) // 本地临时文件路径 (本地路径) const { tempFilePath } …

wordpress主题模板兔Modown 9.1开心版附送erphpdown v17.1插件

Modown 9.1开心版是一款模板兔开发的wordpress主题可,持续更新多年,优秀的资源下载类主题该模板基于Erphpdown,可以销售软件、视频教程、文章等等,通过主题和插件结合可以实现付费下载、付费阅读等功能,配合模板兔的一…

数组-下一个排列

一、题目描述 二、解题思路 1.反向遍历当前排列,比如 排列A[a,b,c,d,e,f...] ,当遍历到e时,说明以 a,b,c,d,e为前缀的排列中不存在A排列的下一个排列。 2.把e(位置设为idx)和后面的元素作比较: 2.1 如果有…

【数据结构(邓俊辉)学习笔记】二叉树02——遍历

文章目录 0.概述1. 先序遍历1.1 递归版1.1.1 实现1.1.2 时间复杂度1.1.3 问题 1.2 迭代版11.3 迭代版21.3.1 思路1.3.2 实现1.3.3 实例 2. 中序遍历2.1 递归形式2.2 迭代形式2.2.1 观察2.2.2 思路(抽象总结)2.2.3 构思 实现2.2.4 分摊分析 3. 后序遍历3…

网络原理 一

一、协议 网络通信中,协议是非常重要的概念. 协议进行了分层,此处就是按照这几层顺序来介绍每一层中的核心协议. 应用层,就对应着应用程序,是程序员打交道最多的一层,调用系统提供的 网络api 写出的代码都是基于应用层的. 应用层这里当然也有很多现成的协议,但更多的还是,程…

JVM(三)

在上一篇中,介绍了JVM组件中的类加载器,以及相关的双亲委派机制。这一篇主要介绍运行时的数据区域 JVM架构图: JDK1.8后的内存结构: (图片来源:https://github.com/Seazean/JavaNote) 而在运行时数据区域中&#…

Vivado报错集合

Synth 8-5535 报错代码 [Synth 8-5535] port <clk_0> has illegal connections. It is illegal to have a port connected to an input buffer and other components. The following are the port connections : Input Buffer:Port I of instance clkin1_ibufg(IBUF) i…

SwiftUI中List的样式及使用详解(添加、移动、删除、自定义滑动)

SwiftUI中的List可是个好东西&#xff0c;它用于显示可滚动列表的视图容器&#xff0c;类似于UITableView。在List中可以显示静态或动态的数据&#xff0c;并支持垂直滚动。List是一个数据驱动的视图&#xff0c;当数据发生变化时&#xff0c;列表会自动更新。 针对List&#x…

树莓派4B 有电但无法启动

试过多个SD卡&#xff0c;反复烧系统镜像都无法启动。接HDMI显示器没有信号输出&#xff0c;上电后PWR红灯长亮&#xff0c;ACT绿灯闪一下就不亮了&#xff0c;GPIO几个电源脚有电&#xff0c;芯片会发热&#xff0c;测量多个TP点电压好像都正常。 ……

华为造车布局全曝光,对标奔驰、迈巴赫等

文 | Auto芯球 作者 | 雷慢 这一刻&#xff0c;我承认我格局小了&#xff0c; 就在刚刚&#xff0c;余承东曝光了华为智选车的布局计划&#xff0c; 华为问界、智界、享界等&#xff0c;将全面对标奔驰、迈巴赫、劳斯莱斯等车系&#xff0c; 这布局&#xff0c;确实是世界…

揭秘《庆余年算法番外篇》:范闲如何使用维吉尼亚密码解密二皇子密信

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

【yolov10】使用自己的数据集训练目标检测模型

【yolov10】使用自己的数据集训练目标检测模型 一、anaconda安装二、环境配置三、数据集制作1、labelimg的安装2、使用labelimg 四、正片1、下载yolov10源码2、数据集目录3、训练4、推理 一、anaconda安装 直接参考前一篇博客&#xff1a; https://blog.csdn.net/m0_71523511/…

击穿盲点——【网络安全】社会工程学中的网络欺骗

社会工程学起源于上世纪60年代左右&#xff0c;是一种通过人际交流的方式来获得情报的非技术渗透手段。这种手段无需过多技术要求&#xff0c;却非常有效&#xff0c;目前已成为危害企业网络安全的重大威胁之一。著名黑客凯文米特尼克在《反欺骗的艺术》中曾提到&#xff0c;人…

SpringBoot+Vue开发记录(七)-- 跨域文件与Restful风格

本篇文章的主要内容是关于项目的跨域配置和给项目添加restful风格接口。 重点是文件粘贴 文章目录 一、 跨域二、Restful风格1. 什么是restful风格&#xff1f;2. 项目文件结构3. 新建文件4. 在Controller中进行修改 一、 跨域 跨域问题暂时也就那样&#xff0c;解决方法就是…

云计算-No-SQL 数据库 (No-SQL Database)

DynamoDB简介 (Introduction to DynamoDB) AWS DynamoDB 是亚马逊提供的一种 NoSQL 数据库&#xff0c;适用于需要快速访问的大规模应用程序。NoSQL 数据库指的是非关系型数据库&#xff08;或许应该称为“非关系数据库”&#xff09;。关系型数据库是你之前可能使用过的熟悉的…

深入Django项目实战与最佳实践

title: 深入Django项目实战与最佳实践 date: 2024/5/19 21:41:38 updated: 2024/5/19 21:41:38 categories: 后端开发 tags: Django 基础项目实战最佳实践数据库配置静态文件部署高级特性 第一章&#xff1a;Django项目架构与设计原则 Django框架概述 Django是一个高级的P…