2023数学建模国赛E题黄河水沙监测数据分析完整代码分析+处理结果+思路文档
已经写出国赛E题黄河水沙监测数据分析完整代码分析+处理结果+思路分析(30+页),包括数据预处理、数据可视化(分组数据分布图可视化、相关系数热力图可视化、散点图可视化)、回归模型(决策树回归模型、随机森林回归、GBDT回归、支持向量机回归、全连接神经网络),后续持续更新。
完整代码+结果+思路文档下载地址见文末
E题 黄河水沙监测数据分析.... 2
问题1 分析与研究.... 3
目标1: 含沙量与时间、水位、水流量的关系.... 3
目标2: 并估算近6年该水文站的年总水流量和年总排沙量.... 3
第一步:结合问题1的目标,对数据进行与处理操作.... 3
第二步:数据可视化分析,查看数据之间的关系.... 4
分组数据分布图可视化.... 6
相关系数热力图可视化.... 12
散点图可视化.... 14
目标1:解决方案,建立回归模型,分析他们之间的关系,预测含沙量.... 23
模型1:决策树回归模型.... 24
模型2:随机森林回归.... 27
模型3: GBDT回归.... 29
模型4:支持向量机回归.... 29
模型5:全连接神经网络.... 30
问题2:解决方案,(估算近6年该水文站的年总水流量和年总排沙量)31
国赛E题数学建模题目如下:黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变化和人民生活的影响,以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾等方面都具有重要的理论指导意义。
附件1给出了位于小浪底水库下游黄河某水文站近 6年的水位、水流量与含沙量的实际监测数据,附件 2给出了该水文站近 6年黄河断面的测量数据,附件 3给出了该水文站部分监测点的相关数据。请建立数学模型研究以下问题:
问题1 研究该水文站黄河水的含沙量与时间、水位、水流量的关系,并估算近 6年该水文站的年总水流量和年总排沙量。
问题2 分析近 6年该水文站水沙通量的突变性、季节性和周期性等特性,研究水沙通量的变化规律。
问题3 根据该水文站水沙通量的变化规律, 预测分析该水文站未来两年水沙通量的变化趋势 ,并 为该水文站制订未来两年最优的采样监测方案(采样监测次数和具体时间等),使其既能及时掌握水沙通量的动态变化情况,又能最大程度地减少监测成本资源。
问题4 根据该水文站的水沙通量和河底高程的变化情况,分析每年 6 7月小浪底水库进行“调水调沙”的实际效果。如果不进行“调水调沙”, 10年以后该水文站的河底高程会如何?
问题分析
问题1 研究该水文站黄河水的含沙量与时间、水位、水流量的关系,并估算近 6年该水文站的年总水流量和年总排沙量。(完整文档和代码见文末地址)
首先导入相关库:
## 设置图像显示情况
%config InlineBackend.figure_format = "retina"
%matplotlib inline
import seaborn as sns ## 设置中文字体显示
sns.set(font= "SimSun",style="whitegrid",font_scale=1.4)
import matplotlib ## 解决坐标轴的负号显示问题
matplotlib.rcParams['axes.unicode_minus']=False
## 导入需要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import missingno as msno
from scipy import stats
import statsmodels.api as sm
import statsmodels.formula.api as smf
from statsmodels.stats.multicomp import pairwise_tukeyhsd
import plotly.express as px## 忽略提醒
import warnings
warnings.filterwarnings("ignore")
问题1 分析与研究
2023国赛数学建模E题问题1分析如下
首先是目标1: 含沙量与时间、水位、水流量的关系
子问题:含沙量与时间的关系、含沙量与水位的关系、含沙量与水流量的关系(注意,可以分别分析两者之间的关系建模,也可以分析一个和多个变量之间关系的建模)
分析方式和步骤可以是:(1)数据清洗与整理,得到感兴趣的数据,利用可视化辅助分析之间的关系,利用相关性分析、回归分析等模型,建立数据之间的定量关系。(完整文档和代码见文末地址)
接着是目标2: 并估算近6年该水文站的年总水流量和年总排沙量
子问题:总排沙量理论上可以通过水流量和含沙量计算得到。因此重点还是分析年总水流量与含沙量之间的情况。
分析方式和步骤可以是:(1)数据清洗与整理,得到感兴趣的数据,利用可视化辅助分析之间的关系,通过相应的计算,获取目标数据。
第一步:结合问题1的目标,对数据进行与处理操作
结合附件1中给出的数据特点,我们将提供的的数据量计精确到以天为单位的精度。
第二步:数据可视化分析,查看数据之间的关系
## 根据时间变量变化的数据散点图可视化## 水位的变化情况
plt.figure(figsize=(12,3))
p = sns.lineplot(data=dfq1, x="日期", y="水位",lw = 2)
plt.xlabel("时间")
plt.ylabel("水位(m)")
plt.title("")
plt.savefig('figs/水位的变化情况.png', dpi=300, bbox_inches='tight')
plt.show()## 流量的变化情况
plt.figure(figsize=(12,3))
p = sns.lineplot(data=dfq1, x="日期", y="流量",lw = 2)
plt.xlabel("时间")
plt.ylabel("流量("+"$m^3$"+"/s)")
plt.title("")
plt.savefig('figs/流量的变化情况.png', dpi=300, bbox_inches='tight')
plt.show()## 含沙量的变化情况
plt.figure(figsize=(12,3))
p = sns.lineplot(data=dfq1, x="日期", y="含沙量",lw = 2)
plt.xlabel("时间")
plt.ylabel("含沙量(kg/"+"$m^3$"+")")
plt.title("")
plt.savefig('figs/含沙量的变化情况.png',dpi=300,bbox_inches='tight')
plt.show()## 可以发现在含沙量等特征的变化情况
分组数据分布图可视化
针对含沙量数据,进一步的分析其随时间年份上的变化趋势
sns.swarmplot(data=dfq1, x="年", y="含沙量", hue="年")
plt.xlabel("年")
plt.ylabel("含沙量(kg/"+"$m^3$"+")")
plt.title("")
plt.savefig('figs/含沙量数据随时间年份上的变化趋势.png', dpi=300, bbox_inches='tight')
plt.show()## 可以发现2018-2021年,含沙量普遍偏高## 针对含沙量数据,进一步的分析其随时间月份上的变化趋势
plt.figure(figsize=(12,6))
sns.swarmplot(data=dfq1, x="月", y="含沙量", hue="月")
plt.xlabel("月")
plt.ylabel("含沙量(kg/"+"$m^3$"+")")
plt.title("")
plt.savefig('figs/含沙量数据随时间月份上的变化趋势.png', dpi=300, bbox_inches='tight')
plt.show()
从可视化图像,可以发现含沙量明显的受到年、月两个变量的影响,即受到时间的影响(完整代码见文末地址)
相关系数热力图可视化
(完整代码见文末地址)
Index(['年', '月', '日', '水位', '流量', '含沙量', '日期'], dtype='object')## 可以计算几个特征之间的相关系数,从而展示相关性的大小## 也可以特征之间的秩相关系数
corrdf = dfq1[["年","月","日","水位","流量","含沙量"]]
corrdfval = corrdf.corr(method = "pearson")
print(corrdfval)
## 可视化相关系数热力图
plt.figure(figsize=(10,8))
ax = sns.heatmap(corrdfval,square=True,annot=True,fmt = ".2f",linewidths=.5,cmap="YlGnBu",cbar_kws={"fraction":0.046, "pad":0.03})
ax.set_title("相关性(pearson)")
plt.savefig('figs/相关系数热力图.png', dpi=300, bbox_inches='tight')
plt.show()
可以发现, 含沙量与日无关,月年和月是弱相关性,与水位、流量的相关性较强(这里分析的是线性关系)
散点图可视化
2023数学建模国赛E题:可视化水位与含沙量之间的散点图
(完整代码见文末地址)
plt.figure(figsize=(12,6))
sns.scatterplot(data=dfq1,x="水位", y="含沙量",palette="Set1",s = 60)
plt.xlabel("水位(m)")
plt.ylabel("含沙量(kg/"+"$m^3$"+")")
plt.title("")
plt.savefig('figs/水位与含沙量之间的散点图1.png', dpi=300, bbox_inches='tight')
plt.show()## 可视化 水位月含沙量之间的散点图
# plt.figure(figsize=(12,6))
sns.lmplot(data=dfq1,x="水位", y="含沙量", palette="Set1",height=6,aspect=1.5)
plt.xlabel("水位(m)")
plt.ylabel("含沙量(kg/"+"$m^3$"+")")
plt.title("")
plt.savefig('figs/水位与含沙量之间的散点图2.png', dpi=300, bbox_inches='tight')
plt.show()plt.figure(figsize=(12,6))
sns.scatterplot(data=dfq1,x="水位", y="含沙量", hue="年",palette="Set1",s = 60)
plt.xlabel("水位(m)")
plt.ylabel("含沙量(kg/"+"$m^3$"+")")
plt.title("")
plt.savefig('figs/水位与含沙量之间的散点图3.png', dpi=300, bbox_inches='tight')
plt.show()
含沙量和流量之间可能并不是简单的线性关系,还受到其他特征的影响。而且和前面与水位之间的数据分布很相似(可能使用其中的一个就能很好的表达含沙量)
目标1:解决方案,建立回归模型,分析他们之间的关系,预测含沙量
from sklearn.ensemble import RandomForestRegressor,GradientBoostingRegressor
from sklearn.svm import SVR,LinearSVR
from sklearn.tree import *
from sklearn.metrics import *
from sklearn.neural_network import MLPRegressor
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import graphviz
import pydotplus
from IPython.display import Image
from io import StringIO
模型1:决策树回归模型
建立决策树回归模型对数据进行预测,使用默认参数
从模型对因变量的预测效果可以知道,模型很好的预测了数据的变化趋势
分析不同深度下在训练集和测试机上的预测精度
除了模型1:决策树回归模型外,后续还有模型2:随机森林回归、模型3: GBDT回归、模型4:支持向量机回归、模型5:全连接神经网络。
完整代码+结果+思路文档下载:2023数学建模国赛E题完整代码和文档
相关文章:
2023数学建模国赛E题黄河水沙监测数据分析完整代码分析+处理结果+思路文档
已经写出国赛E题黄河水沙监测数据分析完整代码分析处理结果思路分析(30页),包括数据预处理、数据可视化(分组数据分布图可视化、相关系数热力图可视化、散点图可视化)、回归模型(决策树回归模型、随机森林回…...
玩转Mysql系列 - 第19篇:游标详解
这是Mysql系列第19篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 需求背景 当我们需要对一个select的查询结果进行遍历处理的时候,如何实现呢? 此时我们需要使…...
【量化分析】Python 布林线( Bollinger)概念
一、说明 布林线(BOLL),Bollinger Bands,利用统计原理,求出股价的标准差及其信赖区间,从而确定股价的波动范围及未来走势,利用波带显示股价的安全高低价位,因而也被称为布林带。 二、布林带基本概念 布林线…...
MySQL的权限管理与远程访问
MySQL的权限管理 1、授予权限 授权命令: grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名用户地址 identified by ‘连接口令’; 该权限如果发现没有该用户,则会直接新建一个用户。 比如 grant select,insert,delete,drop on atguigudb.…...
在Qt创建的UI中放一个显示点云的窗口(PCL+QT5)
1、首先在Qt Designer创建UI后,拖一个Widget窗口出来 2、在对象查看器中右击该Widget,选择提升窗口部件,如下操作: 3、把UI转出来放在VS项目中,其中你的UI代码头文件会自带QVTKOpenGLNativeWidget.h,当然你…...
element ui el-table分页多选功能
selection-change:当选择项发生变化时会触发该事件(当分页切换时,选中的数据都会自动清空) 一、在el-table中添加 :row-key“id” <el-table :data"tableData" border style"width: 95%" selection-change…...
理解网络通信的基础:OSI七层模型与TCP/IP五层模型
在今天的数字化世界中,网络通信已经成为我们日常生活和商业活动的重要组成部分。为了更好地理解和管理网络通信,网络工程师和管理员使用不同的模型来组织和解释网络协议和通信过程。本文将介绍两种最重要的网络模型:OSI七层模型和TCP/IP五层模…...
Python爬虫-爬取文档内容,如何去掉文档中的表格,并保存正文内容
前言 本文是该专栏的第58篇,后面会持续分享python爬虫干货知识,记得关注。 做过爬虫项目的同学,可能或多或少爬取过文档数据,比如说“政务网站,新闻网站,小说网站”等平台的文档数据。爬取文档数据,笔者这里就不过多详述,而本文,笔者将主要介绍在爬取文档数据的过程中…...
【使用Cpolar和Qchan搭建自己的个人图床】
文章目录 前言1. Qchan网站搭建1.1 Qchan下载和安装1.2 Qchan网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar云端设置2.2 Cpolar本地设置 3. 公网访问测试总结 前言 图床作为云存储的一项重要应用场景,在大量开发人员的努力下,已经开发出大…...
flutter解决多个类名重名问题
Try using ‘as prefix’ for one of the import directives, or hiding the name from all but one of the imports. Flutter遇到这种错误,意思是你自己的import的库的类名跟一另一个导入的库,或者系统的类名名字相同.解决方法,把自己的一个类名用as 加一个前缀,使用的时候 用…...
微信小程序 按钮颜色
<button type"primary">主要按钮样式类型</button> <button type"default">默认按钮样式类型</button> <button type"warn">警告按钮样式类型</button> <view>按钮plain是否镂空</view> <bu…...
【云原生】kubectl常用命令大全
目录 一、资源管理方法 kubectl 的命令大全 二、 kubectl常用命令大全 2.2 项目的生命周期:创建-->发布-->更新-->回滚-->删除 1、创建 kubectl create命令 2、发布 kubectl expose命令 3、更新 kubectl set 4、回滚 kubectl rollou…...
git pull
目录 git pull 原理: git pull遇到问题怎么解决: git pull 原理: git pull 是 Git 版本控制系统中的一个命令,用于从远程存储库更新本地工作目录。它实质上是两个命令的组合:git fetch 和 git merge。 当你执行 gi…...
C++学习之运算符与表达式
算数运算符 基本的算数运算有加法、减法、乘法、除法和取模(求余数),对应的算数运算符分别为:、-、*、/、%。至于用法,大家应该耳熟能详,这里不再过多赘述。 自增与自减运算符 运算符说明自增运算符&…...
vue使用谷歌地图实现地点查询
效果 代码 首先在index.html中引入谷歌地图资源 <script src"https://maps.googleapis.com/maps/api/js?key你的api密钥&librariesplaces"></script>页面中 <template><div class"pac-card div-style" id"pac-card"…...
前端该了解的网络知识
网络 前端开发需要了解的网络知识 URL URL(uniform resource locator,统一资源定位符)用于定位网络服务. URL是一个固定格式的字符串 它表达了: 从网络中哪台计算机(domain)中的哪个服务(port),获取服务器上资源的路径(path),以及要用什么样的协议通信(schema). 注意: 当…...
python3在虚拟环境实用vscode调试错误输出ModuleNotFoundError: No module named ‘django‘解决方法
Exception has occurred: ImportError Couldnt import Django. Are you sure its installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?File "/data/mountain-backend/src/manage.py", line 8, i…...
如何获得一个Oracle 23c免费开发者版
获取23c开发者版 简单介绍可参考这里。 获取数据库可以参考这篇文章Introducing Oracle Database 23c Free – Developer Release或这里。 Docker Image 这是最快的方法。在OCI上创建一个计算实例,然后就可以拉取image使用了。 docker的安装和配置不赘述了。 …...
机器学习策略二——优化深度学习系统
进行误差分析 (Carrying out error analysis) 如果你希望让学习算法能够胜任人类能做的任务,但你的学习算法还没有达到人类的表现,那么人工检查一下你的算法犯的错误也许可以让你了解接下来应该做什么。这个过程称为错误分析。 假设你正在调试猫分类器…...
Pytorch Advanced(三) Neural Style Transfer
神经风格迁移在之前的博客中已经用keras实现过了,比较复杂,keras版本。 这里用pytorch重新实现一次,原理图如下: from __future__ import division from torchvision import models from torchvision import transforms from PIL…...
英飞凌TC3xx--深度手撕HSM安全启动(三)--TC3xx HSM系统架构
今天聊TC3xx HSM系统,包括所用内核、UCB相关信息、Host和HSM交互方式。 1、HSM系统架构 下图来源于英飞凌官网培训材料。 TC3xx的HSM内核是一颗32位的ARM Cortex M3,主频可达100MHz,支持对称算法AES128、非对称算法PKC(Public Key Crypto) ECC256、Hash SHA2,以及T…...
黑马JVM总结(五)
(1)方法区 它是所有java虚拟机 线程共享的区,存储着跟类的结构相关的信息,类的成员变量,方法数据,成员方法,构造器方法,特殊方法(类的构造器) 方法区在虚拟机…...
C语言入门Day_18 判断和循坏的小结
目录 前言: 1.判断 2.循环 3.课堂笔记 4.思维导图 前言: 判断语句和循环语句都可以大致分为三个部分,第一个部分是固定的语法格式;第二部分是代码的执行顺序,第三部分是判断和循环成立与否的判断条件。 1.判断 1…...
mac 好用的工具推荐
mac 好用的工具推荐 落雪:全网的音乐畅听,下载地址:https://github.com/lyswhut/lx-music-desktopMotrix: 免费下载工具,下载地址:https://xclient.info/s/motrix.html#versionsDownie:视频下载工具&#x…...
星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
系列文章目录 星际争霸之小霸王之小蜜蜂(十一)--杀杀杀 星际争霸之小霸王之小蜜蜂(十)--鼠道 星际争霸之小霸王之小蜜蜂(九)--狂鼠之灾 星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大…...
【软件分析/静态分析】chapter8 课程11/12 指针分析—上下文敏感(Pointer Analysis - Context Sensitivity)
🔗 课程链接:李樾老师和谭天老师的: 南京大学《软件分析》课程11(Pointer Analysis - Context Sensitivity I)_哔哩哔哩_bilibili 南京大学《软件分析》课程12(Pointer Analysis - Context Sensitivity II&…...
时间复杂度与空间复杂度详解
时间复杂度与空间复杂度详解🦖 一、算法效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度 二、时间复杂度2.1 时间复杂度的定义2.2 大O的渐进表示法2.3 如何记录表示算法复杂度 三、空间复杂度3.1 空间复杂度的定义3.2 小试牛刀 一、算法效率 1.1 如何衡量一个算法…...
目录操作函数
mkdir函数 rmdir函数 删除空目录 rename函数 换名 chdir函数 修改当前的工作目录 getcwd函数 获取当前工作的路径...
PlantUML入门教程:画时序图
软件工程中会用到各种UML图,例如用例图、时序图等。那我们能不能像写代码一样去画图呢? 今天推荐一款软件工程师的作图利器--PlantUML,它能让你用写代码的方式快速画出UML图。 一、什么是PlantUML? PlantUML是一个允许你快速作出…...
C#范围运算符
C#8.0语法中,范围运算符是一种用于快速截取序列的运算符,其语法为 “start…end”,表示从序列的 “start” 索引处开始,一直截取到"end" 索引处为止(包括 “end” 索引处的元素)。范围运算符主要…...
哪个购物网站最便宜/设计一个公司网站多少钱
周虎摘 要:JWT(JsonWebToken)认证作为一种服务器端无状态验证方式,在分布式开发中得到了广泛的应用。但是,由于token信息的本身特点,支持的有效时间是固定的,当在token有效时间内用户操作没有完成,操作就会…...
湖南做网站公司/seo教学网站
要想在地址栏隐藏url传递的参数,不能直接隐藏,但有几下几个变通的方法. 使用类似Base64编码,将URL参数进行简单加密. 使用框架页; 使用POST方式传递数据; 使用Cookie传递数据; 下面主要介绍模拟表单提交的post方式: function post(URL, PARAMS) {var tem…...
如何做自己个人网站/兰州seo技术优化排名公司
sprintf是格式化字符串最常用的方式。vsprintf可以很方便的使用va_list,对应的宽字符版本就是vswprintf。在跨平台上使用vswprintf,于是噩梦开始了。支持最好的当然是windows,一点问题都没有。mac/ios上如果是宽字节的英文字符则是正常的,如果…...
如何规避电子政务门户网站建设教训/企业营销策划及推广
ssh工具下载地址: ssh secure file transfer http://download.csdn.net/detail/wyx100/9591076问题: ssh连接ubunt16.04系统出现错误: server responded “Algorithm negotiation failes” 原因: 服务器响应通过失败 解决方法&…...
个人网页设计欣赏网站/百度推广需要什么条件
2019独角兽企业重金招聘Python工程师标准>>> 0,自从接触了github后,我对语言、技术就看得很开了,不再拘泥于自己的技术能力,把发现、学习、积累优秀项目作为核心能力之一; 1、想学习下设计模式,…...