R语言气象模型集成预报:神经网络、回归、svm、决策树用环流因子预测降雨降水数据

简介: R语言气象模型集成预报:神经网络、回归、svm、决策树用环流因子预测降雨降水数据

我们被客户要求撰写关于气象集成预报技术的研究报告,包括一些图形和统计输出。在实际应用中,对每个具体的问题,各种预报方法得出的结果通常是不一致的,因而不知道如何将它们统一起来。因此需要采用一种较好的处理方法,把不同预报方法对同一要素的多种预报结果综合在一起,从而得出一个优于单一预报方法的预报结论,这就是预报方法的集成问题。

本文分析了传统的基于加权的集成预报方法及其在气象预测应用中存在的问题,在此基础上提出了一种新的基于数据挖掘的集成预报方法,该方法选用BP人工神经网络建立集成预报分类器,对文中BP人工神经网络、多元回归、SVM、决策树模型四种子预报方法的预报结果进行集成和综合。

基于数据挖掘的集成预报方法利用从子预报方法中筛选的训练集进行训练,得到集成预报分类器;该集成预报分类器可以根据环流因子的输入,直接得到一种最优子预报方法,然后利用得到的最优子预报方法去预测,将最优子预报方法的预报结果作为集成预 报的预报结果。


实验数据集描述


实验使用的输入数据是环流因子,是由国家气候中心气候系统诊断预测室再处理资料,资料数据全都为整型。


环流因子数据

30年降水数据

本文介绍了四种常见的气象子预报方法:BP人工神经网络、多元回归、SVM、决策树模型,并通过实际的数据集进行预报检验。从实验结果可以得出,对于不同的预报环境和预报样本,并没有哪一种子预报方法的预报结果能够保证始终是最优的。

环流因子=read.csv("环流因子.csv") 
降水数据=read.csv("30年降水数据.csv")


转换降水数据


