竞赛题目

发生在热带太平洋上的厄尔尼诺-南方涛动(ENSO)现象是地球上最强、最显著的年际气候信号。通过大气或海洋遥相关过程,经常会引发洪涝、干旱、高温、雪灾等极端事件,对全球的天气、气候以及粮食产量具有重要的影响。准确预测ENSO,是提高东亚和全球气候预测水平和防灾减灾的关键。

本次赛题是一个时间序列预测问题。基于历史气候观测和模式模拟数据,利用T时刻过去12个月(包含T时刻)的时空序列(气象因子),构建预测ENSO的深度学习模型,预测未来1-24个月的Nino3.4指数,如下图所示:

图1 赛题示意图

竞赛数据

数据简介

本次比赛使用的数据包括CMIP5/6模式的历史模拟数据和美国SODA模式重建的近100多年历史观测同化数据。每个样本包含以下气象及时空变量:海表温度异常(SST),热含量异常(T300),纬向风异常(Ua),经向风异常(Va),数据维度为(year,month,lat,lon)。对于训练数据提供对应月份的Nino3.4 index标签数据。

训练数据说明

每个数据样本第一维度(year)表征数据所对应起始年份,对于CMIP数据共4645年,其中1-2265为CMIP6中15个模式提供的151年的历史模拟数据(总共:151年 *15 个模式=2265);2266-4645为CMIP5中17个模式提供的140年的历史模拟数据(总共:140年 *17 个模式=2380)。对于历史观测同化数据为美国提供的SODA数据。

其中每个样本第二维度(mouth)表征数据对应的月份,对于训练数据均为36,对应的从当前年份开始连续三年数据(从1月开始,共36月),比如:

SODA_train.nc中[0,0:36,:,:]为第1-第3年逐月的历史观测数据;

SODA_train.nc中[1,0:36,:,:]为第2-第4年逐月的历史观测数据;
…,
SODA_train.nc中[99,0:36,:,:]为第100-102年逐月的历史观测数据。


CMIP_train.nc中[0,0:36,:,:]为CMIP6第一个模式提供的第1-第3年逐月的历史模拟数据;
…,
CMIP_train.nc中[150,0:36,:,:]为CMIP6第一个模式提供的第151-第153年逐月的历史模拟数据;

CMIP_train.nc中[151,0:36,:,:]为CMIP6第二个模式提供的第1-第3年逐月的历史模拟数据;
…,
CMIP_train.nc中[2265,0:36,:,:]为CMIP5第一个模式提供的第1-第3年逐月的历史模拟数据;
…,
CMIP_train.nc中[2405,0:36,:,:]为CMIP5第二个模式提供的第1-第3年逐月的历史模拟数据;
…,
CMIP_train.nc中[4644,0:36,:,:]为CMIP5第17个模式提供的第140-第142年逐月的历史模拟数据。

其中每个样本第三、第四维度分别代表经纬度(南纬55度北纬60度,东经0360度),所有数据的经纬度范围相同。

训练数据标签说明

标签数据为Nino3.4 SST异常指数,数据维度为(year,month)。

CMIP(SODA)_train.nc对应的标签数据当前时刻Nino3.4 SST异常指数的三个月滑动平均值,因此数据维度与维度介绍同训练数据一致

注:三个月滑动平均值为当前月与未来两个月的平均值。

测试数据说明

测试用的初始场(输入)数据为国际多个海洋资料同化结果提供的随机抽取的n段12个时间序列,数据格式采用NPY格式保存,维度为(12,lat,lon, 4),12为t时刻及过去11个时刻,4为预测因子,并按照SST,T300,Ua,Va的顺序存放。

测试集文件序列的命名规则:test_编号起始月份终止月份.npy,如test_00001_01_12_.npy

数据(Netcdf文件)读取方法

(1) https://www.giss.nasa.gov/tools/panoply/ panoply可视化文件

(2) Python中xarray/netCDF4 库

