数学建模常用的数据处理方法及例子汇总(持续更新中)
常用的数据处理方法:
文章目录
- 常用的数据处理方法:
- 一、人口模型和数据拟合
- 1.1 指数型人数模型
- 1.2 阻滞型人口模型
- 二、神经网络方法
- 1. 多层向前神经网络原理介绍
- 2. Matlab相关函数介绍
- 3.神经网络实验
- 三、灰色模型及预测
- 例子
一、人口模型和数据拟合
1.1 指数型人数模型
马尔萨斯模型
设时刻t时人口为x(t)x(t)x(t),单位时间内的人口增长率为r,则Δt\Delta tΔt时间内增长的人口为:
x(t+Δt)−x(t)=x(t)×r×Δtx(t+\Delta t)-x(t)=x(t)\times r\times \Delta t x(t+Δt)−x(t)=x(t)×r×Δt
当Δt→0\Delta t \rightarrow 0Δt→0,得到微分方程:
dxdt=rx,x(0)=x0\frac{dx}{dt}=rx,x(0)=x_0 dtdx=rx,x(0)=x0
则:x(t)=x0ertx(t)=x_0e^{rt}x(t)=x0ert
代求参数 x0,rx_0,rx0,r
为了便于求解,两边取对数有:y=a+rty=a+rty=a+rt,其中y=lnx,a=lnx0y=\ln x,a=\ln x_0y=lnx,a=lnx0,该模型化即为线性求解
1.2 阻滞型人口模型
s型曲线
信息的传播,汽车数量的增长速度
用的时候就把模型简单介绍,然后把数据代入画图就行了
设时刻t时人口为x(t)x(t)x(t),环境允许的最大人口数量为xmx_mxm,人口净增长率岁人口数量的增加而线性减少,即
r(t)=r(1−xxm)r(t)=r(1-\frac{x}{x_m}) r(t)=r(1−xmx)
由此建立阻滞型人口微分方程:
咋积分的??
dxdt=r(1−xxm)x,x(0)=x0\frac{dx}{dt}=r(1-\frac{x}{x_m})x,x(0)=x_0 dtdx=r(1−xmx)x,x(0)=x0
则:
x(t)=xm1+(xmx0−1)e−rtx(t)=\frac{x_m}{1+(\frac{x_m}{x_0}-1)e^{-rt}} x(t)=1+(x0xm−1)e−rtxm
带求参数:x0,xm,rx_0,x_m,rx0,xm,r。此即Logistic函数
当x=xm2x=\frac{x_m}{2}x=2xm时,x增长最快,即dxdt\frac{dx}{dt}dtdx最大
实例1:美国人口数据处理
38:23左右开始讲
太拉了,整个就念代码
regress
:线性回归函数
nlintfit
:非线性拟和函数 beta:[x0,r,xm]beta:[x_0,r,x_m]beta:[x0,r,xm]
beta0beta0beta0是需要给的初始值,给个大概范围就可以
其中
logisfun
是自己编写的函数
二、神经网络方法
1. 多层向前神经网络原理介绍
多层前向神经网络(MLP)是神经网络中的一种,它由一些最基本的神经元即节点组成,下图就是这样一个网络。这种网络的结构如下:网络由分为不同层次的节点集合组成,每一层的节点输出到下一层节点,这些输出值由于连接不同而被放大、衰减或抑制。除了输入层外,每一节点的输入为前-一层所有节点输出值的和。每- - 节点的激励输出值由节点输入、激励函数及偏置量决定。
下图中,输入模式的各分量作为第i层各节点的输入,这一节点的输出,或者完全等于它们的输入值,或由该层进行归一化处理,使该层的输出值都在+1或-1之间。
在第j层,节点的输入值为:
neti=∑wjioi+θjnet_i=\sum w_{ji}o_i+\theta _j neti=∑wjioi+θj
式中的θj\theta _jθj为阈值,正阈值的作用将激励函数沿x轴向左平移,节点的输出值为:
oj=f(netj)o_j=f(net_j) oj=f(netj)
事中f为节点的激励函数,通常选择如下Sigmoid
函数:
f(x)=11+exp(−x)f(x)=\frac{1}{1+exp(-x)} f(x)=1+exp(−x)1
在第k层的网络节点的输入为:
netk=∑wkjoj+θknet_k=\sum w_{kj}o_j+\theta_k netk=∑wkjoj+θk
而输出为:
ok=f(netk)o_k=f(net_k) ok=f(netk)
在网络学习阶段,网络输入为模式样本xp=xpix_p= {x_{pi}}xp=xpi,网络要修正自己的权值及各节点的阀值,使网络输出不断接近期望值tpkt_{pk}tpk,每做一次调整后,换一对输入与期望输出,再做一次调整,直到满足所有样本的输入与输出间的对应。一般说来,系统输出值opk{o_{pk}}opk与期望输出值tpk{t_{pk}}tpk是不相等的。对每一个输入的模式样本,平方误差EpE_pEp为:
Ep=12∑k(tpk−opk)2E_p=\frac{1}{2}\sum _k(t_{pk}-o_{pk})^2 Ep=21k∑(tpk−opk)2
而对于全部学习样本,系统的总误差为:
Ep=12p∑p∑k(tpk−opk)2E_p=\frac{1}{2p}\sum _p \sum _k(t_{pk}-o_{pk})^2 Ep=2p1p∑k∑(tpk−opk)2
在学习过程中,系统将调整链接权和阈值,使得EpE_pEp尽可能快地下降
2. Matlab相关函数介绍
(1)网络初始化函数
net=newff([xm,xM],[h1,h2,...,hk],{f1,f2,...,fk})net=newff([x_m,x_M],[h_1,h_2,...,h_k],\{f_1,f_2,...,f_k\}) net=newff([xm,xM],[h1,h2,...,hk],{f1,f2,...,fk})
其中,xmx_mxm 和xMx_MxM分别为列向量,存储各个样本输入数据的最小值和最大值(即各个特征的最小值和最大值);第二个输入变量是一个行向量,输入各层节点数(从隐层开始);第三个输入变量是字符串,代表该层的传输函数(从隐层开始)。
常用tansig
和logsig
函数。其中
tansig(x)=1−e−2x1+e−2x将所有值映射到[−1,+1]logsig(x)=11+e−x将所有值映射到[0,+1]\begin{aligned} &tansig(x)=\frac{1-e^{-2x}}{1+e^{-2x}} \ \ \ \ \ &将所有值映射到[-1,+1] \\ &logsig(x)=\frac{1}{1+e^{-x}} \ \ \ \ \ &将所有值映射到[0,+1] \end{aligned} tansig(x)=1+e−2x1−e−2x logsig(x)=1+e−x1 将所有值映射到[−1,+1]将所有值映射到[0,+1]
除了上面方法给网络赋值外,还可以用下面格式设定参数。
Net.trainParam.epochs=1000Net.trainParam.epochs=1000Net.trainParam.epochs=1000 设置迭代次数
Net.trainFcn=′traingm′Net.trainFcn='traingm'Net.trainFcn=′traingm′ 设定带动量的梯度下降算法
(2)网络训练函数
[net,tr,Y1,E]=train(net,X,Y)[net,tr,Y1,E]=train(net,X,Y) [net,tr,Y1,E]=train(net,X,Y)
其中X为n×Mn \times Mn×M矩阵,n为输入变量的个数,M为样本数,Y为m×Mm\times Mm×M矩阵,m为输出变量的个数。X,Y分别存储样本的输入输出数据。net为返回后的神经网络对象,tr为训练跟踪数据,tr.preftr.preftr.pref为各步目标函数值。Y1位网络的最后输出,E1为训练误差向量
(3)网络泛化函数
Y2=sim(net,X1)Y2=sim(net,X1) Y2=sim(net,X1)
其中X1位输入数据矩阵,各列为样本数据,Y2位对应输出值
3.神经网络实验
神经网络主要用来函数拟合,插值,目标分类,模式识别
(1)函数仿真实验
产生下列函数在[0,10][0,10][0,10]区间上间隔0.5的数据,然后用神经网络进行学习,并推广到[0.10][0.10][0.10]上间隔为0.1上各店的函数值。并分别做出图形
y=0.2e−0.2x+0.5×e−0.15x.sin(1.25x)0≤x≤10y=0.2e^{-0.2x}+0.5\times e^{-0.15x} . sin(1.25x) \ \ \ \ 0\le x\le 10 y=0.2e−0.2x+0.5×e−0.15x.sin(1.25x) 0≤x≤10
Matlab程序:
x=0:0.5:10;
y=0.2*exp(-0.2*x)+0.5*exp(-0.15*x).*sin(1.25*x);
plot(x,y); %画出原始图net.trainParam.epochs=5000; % 设定迭代次数
net=newff([0,10],[6,1],{'tansig','tansig'}); %初始化网络
net=train(net,x,y); %进行网络训练x1=0:0.1:10;
y1=sim(net,x1); %数据泛化
plot(x,y,'*',x1,y1,'r');
(2)目标分类
MCM89A蠓的分类
这里,我们可用三层神经网络进行判别。
输入为15个二维向量,输出也为15个二维向量。其中Af对一个的目标向两位(1,0),Apf对应的目标向量为(0,1)
Matlab程序:
x=[1.24,1.36,1.38,1.38,1.38,1.40,1.48,1.54,1.56,1.13,1.18,1.20,1.26,1.28,1.30;1.72,1.74,1.64,1.82,1.90,1.70,1.82,1.82,2.08,1.78,1.96,1.86,2.0,2.0,1.96];
y=[1,1,1,1,1,1,1,1,1,0,0,0,0,0,0;0,0,0,0,0,0,0,0,0,1,1,1,1,1,1];net.trainParam.epochs=2500; %设定迭代次数
XM=minmax(x); %求最小值与最大值
net=newff(XM,[5,2],{'logsig','logsig'}); %初始化网络
net=train(net,x,y); %进行网络训练
x1=[1.24,1.28,1.40;1.80,1.84,2.04]; %待分类样本
y1=sim(net,x1) %数据泛化
plot(x(1,1:9),x(2,1:9),'*',x(1,10:15),x(2,10:15),'o',x1(1,:),x1(2,:),'p') %画原始数据图
注意,在这里每次运行结果都可能不一样,也就是说每一只可能在两次运行中被分到的类中都不一样
以两个分量越靠近就判断为哪一类。 从该结果看,三个样本都为Apf。但由于每次训练初始参数的随机性,而待判的3个样本在两类的临界区,导致不同的训练结果会有差异,这也正常。
三、灰色模型及预测
灰色系统理论建模要求原始数据必须等时间间距。首先对原始数据进行累加生成,目的是弱化原始时间序列数据的随机因素,然后建立生成数的微分方程。GM(1.1)模型是灰色系统理论中的单序列一阶灰色微分方程,它所需信息较少,方法简便。
设一直序列为x(0)(1),x(0)(2),...,x(0)(n)x^{(0)}(1),x^{(0)}(2),...,x^{(0)}(n)x(0)(1),x(0)(2),...,x(0)(n),做一个累加AGO(Acumulated Generating Operation)生成新序列:
x(1)(1),x(1)(2),...x(1)(n)x^{(1)}(1),x^{(1)}(2),...x^{(1)}(n) x(1)(1),x(1)(2),...x(1)(n)
其中
x(1)(1)=x(0)(1),x(1)(2)=x(0)(1)+x(0)(2),...x^{(1)}(1)=x^{(0)}(1),x^{(1)}(2)=x^{(0)}(1)+x^{(0)}(2),... x(1)(1)=x(0)(1),x(1)(2)=x(0)(1)+x(0)(2),...
即
x(1)(k)=∑i=1kx(0)(i)k=1,2,...,nx^{(1)}(k)=\sum_{i=1}^kx^{(0)}(i)\ \ \ k=1,2,...,n x(1)(k)=i=1∑kx(0)(i) k=1,2,...,n
生成均值序列(均值是为了解决毛刺):
z(1)(k)=αx(1)(k)+(1−α)x(1)(k−1)k=2,3,...,n(1)z^{(1)}(k)=\alpha x^{(1)}(k)+(1-\alpha)x^{(1)}(k-1) \ \ \ \ k=2,3,...,n \tag 1 z(1)(k)=αx(1)(k)+(1−α)x(1)(k−1) k=2,3,...,n(1)
其中0≤α≤10\le \alpha \le 10≤α≤1。通常可取α=0.5\alpha=0.5α=0.5,建立灰微分方程(离散微分方程):
假设符合这样的规律,然后再去验证
x(0)(k)+ax(1)(k)=bk=2,3,...,n(2)x^{(0)}(k)+ax^{(1)}(k)=b \ \ \ k=2,3,...,n \tag2 x(0)(k)+ax(1)(k)=b k=2,3,...,n(2)
响应的GM(1.1)白化微分方程(连续微分方程)为:
dx(1)dt+ax(1)(t)=b(3)\frac{dx^{(1)}}{dt}+ax^{(1)}(t)=b \tag3 dtdx(1)+ax(1)(t)=b(3)
将方程(2)变形为:
−az(1)(k)+b=x(0)(k)(4)-az^{(1)}(k)+b=x^{(0)}(k) \tag4 −az(1)(k)+b=x(0)(k)(4)
其中a,b为待定模型参数
将方程组(4)采用矩阵形式表达为:
即:
Xβ=Y(6)X\beta = Y \tag6 Xβ=Y(6)
解方程(6)的到最小二乘解为(可以求出来a,b):
β^=(a,b)T=(XTX)−1XTY(7)\hat{\beta}=(a,b)^T=(X^TX)^{-1}X^TY \tag7 β^=(a,b)T=(XTX)−1XTY(7)
求解微分方程(3)得到GM(1,1)模型的离散解:
x^(1)(k)=[x(0)(1)−ba]e−α(k−1)+bak=2,3,...,n(8)\hat x^{(1)}(k)=[x^{(0)}(1)-\frac b a]e^{-\alpha(k-1)}+\frac b a \ \ \ k=2,3,...,n \tag8 x^(1)(k)=[x(0)(1)−ab]e−α(k−1)+ab k=2,3,...,n(8)
还原为原始数列,预测模型为:
x^(0)(k)=x^(1)(k)−x^(1)(k−1)k=2,3,...,n(9)\hat x^{(0)}(k)=\hat x^{(1)}(k)-\hat x^{(1)}(k-1) \ \ \ \ \ k=2,3,...,n \tag9 x^(0)(k)=x^(1)(k)−x^(1)(k−1) k=2,3,...,n(9)
将式(8)代入式(9)得
x^(0)(k)=[x(0)(1)−ba]e−a(k−1)(1−ea)k=2,3,...,n(10)\hat x^{(0)}(k)=[x^{(0)}(1)-\frac b a]e^{-a(k-1)}(1-e^a) \ \ \ k=2,3,...,n \tag{10} x^(0)(k)=[x(0)(1)−ab]e−a(k−1)(1−ea) k=2,3,...,n(10)
GM(1.1)模型与统计模型相比,具有两个显著优点:一是灰色模型即使在少量数据情况下建立的模型,精度也会很高,而统计模型在少量数据情况下,精度会相对差一些;二是灰色模型从其机理上讲,越靠近当前时间点精度会越高,因此灰色模型的预测功能优于统计模型。灰色系统建模实际上是一种以数找数的方法,从系统的一个或几个离散数列中找出系统的变化关系,试图建立系统的连续变化模型。
例子
2003年的SARS疫情对中国部分行业的经济发展产生了一定的影响,特别是对部分疫情严重的省市的相关行业所造成的影响是明显的。经济影响分为直接经济影响和间接影响。很多方面难以进行定量评估。现就某市SARS疫情对商品零售业的影响进行定量的评估分析。
解答:
SARS发生在2003年4月。因此我们可根据1997年到2002年的数据,预测2003年的各月的零售额,并与实际的零售额进行。从而判断2003年倒底哪几个月受到SARS影响,并给出影响大小的评估。
将1997–2002年的数据记作矩阵A6×12A_{6\times 12}A6×12,代表6年的72个数据
计算各年平均值
x(0)(i)=112∑j=112aiji=1,2,...,6x^{(0)}(i)=\frac 1 {12} \sum ^{12} _{j=1} a_{ij} \ \ \ \ i=1,2,...,6 x(0)(i)=121j=1∑12aij i=1,2,...,6
得到
x(0)=(87.6167,98.5000,108,4750,118.4167,132.8083,145.4083)x^{(0)}=(87.6167,98.5000,108,4750,118.4167,132.8083,145.4083) x(0)=(87.6167,98.5000,108,4750,118.4167,132.8083,145.4083)
计算累加序列
x(1)(k)=∑i=1kx(0)(i)k=1,2...,6x^{(1)}(k)=\sum ^k _{i=1}x^{(0)}(i) \ \ \ \ k=1,2...,6 x(1)(k)=i=1∑kx(0)(i) k=1,2...,6
得到
x(1)=(87.6167,186.1167,294.5917,413.0083,545.8167.691.2250)x^{(1)}=(87.6167, 186.1167, 294.5917, 413.0083, 545.8167.691.2250) x(1)=(87.6167,186.1167,294.5917,413.0083,545.8167.691.2250)
生成均值序列:
数学建模常用的数据处理方法及例子汇总(持续更新中)相关推荐
- Python 100个简单小例子(持续更新中)
Python 100个简单小例子(持续更新中) 1 编写一个计算平年还是闰年的小例子其核心是年份可以整除4和400,且不是100的倍数且2000年是特殊年份为闰年! year = int(input( ...
- 常用精度评价指标(evaluation factors)---持续更新中
深度学习和机器学习中常用精度评价指标 遇到什么写什么,有错误可以在评论中指出,非常感谢 背景 精度--precision 准确率--accuracy 平均像素准确率--mean pixel accur ...
- Alibaba数学竞赛试题与答案汇总(持续更新中)
预选赛第1轮试题 预选赛第1轮答案 预选赛第2轮试题 预选赛第2轮答案 决赛试题 决赛答案 第1届-2018 见自己网盘 见自己网盘 - - 2018Alibaba数学竞赛-决赛试题 第2届- ...
- mysql max 命令大全_MySQL常用命令,34道练习题(持续更新中)。
1.使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2.创建一个数据库MYSQLDATA mysql> CREATE DATABASE M ...
- 数学建模的影响因素分析方法
数学建模的影响因素分析方法 PCA主成分分析 灰色关联分析 AHP层次分析 小结 如果赶时间可直接看小结部分,再返回看正文 作为萌新参加了数学建模,为解决影响煤炭价格的主要因素的问题, ...
- 数学建模常用模型(一):灰色预测法
数学建模常用模型(一):灰色预测法 灰色预测法是一种用于处理少量数据.数据质量较差或者缺乏历史数据的预测方法.它适用于一些非线性.非平稳的系统,尤其在短期预测和趋势分析方面有着广泛的应用.灰色预测法作 ...
- 数学建模常用读取excel和txt代码
文章目录 一.matlab篇 1.1.读取.xls和.xlsx的数据 1.2.读取.csv的数据 二.python篇 2.1.pandas库 2.1.1.xlsx和xls的读取和写入 2.1.2.cs ...
- 【Python数学建模常用算法代码(二)之BP神经网络】
Python数学建模常用算法代码(二) BP神经网络模型Python代码 import numpy as np import math import random import string impo ...
- 数学建模常用模型04:灰色关联分析法
数学建模常用模型04:灰色关联分析法 灰色关联分析法 本文所用的资料参考来源:美赛资料网:美赛资料网 与灰色预测模型一样,比赛不能优先使用,灰色关联往往可以与层次分析结合使用.层次分析用在确定权重上面 ...
最新文章
- Win8.1无法安装更新,提示0x800*****错误的解决方法
- 获取物料的103待检库存
- java事件绑定,Java编程GUI中的事件绑定代码示例
- 神经架构搜索(Neural Architecture Search,NAS)介绍
- Vue中ESlint配置文件eslintrc.js文件详解
- 19n20c的参数_FQB19N20CTM
- Satwe楼板能用弹性模计算吗_SATWE软件计算结果分析
- 秒杀或游戏让电脑时间与阿里淘宝时间同步的完整方法
- eBPF-4-perf_map的丢失事件lost_event解读
- apple watch3连android,无需艳羡苹果党的Apple Watch 3 这款安卓通话神器亮了
- python操作pdf——pdfplumber/PyPDF2
- HTG审核CODE键盘:老式建筑满足现代设施
- Intel的ipp库(Integrated Performance Primitives)
- python画笔速度调为最高_【python入门系类课程 第三课 神奇的画笔】
- 鼠标放到图片上图片就变大
- 跟锦数学2017年上半年
- Ubuntu20.04 添加右键新建文件
- 我国智能变电站建设到什么程度了
- 【图像处理】常用色彩空间
- 美景本天成,妙笔偶得之——“妙笔”是怎样炼成的?
热门文章
- 小米手环导出心率_小米手环1怎么看心率?
- “你手上有几个offer?”,该怎么回答?
- html百度地图获取城镇街道,集成百度地图根据地址获取经纬度,定位地址到街道...
- 非媒:中国非洲投资是“授人以渔”
- 1. Synchronized
- 前端开发介绍(包含调试什么的)
- C语言期末考试复习资料(选择题)
- fcpx:专业视频降噪插件 ProDenoise for Mac
- 简述UITextField的属性和用法
- 手机App三年内将彻底消失?