已經(jīng)寫出國賽E題黃河水沙監(jiān)測數(shù)據(jù)分析完整代碼分析+處理結(jié)果+思路分析(30+頁),包括數(shù)據(jù)預(yù)處理、數(shù)據(jù)可視化(分組數(shù)據(jù)分布圖可視化、相關(guān)系數(shù)熱力圖可視化、散點圖可視化)、回歸模型(決策樹回歸模型、隨機森林回歸、GBDT回歸、支持向量機回歸、全連接神經(jīng)網(wǎng)絡(luò)),后續(xù)持續(xù)更新。
完整代碼+結(jié)果+思路文檔下載地址見文末
E題 黃河水沙監(jiān)測數(shù)據(jù)分析.... 2
問題1 分析與研究.... 3
目標1: 含沙量與時間、水位、水流量的關(guān)系.... 3
目標2: 并估算近6年該水文站的年總水流量和年總排沙量.... 3
第一步:結(jié)合問題1的目標,對數(shù)據(jù)進行與處理操作.... 3
第二步:數(shù)據(jù)可視化分析,查看數(shù)據(jù)之間的關(guān)系.... 4
分組數(shù)據(jù)分布圖可視化.... 6
相關(guān)系數(shù)熱力圖可視化.... 12
散點圖可視化.... 14
目標1:解決方案,建立回歸模型,分析他們之間的關(guān)系,預(yù)測含沙量.... 23
模型1:決策樹回歸模型.... 24
模型2:隨機森林回歸.... 27
模型3: GBDT回歸.... 29
模型4:支持向量機回歸.... 29
模型5:全連接神經(jīng)網(wǎng)絡(luò).... 30
問題2:解決方案,(估算近6年該水文站的年總水流量和年總排沙量)31
國賽E題數(shù)學(xué)建模題目如下:黃河是中華民族的母親河。研究黃河水沙通量的變化規(guī)律對沿黃流域的環(huán)境治理、氣候變化和人民生活的影響,以及對優(yōu)化黃河流域水資源分配、協(xié)調(diào)人地關(guān)系、調(diào)水調(diào)沙、防洪減災(zāi)等方面都具有重要的理論指導(dǎo)意義。
附件1給出了位于小浪底水庫下游黃河某水文站近 6年的水位、水流量與含沙量的實際監(jiān)測數(shù)據(jù),附件 2給出了該水文站近 6年黃河斷面的測量數(shù)據(jù),附件 3給出了該水文站部分監(jiān)測點的相關(guān)數(shù)據(jù)。請建立數(shù)學(xué)模型研究以下問題:
問題1 研究該水文站黃河水的含沙量與時間、水位、水流量的關(guān)系,并估算近 6年該水文站的年總水流量和年總排沙量。
問題2 分析近 6年該水文站水沙通量的突變性、季節(jié)性和周期性等特性,研究水沙通量的變化規(guī)律。
問題3 根據(jù)該水文站水沙通量的變化規(guī)律, 預(yù)測分析該水文站未來兩年水沙通量的變化趨勢 ,并 為該水文站制訂未來兩年最優(yōu)的采樣監(jiān)測方案(采樣監(jiān)測次數(shù)和具體時間等),使其既能及時掌握水沙通量的動態(tài)變化情況,又能最大程度地減少監(jiān)測成本資源。
問題4 根據(jù)該水文站的水沙通量和河底高程的變化情況,分析每年 6 7月小浪底水庫進行“調(diào)水調(diào)沙”的實際效果。如果不進行“調(diào)水調(diào)沙”, 10年以后該水文站的河底高程會如何?
問題分析
問題1 研究該水文站黃河水的含沙量與時間、水位、水流量的關(guān)系,并估算近 6年該水文站的年總水流量和年總排沙量。(完整文檔和代碼見文末地址)
首先導(dǎo)入相關(guān)庫:
## 設(shè)置圖像顯示情況
%config InlineBackend.figure_format = "retina"
%matplotlib inline
import seaborn as sns ## 設(shè)置中文字體顯示
sns.set(font= "SimSun",style="whitegrid",font_scale=1.4)
import matplotlib ## 解決坐標軸的負號顯示問題
matplotlib.rcParams['axes.unicode_minus']=False
## 導(dǎo)入需要的庫
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國賽數(shù)學(xué)建模E題問題1分析如下
首先是目標1: 含沙量與時間、水位、水流量的關(guān)系
子問題:含沙量與時間的關(guān)系、含沙量與水位的關(guān)系、含沙量與水流量的關(guān)系(注意,可以分別分析兩者之間的關(guān)系建模,也可以分析一個和多個變量之間關(guān)系的建模)
分析方式和步驟可以是:(1)數(shù)據(jù)清洗與整理,得到感興趣的數(shù)據(jù),利用可視化輔助分析之間的關(guān)系,利用相關(guān)性分析、回歸分析等模型,建立數(shù)據(jù)之間的定量關(guān)系。(完整文檔和代碼見文末地址)
接著是目標2: 并估算近6年該水文站的年總水流量和年總排沙量
子問題:總排沙量理論上可以通過水流量和含沙量計算得到。因此重點還是分析年總水流量與含沙量之間的情況。
分析方式和步驟可以是:(1)數(shù)據(jù)清洗與整理,得到感興趣的數(shù)據(jù),利用可視化輔助分析之間的關(guān)系,通過相應(yīng)的計算,獲取目標數(shù)據(jù)。
第一步:結(jié)合問題1的目標,對數(shù)據(jù)進行與處理操作
結(jié)合附件1中給出的數(shù)據(jù)特點,我們將提供的的數(shù)據(jù)量計精確到以天為單位的精度。
第二步:數(shù)據(jù)可視化分析,查看數(shù)據(jù)之間的關(guān)系
## 根據(jù)時間變量變化的數(shù)據(jù)散點圖可視化
## 水位的變化情況
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()
## 可以發(fā)現(xiàn)在含沙量等特征的變化情況
分組數(shù)據(jù)分布圖可視化
針對含沙量數(shù)據(jù),進一步的分析其隨時間年份上的變化趨勢
sns.swarmplot(data=dfq1, x="年", y="含沙量", hue="年")
plt.xlabel("年")
plt.ylabel("含沙量(kg/"+"$m^3$"+")")
plt.title("")
plt.savefig('figs/含沙量數(shù)據(jù)隨時間年份上的變化趨勢.png', dpi=300, bbox_inches='tight')
plt.show()
## 可以發(fā)現(xiàn)2018-2021年,含沙量普遍偏高
## 針對含沙量數(shù)據(jù),進一步的分析其隨時間月份上的變化趨勢
plt.figure(figsize=(12,6))
sns.swarmplot(data=dfq1, x="月", y="含沙量", hue="月")
plt.xlabel("月")
plt.ylabel("含沙量(kg/"+"$m^3$"+")")
plt.title("")
plt.savefig('figs/含沙量數(shù)據(jù)隨時間月份上的變化趨勢.png', dpi=300, bbox_inches='tight')
plt.show()
從可視化圖像,可以發(fā)現(xiàn)含沙量明顯的受到年、月兩個變量的影響,即受到時間的影響(完整代碼見文末地址)
相關(guān)系數(shù)熱力圖可視化
(完整代碼見文末地址)
Index(['年', '月', '日', '水位', '流量', '含沙量', '日期'], dtype='object')
## 可以計算幾個特征之間的相關(guān)系數(shù),從而展示相關(guān)性的大小
## 也可以特征之間的秩相關(guān)系數(shù)
corrdf = dfq1[["年","月","日","水位","流量","含沙量"]]
corrdfval = corrdf.corr(method = "pearson")
print(corrdfval)
## 可視化相關(guān)系數(shù)熱力圖
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("相關(guān)性(pearson)")
plt.savefig('figs/相關(guān)系數(shù)熱力圖.png', dpi=300, bbox_inches='tight')
plt.show()
可以發(fā)現(xiàn), 含沙量與日無關(guān),月年和月是弱相關(guān)性,與水位、流量的相關(guān)性較強(這里分析的是線性關(guān)系)
散點圖可視化
2023數(shù)學(xué)建模國賽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()
含沙量和流量之間可能并不是簡單的線性關(guān)系,還受到其他特征的影響。而且和前面與水位之間的數(shù)據(jù)分布很相似(可能使用其中的一個就能很好的表達含沙量)
目標1:解決方案,建立回歸模型,分析他們之間的關(guān)系,預(yù)測含沙量
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:決策樹回歸模型
建立決策樹回歸模型對數(shù)據(jù)進行預(yù)測,使用默認參數(shù)
從模型對因變量的預(yù)測效果可以知道,模型很好的預(yù)測了數(shù)據(jù)的變化趨勢
分析不同深度下在訓(xùn)練集和測試機上的預(yù)測精度
除了模型1:決策樹回歸模型外,后續(xù)還有模型2:隨機森林回歸、模型3: GBDT回歸、模型4:支持向量機回歸、模型5:全連接神經(jīng)網(wǎng)絡(luò)。文章來源:http://www.zghlxwxcb.cn/news/detail-700500.html
完整代碼+結(jié)果+思路文檔下載:2023數(shù)學(xué)建模國賽E題完整代碼和文檔文章來源地址http://www.zghlxwxcb.cn/news/detail-700500.html
到了這里,關(guān)于2023數(shù)學(xué)建模國賽E題黃河水沙監(jiān)測數(shù)據(jù)分析完整代碼分析+處理結(jié)果+思路文檔的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!