import tensorflow as tf
import tensorflow.keras.backend as K
from tensorflow.keras.layers import *
from tensorflow.keras.models import *
from tensorflow.keras.optimizers import *
from tensorflow.keras.callbacks import *
from tensorflow.keras.layers import Input
import numpy as np
import os
import zipfiledef RMSE(y_true, y_pred):return tf.sqrt(tf.reduce_mean(tf.square(y_true - y_pred)))def build_model():  inp    = Input(shape=(12,24,72,4))  x_4    = Dense(1, activation='relu')(inp)   x_3    = Dense(1, activation='relu')(tf.reshape(x_4,[-1,12,24,72]))x_2    = Dense(1, activation='relu')(tf.reshape(x_3,[-1,12,24]))x_1    = Dense(1, activation='relu')(tf.reshape(x_2,[-1,12]))x = Dense(64, activation='relu')(x_1)  x = Dropout(0.25)(x) x = Dense(32, activation='relu')(x)   x = Dropout(0.25)(x)  output = Dense(24, activation='linear')(x)   model  = Model(inputs=inp, outputs=output)adam = tf.optimizers.Adam(lr=1e-3,beta_1=0.99,beta_2 = 0.99) model.compile(optimizer=adam, loss=RMSE)return model model = build_model()
model.load_weights('./user_data/model_data/model_mlp_baseline.h5')test_path = './tcdata/enso_round1_test_20210201/'### 1. 测试数据读取
files = os.listdir(test_path)
test_feas_dict = {}
for file in files:test_feas_dict[file] = np.load(test_path + file)
print(file)
### 2. 结果预测
test_predicts_dict = {}
for file_name,val in test_feas_dict.items():test_predicts_dict[file_name] = model.predict(val).reshape(-1,)
#     test_predicts_dict[file_name] = model.predict(val.reshape([-1,12])[0,:])### 3.存储预测结果
if os.path.isdir('/result/'):pass
else:os.mkdir('/result/')
for file_name,val in test_predicts_dict.items(): np.save('./result/' + file_name,val)#打包目录为zip文件(未压缩)
def make_zip(source_dir='./result/', output_filename = 'result.zip'):zipf = zipfile.ZipFile(output_filename, 'w')pre_len = len(os.path.dirname(source_dir))source_dirs = os.walk(source_dir)print(source_dirs)for parent, dirnames, filenames in source_dirs:print(parent, dirnames)for filename in filenames:if '.npy' not in filename:continuepathfile = os.path.join(parent, filename)arcname = pathfile[pre_len:].strip(os.path.sep)   #相对路径zipf.write(pathfile, arcname)zipf.close()
make_zip()

