数学建模-2022年亚太赛C题(含思路过程和代码)

news2024/11/18 16:35:43

目录

一、题目以及大概的思路

二、数据预处理

 三、预测模型

四、全球变暖的相关性分析

五、赛后总结


一、题目以及大概的思路

       先对数据进行无量纲化处理,根据所给不确定度与数据,计算出相对不确定度,并将其异常点剔除,通常情况下相对不确定度不超过百分之5,对于剩下有效数据,按照不同地区每10年进行取值,这里可以采用平均值、标准值代替,或者进一步考虑四季平均气温不同进一步处理。结合同比增长率,判断每隔十年以来气温的升幅变化趋势,判断2022年3月导致的升幅是否大于以往十年。

(这个地方似乎有不同的理解,是仅2022年3月的升幅与2012-2022年比,还是比以往的任何十年。题目中的一个any让解题方法出现偏差)

       接着是温度预测模型,可以采用时间序列分析、回归预测、灰色系统预测、深度学习等等

方法可以参考我之前的文章:数学建模--预测类模型_派大星先生c的博客-CSDN博客_模型预测

       对比模型的的准确性得出第一题的结论。

      第二题建立个数学模型来分析全球温度、时间和位置之间的关系,首先可以采用的是因子分析。通过找寻数据 ,利用主成分分析法,考虑到温室气体的排放是导致全球气候变暖的主要原因,统计这些数据随时间的变化规律,根据主成分分析的一般步骤,进行降维处理,根据贡献率选取合适的主成分建立多元线性回归模型,并通过已有数据对拟合优度进行评估。

二、数据预处理

利用excel将所给的数据集处理成有月平均气温和年平均气温的表格便于后续计算

通过 excel的筛选器功能可以得到每10年的三月份气温

 分析得到图表,同时通过spsspro做独立样本T检验得出具有显著差异 从而得出题目结果。

 三、预测模型

预测模型我们选用了时间序列模型和LSTM神经网络进行预测

将年份和年平均气温选出

 通过SPSSPRO进行时间序列分析

 R方大概在0.8左右,拟合度较高基本满足题目需求,然后向后预测2050、2100年的年平均气温。

接着用lstm代码实现预测

import numpy
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.models import Sequential, load_model

# 将整型变为float
dataset = dataset.astype('float32')
def mean_absolute_percentage_error(y_true, y_pred): 

    return np.mean(np.abs((y_true - y_pred) / y_true)) * 100 
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)
test_size = -8
trainlist = dataset[:test_size]
testlist = dataset[test_size:]
 
def create_dataset(dataset, look_back):
#这里的look_back与timestep相同
    dataX, dataY = [], []
    for i in range(len(dataset)-look_back):
        a = dataset[i:(i+look_back)]
        dataX.append(a)
        dataY.append(dataset[i + look_back])
    return numpy.array(dataX),numpy.array(dataY)