y=0  
   
 for(i in 2:ncol(降水数据)){  
 y=c(y,降水数据[,i])
 
 
 环流因子=环流因子[1:length(yy),]  
   
 datanew=data.frame(降水数据=yy,环流因子[,-1])

 


多元回归


model=lm(降水数据~.,data=datanew)

plot(datanew[,2:1])  
 abline(model)

点击标题查阅往期内容


ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测


01

02

03

04

svm支持向量机


现在我们在训练集上使用来训练线性SVM

##  
##  
## Parameters:  
##    SVM-Type:  eps-regression  
##  SVM-Kernel:  radial  
##        cost:  1  
##       gamma:  0.01351351  
##     epsilon:  0.1  
##  
##  
## Number of Support Vectors:  107


绘制拟合图

points(datanew[,2], predictedY, col = "red", pch=4)

mse <- function(error)  
 {  
   sqrt(mean(error^2))  
 }
 
## [1] 599.4382


决策树


绘制决策树

## Variables actually used in tree construction:  
## [1] X.19 X.30 X.57 X.72 X.73  
##  
## Root node error: 328275991/372 = 882462
draw.tree(CARTmodel)

根据cp值对决策树进行剪枝

cable[which.min(CARTmodel$cptable[,"xerror"]),"CP"]


对数据进行预测


plot(tree.pred,  datanew.test$降水数据 )  
 abline(0,1)

神经网络


y=datanew$降水数据  
#  y<-data.frame((y-min(y))/(max(y)-min(y)))  
 names(y)<-'y'  
   
 mod1<-nnet(datanew
 
 summary(mod1)
## a 75-10-1 network with 771 weights  
## options were - linear output units  
##   b->h1  i1->h1  i2->h1  i3->h1  i4->h1  i5->h1  i6->h1  i7->h1  i8->h1  
##   -0.26    0.53   -0.19    0.00   -0.39   -0.57    0.40   -0.05    0.54  
##  i9->h1 i10->h1 i11->h1 i12->h1 i13->h1 i14->h1 i15->h1 i16->h1 i17->h1  
##    0.57   -0.51    0.53    0.66   -0.18   -0.15    0.36   -0.67   -0.54  
## i18->h1 i19->h1 i20->h1 i21->h1 i22->h1 i23->h1 i24->h1 i25->h1 i26->h1  
   
##   h9->o  h10->o  
##   47.66   55.81


模型集成


在实际应用中,对每个具体的问题,各种预报方法得出的结果通常是不一致的,因而不知道如何将它们统一起来。一般地,每个具体预报方法的预报思想不同,其适应的具体环境也就不同,得到的预报结果的准确程度也不相同,对某类数据有较好预报结果的方法,对其它数据不一定有较好结果。因此需要采用一种较好的处理方法,把不同数值模式对同一要素的多种预报结果综合集成在一起,从而得出一个优于单一预报方法的预报结论,这就是预报方法的集成问题。

尽管常用的集成预报方法有回归集成、平均集成、多数表决和加权集成预报方法等,然而这些集成预报方法本质上属于一种基于加权的集成方法。

本文方法的大致思想如下:以各子预报方程的历史拟合样本作为神经网络集成预报模型学习矩阵输入,相应的预报量序列作为学习矩阵的期望输出。只是确定权值的方式是不断地进行学习训练,权值存在于复杂的人工神经网络结构中,并不是线性和容易理解的。最后,把该子预报方法的预报结果作为集成预报方法的预报结果。


使用神经网络对训练结果进行集成

mod1<-nnt(trainerror,y,sizout=T)
 
 ## # weights:  61  
## initial  value 526570419.869292  
## iter  10 value 119410102.980870  
## iter  20 value 25370475.287456  
## final  value 25370458.492646  
## converged
summary(mod1)
## a 4-10-1 network with 61 weights  
## options were - linear output units  
##   b->h1  i1->h1  i2->h1  i3->h1  i4->h1  
##    0.37  148.56  162.50   -2.06    2.30  
##   b->h2  i1->h2  i2->h2  i3->h2  i4->h2  
##    0.48  -56.65   46.85    2.23   -1.23  
##   b->h3  i1->h3  i2->h3  i3->h3  i4->h3  
##   -0.11    7.56   15.11   -1.18    1.41  
##   b->h4  i1->h4  i2->h4  i3->h4  i4->h4  
##    0.42  -14.15  -11.55    1.49   -1.12  
##   b->h5  i1->h5  i2->h5  i3->h5  i4->h5  
##   -0.34   57.24   79.60 -176.40    6.91  
##   b->h6  i1->h6  i2->h6  i3->h6  i4->h6  
##   -0.44   -0.22    6.17    0.82   -0.01  
##   b->h7  i1->h7  i2->h7  i3->h7  i4->h7  
##    0.03   -0.14   -0.61    0.04   -0.14  
##   b->h8  i1->h8  i2->h8  i3->h8  i4->h8  
##   -0.34   65.01  -72.91  -10.22    9.67  
##   b->h9  i1->h9  i2->h9  i3->h9  i4->h9  
##    0.20   -1.31   14.80    0.90   -0.73  
##  b->h10 i1->h10 i2->h10 i3->h10 i4->h10  
##   -0.46   -2.63  -23.62   -0.60    1.51  
##    b->o   h1->o   h2->o   h3->o   h4->o   h5->o   h6->o   h7->o   h8->o  
##  368.20 -340.26   -4.79 4963.64 -158.47  517.21   24.37   -5.77   23.41  
##   h9->o  h10->o  
##   30.60  336.40


绘制拟合数据


相关文章
|
12天前
|
机器学习/深度学习 数据采集 人工智能
基于Huffman树的层次化Softmax:面向大规模神经网络的高效概率计算方法
层次化Softmax算法通过引入Huffman树结构,将传统Softmax的计算复杂度从线性降至对数级别,显著提升了大规模词汇表的训练效率。该算法不仅优化了计算效率,还在处理大规模离散分布问题上提供了新的思路。文章详细介绍了Huffman树的构建、节点编码、概率计算及基于Gensim的实现方法,并讨论了工程实现中的优化策略与应用实践。
60 15
基于Huffman树的层次化Softmax:面向大规模神经网络的高效概率计算方法
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的魔法:如何用神经网络解锁数据的奥秘
在人工智能的璀璨星空中,深度学习犹如一颗最亮的星,它以其强大的数据处理能力,改变了我们对世界的认知方式。本文将深入浅出地介绍深度学习的核心概念、工作原理及其在不同领域的应用实例,让读者能够理解并欣赏到深度学习技术背后的奇妙和强大之处。
50 3
|
4月前
|
Kubernetes Devops 持续交付
DevOps实践:使用Docker和Kubernetes实现持续集成和部署网络安全的守护盾:加密技术与安全意识的重要性
【8月更文挑战第27天】本文将引导读者理解并应用DevOps的核心理念,通过Docker和Kubernetes的实战案例,深入探讨如何在现代软件开发中实现自动化的持续集成和部署。文章不仅提供理论知识,还结合真实示例,旨在帮助开发者提升效率,优化工作流程。
|
22天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
29天前
|
机器学习/深度学习 算法 关系型数据库
基于PSO-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目展示了利用粒子群优化(PSO)算法优化支持向量机(SVM)参数的过程,提高了分类准确性和泛化能力。包括无水印的算法运行效果预览、Matlab2022a环境下的实现、核心代码及详细注释、操作视频,以及对PSO和SVM理论的概述。PSO-SVM结合了PSO的全局搜索能力和SVM的分类优势,特别适用于复杂数据集的分类任务,如乳腺癌诊断等。
|
1月前
|
网络虚拟化
生成树协议(STP)及其演进版本RSTP和MSTP,旨在解决网络中的环路问题,提高网络的可靠性和稳定性
生成树协议(STP)及其演进版本RSTP和MSTP,旨在解决网络中的环路问题,提高网络的可靠性和稳定性。本文介绍了这三种协议的原理、特点及区别,并提供了思科和华为设备的命令示例,帮助读者更好地理解和应用这些协议。
52 4
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习与神经网络:探索复杂数据的表示
【9月更文挑战第26天】深度学习作为人工智能领域的明珠,通过神经网络自动从大数据中提取高级特征,实现分类、回归等任务。本文介绍深度学习的基础、张量表示、非线性变换、反向传播及梯度下降算法,并探讨其在计算机视觉、自然语言处理等领域的应用与挑战。未来,深度学习将更加智能化,揭示数据背后的奥秘。
|
3月前
|
机器学习/深度学习 人工智能 算法
首个像人类一样思考的网络!Nature子刊:AI模拟人类感知决策
【9月更文挑战第8天】近日,《自然》子刊发表的一篇关于RTNet神经网络的论文引起广泛关注。RTNet能模拟人类感知决策思维,其表现与人类相近,在反应时间和准确率上表现出色。这项研究证明了神经网络可模拟人类思维方式,为人工智能发展带来新启示。尽管存在争议,如是否真正理解人类思维机制以及潜在的伦理问题,但RTNet为人工智能技术突破及理解人类思维机制提供了新途径。论文详细内容见《自然》官网。
75 3
|
4月前
|
JavaScript 网络协议 API
【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败
【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败
下一篇
DataWorks