助力精准气象和海洋预测笔记相关推荐

  1. 天池时间序列竞赛——AI助力精准气象和海洋预测学习笔记其一:赛题分析

    序: 最近参加了天池的气象和海洋预测竞赛,希望能够借此机会学习时间序列的相关模型,接下来会通过系列博客记录并梳理自己在竞赛过程中的一些心得体会. 作为系列学习笔记的第一章,这篇文章旨在梳理和分享我对赛 ...

  2. “AI Earth”人工智能创新挑战赛:助力精准气象和海洋预测Baseline[3]:TCNN+RNN模型、SA-ConvLSTM模型

    [机器学习入门与实践]入门必看系列,含数据挖掘项目实战:模型融合.特征优化.特征降维.探索性分析等,实战带你掌握机器学习数据挖掘 专栏详细介绍:[机器学习入门与实践]合集入门必看系列,含数据挖掘项目实 ...

  3. datawhale——阿里天池--AI助力精准气象和海洋预测学习笔记 task1

    1. 项目背景 问题陈述 这个竞赛是一个自然科学相关的时间序列预测问题,要求基于历史气候观测和模式模拟数据,准确预测厄尔尼诺-南方涛动(ENSO)现象.具体来说,我们的任务就是根据过去12个月的气象及 ...

  4. 【算法竞赛学习】AI助力精准气象和海洋预测

    赛题简介 赛题背景 发生在热带太平洋上的厄尔尼诺-南方涛动(ENSO)现象是地球上最强.最显著的年际气候信号.通过大气或海洋遥相关过程,经常会引发洪涝.干旱.高温.雪灾等极端事件,对全球的天气.气候以 ...

  5. 时间序列预测(2):AI助力精准气象和海洋预测

    文章目录 一.背景 二.数据预处理 数据简介 训练数据标签说明 测试数据说明 模型评估指标 数据的转换 三.模型的构建和预测 构建训练集 训练模型 模型评估 模型预测 四.模型的改进方向 引言 本文主 ...

  6. 2021 “AI Earth”人工智能创新挑战赛 AI助力精准气象和海洋预测

    这里揭露一下天池比赛里活跃着的部分小号行为. 在AI earth比赛里,12点提交截止,但运行时间最长6小时,因此12点到18点仍然有机会刷新排行榜,所以大家可能还有一次提分机会.16点南京某大学的人 ...

  7. 【算法竞赛学习】气象海洋预测-Task5 模型建立之 SA-ConvLSTM

    气象海洋预测-Task5 模型建立之 SA-ConvLSTM 该方案中采用的模型是SA-ConvLSTM. 前两个TOP方案中选择将赛题看作一个多输出的任务,通过构建神经网络直接输出24个nino3. ...

  8. 【算法竞赛学习】气象海洋预测-Task4 模型建立之 TCNN+RNN

    气象海洋预测-Task4 模型建立之 TCNN+RNN 该方案中采用的模型是TCNN+RNN. 在Task3中我们学习了CNN+LSTM模型,但是LSTM层的参数量较大,这就带来以下问题:一是参数量大 ...

  9. 【算法竞赛学习】气象海洋预测-Task2 数据分析

    气象海洋预测-Task2 数据分析 数据分析是我们解决一个数据挖掘任务的重要一环,通过数据分析,我们可以了解标签的分布.数据中存在的缺失值和异常值.特征与标签之间的相关性.特征之间的相关性等,并根据数 ...

最新文章

  1. 计算机应用技能大赛海报,2017年计算机应用工程系技能大赛汇总 ——大赛点亮人生 技能改变命运...
  2. SAP S/4HANA CDS View的访问控制实现:DCL介绍 1
  3. mongodb模糊查询_AWS 回击了!推出兼容 MongoDB 的 DocumentDB
  4. SpringMvc+Tomcat+Angular4 部署运行
  5. 收藏 | Kaggle神器LightGBM最全解读!
  6. 超全面的的常用RAID详解
  7. scala打印服务器消息,Spark中使用Scala实现WordCount业务
  8. redis php教程pdf,ThinkPHP中简单使用Redis
  9. C++ 领域:游戏、HPC、编译器、金融、财务
  10. StringUtil.format使用介绍
  11. 查T结果与Z结果的P值[转载]
  12. adobe cs5中文补丁 indesign_indesign cs5下载_Adobe InDesign CS5简体中文版下载 - 下载之家...
  13. 解决IDEA 打开Springboot项目提示 Unmapped Spring configuration files found.
  14. USB TO I2C(上海同旺电子)调试器调试LM75A--TI
  15. 【Tensorflow教程笔记】TensorFlow Serving
  16. YTU 3166: 共享单车
  17. 男式西服的三大色系介绍
  18. Leetcode 994 腐烂的柿子
  19. 软件工程读书笔记(五)——软件工程师的思维误区
  20. 谢国忠正在走入一种非理性思维状态

热门文章

  1. 关于mos管的压降问题(项目遇到问题总结)
  2. B站UP主涨粉周榜排行榜来啦,腾格尔献唱草原版《孤勇者》,周涨粉近30W
  3. html中音频文件放在JS哪里,javascript – 将音频文件保存在rails中
  4. 《追风筝的人》or《THE KITE RUNNER》
  5. 中国人工智能学会通讯——无智能,不驾驶——面向未来的智能驾驶时代 ( 下 )...
  6. CSS - 移动Web网页开发(2)- 必掌握知识点 - #博学谷IT学习技术支持#
  7. [龙讯8号]龙芯产品再开新花
  8. 怎样成为一名优秀的科学家
  9. 基于Unity3D的自动寻路车辆模拟
  10. CentOS7-搭建Ftp服务