#训练数据太少 look_back并不能过大
look_back = 1
trainX,trainY  = create_dataset(trainlist,look_back)
testX,testY = create_dataset(testlist,look_back)
trainX = numpy.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
testX = numpy.reshape(testX, (testX.shape[0], testX.shape[1] ,1 ))
# create and fit the LSTM network
model = Sequential()
model.add(LSTM(4, input_shape=(None,1)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2)
# model.save(os.path.join("DATA","Test" + ".h5"))
# make predictions
 

#%%

#模型验证
#model = load_model(os.path.join("DATA","Test" + ".h5"))
trainPredict = model.predict(trainX)
testPredict = model.predict(testX)
 
#反归一化
trainPredict_ = scaler.inverse_transform(trainPredict)
trainY_ = scaler.inverse_transform(trainY)
testPredict_ = scaler.inverse_transform(testPredict)
testY_ = scaler.inverse_transform(testY)

#%%

from sklearn.metrics import mean_squared_error,mean_absolute_error

def score(y_true, y_pre):
    # MAPE
    print("MAPE :")
    print(mean_absolute_percentage_error(y_true, y_pre)) 
    # RMSE
    print("RMSE :")
    print(np.sqrt(mean_squared_error(y_true, y_pre))) 
    # MAE
    print("MAE :")
    print(mean_absolute_error(y_true, y_pre)) 
    # # R2
    # print("R2 :")
    # print(np.abs(r2_score(y_true,y_pre)))

    

#%%

score(trainPredict_,trainY_)

#%%

score(testPredict_,testY_)

#%%

df['Year'].values.astype('float32')[:test_size].shape

#%%

plt.plot(df['Year'].values.astype('float32')[:test_size-1],trainY_, label='observed data')
plt.plot(df['Year'].values.astype('float32')[:test_size-1],trainPredict_, label='LSTM')
plt.xlabel( '年份')
plt.ylabel( '平均温度')
plt.title( '训练集平均温度情况')
plt.savefig('./Q1/训练集平均温度情况.jpg') 
plt.show()

#%%

plt.plot(df['Year'].values.astype('float32')[test_size+1:],testY_, label='observed data')
plt.plot(df['Year'].values.astype('float32')[test_size+1:],testPredict_, label='LSTM')
plt.xlabel( '年份')
plt.ylabel( '平均温度')
plt.title( '测试集平均温度情况')
plt.savefig('./Q1/测试集平均温度情况.jpg') 
plt.show()

得到拟合图像

 

比较模型的mape、rmse、mae得出ARIMA模型(时间序列模型)更好一点。

(可能是我们在这个地方的数据处理有问题,导致数据量很少,在用深度学习的方法时甚至不及线性回归等常规预测方法)

四、全球变暖的相关性分析

我们根据大多数网上的思路,将数据按照国家、大洲、南北半球等方式进行区分

分别进行了Kendall一致性检验

 

 不管是哪一种区分 都充分证明了,全球变暖与地区时间的相关性。

后面使用的纤维束模型分析了自然灾害中哪一个因素影响全球变暖最多。(这里如果数据合适也可以使用主成分分析,最为一个简单的评价类模型考虑)

五、赛后总结

对于此次APCMC亚太赛C题来讲,整体的难度不是很大,拿到题目不到一个上午就出现了很多思路,并且在解题过程中也没有太大的难点。如果数据处理的相对较好的情况下,题目答案很容易就解答出来,但是在运用excel和lstm模型的时候出现了一些问题,虽然不影响最后完赛,还是给我们一个警醒,更多的还是要参考一些比较成熟的论文,打磨词句,才能获得一个不错的成绩。

后续主要加强数据处理和论文撰写排版的能力。

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

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

相关文章

[附源码]计算机毕业设计病房管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Cisco ASA防火墙——远程控制与多安全区域

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.远程管理ASA 1.配置Telnet接入 2.配置SSH接入 3.配置ASDM接…

Java数据结构与Java算法学习Day02---算法排序

目录 一、简单排序 1.1Comparable接口介绍 11 1.2冒泡排序 12、13、14 1.3选择排序 15、16、17 1.4插入排序 18、19、20 二、高级排序 2.1希尔排序 21、22、23 2.2归并排序 24 2.2.1递归 24 2.2.2归并排序 25 2.3快速排序 32 2.3.1快速排序的原理 32 2.3.2快速排序…

这可能是我见过最可爱的乒乓女孩了!

3D角色艺术家Carlos Sanz曾在U-tab学习动画,在CICE学习角色创作,现在正致力于创作她的作品集并成为3D动画行业的一员,本文是作者在ZBrush和Maya等软件中设计乒乓女孩角色造型的教程: 首先给大家做个自我介绍。我叫Carlos Sanz&am…

[附源码]计算机毕业设计springboot网上电影购票系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

(阅读笔记)急性卒中CT灌注分析在临床中的实际问题

(阅读笔记)急性卒中CT灌注分析在临床中的实际问题IntroductionUnderstanding the basics of CTP acquisition and processingCTP thresholds and quantificationPitfalls of perfusion imagingTechnical pitfallsPatient motionContrast bolusRadiationC…

CMMI和SPCA是一样的吗?有什么区别

CMMI资质相信有很多企业都了解了,对于SPCA可能有些企业是比较陌生的,不太了解什么是SPCA,简单来说可以理解为CMMI是国外的资质,而SPCA可以理解为国内的,那现在就跟随同邦信息科技的小编一起来看看具体的区别是哪些吧 C…

进程以及线程

目录 🐼今日良言:希望是生命的源泉,失去它生命就会枯萎。 🐯一、进程 🐕1.概念 🐕2.PCB 🐕3.进程调度 🐭二、线程 🐑1.概念 🐇三、进程和线程的联系和区别 &…

Qt实现抽奖程序

一、简介 该程序命名为Lucky,实现的功能如下: 1. 加载抽奖人员名单,并保存加载路径; 2. 单击左键或者点击ctrls开始抽奖,并滚动显示人员名单,显示的人员名单格式为 部门-姓名。 3. 单击左键或者点击ctrls…

了解并应用数字隔离器的安全限值

介绍 电流隔离在工业和汽车系统中很常见,作为防止高电压或抵消接地电位差的一种手段。设计人员传统上使用光耦合器进行隔离,但在过去几年中,使用电容和磁隔离的数字隔离器变得越来越流行。对于任何此类隔离器,了解其安全限值的重…

关于如何找环形链表的入环点

目录一、判断一个链表是否有环二、找到链表入环的第一个节点一、判断一个链表是否有环 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的…

菇多糖-聚乙二醇-大环配体NOTA,大环配体NOTA-PEG-香菇多糖

菇多糖-聚乙二醇-大环配体NOTA,大环配体NOTA-PEG-香菇多糖 中文名称:香菇多糖-大环配体NOTA 英文名称:Lentinan-NOTA 别称:NOTA修饰香菇多糖,NOTA-香菇多糖 PEG接枝修饰香菇多糖 Lentinan-PEG-NOTA 香菇多糖-聚乙…

设置Excel表格“只读模式”的两种方法

Excel表格的“只读模式”可以帮助我们防止意外更改表格,根据不同需求,表格可以设置“有密码”和“无密码”的两种“只读模式”,下面来说说具体设置方法。 一、无密码“只读模式” 如果主要是想防止自己意外修改了表格,可以设置没…

Jenkins拉分支代码 + tortoiseGit删除分支

日常部署测试代码都使用Jenkins代码手工上传代码,主要减减减减工作量,提高工作效率; 一、安装Git、git-parameter插件及配置方法,安装方法忽略一万字,解决不了绕道度娘问问 二、创建项目,设置参数 This pr…

[操作系统笔记]基本分页存储管理

内容系听课复习所做笔记,图例多来自课程截图 基本分页存储管理 两次访存,第一次查页表,第二次访问目标内存单元 将内存空间分为一个个大小相等的分区(比如每个分区4KB),每个分区就是一个“页框”&#xff0…

[附源码]计算机毕业设计springboot物业管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

澜沧古茶在港交所上市申请失效:收入不及八马茶业,股东提前套现

12月1日,贝多财经从港交所披露易了解到,普洱澜沧古茶股份有限公司(下称“澜沧古茶”)的上市申请材料失效,目前已无法正常查看或下载。据贝多财经了解,“失效”并不意味着上市失败。 事实上,招股…

selnium操作输入框无法输入内容

问题描述 分析问题 1、开始以为等待时间问题没有找到元素(没解决) 2、使用js操作元素(没解决) 3、定位到光标元素 4、种cookie直接走接口调用 问题描述 selenium.common.exceptions.ElementNotInteractableException: Mess…

企业数据图表- FineReport函数计算组成和语法概述

1. 概述 1.1 版本 1.2 功能简介 在设计模板时用户需要频繁的使用公式函数,例如:求和、求个数、做判断等等。 本文介绍函数的计算组成和语法。 2. 计算语法 2.1 概览 组成部分 语法 示例 函数 SUM(合同金额)、SUM(A1) 数据列 可输入有数据列的…

基于Vue+nodejs+Element-ui的聊天框项目

目录一、项目简介二、环境介绍三、系统展示四、视频功能展示五、前端核心代码展示六、MySQL 数据库创建功能展示七、node.js 核心代码八、总结一、项目简介 本项目基于纯前端(移动端)技术开发一个聊天系统,界面美观大方,采用Node…