前言
一直都想参加一次阿里天池比赛,看到有公众号提了这次比赛的baseline,果断报名。0基础,开始了第一次数据科学比赛的尝试~
这次比赛遇到了各种各样的问题,几度想放弃,但是不忍心排200多名。来都来了,冲完B榜吧,也算是表明自己第一次参加天池大赛的态度,不能让母校的名字排在最后。
题目
https://tianchi.aliyun.com/competition/entrance/531871/introduction

发生在热带太平洋上的厄尔尼诺-南方涛动(ENSO)现象是地球上最强、最显著的年际气候信号。通过大气或海洋遥相关过程,经常会引发洪涝、干旱、高温、雪灾等极端事件,对全球的天气、气候以及粮食产量具有重要的影响。准确预测ENSO,是提高东亚和全球气候预测水平和防灾减灾的关键。
本次赛题是一个时间序列预测问题。基于历史气候观测和模式模拟数据,利用T时刻过去12个月(包含T时刻)的时空序列(气象因子),构建预测ENSO的深度学习模型,预测未来1-24个月的Nino3.4指数,如下图所示:

这题是一个典型的时间序列预测问题,看起来没那么难,但是认真一想还是有很多难点的,比如数据质量,内存限制,模型,都是可以改进的,下面是我的baseline。
数据分析
拿到数据,我都是一股脑往模型里扔,然后开始炼丹,炼着炼着,分数从-6变为-10、-13、-15、-22…最后都到NaN了,平时老师也总是说,不要一上来就上模型,先把数据分析清楚了,于是打算再花几个小时进行数据分析。
CMIP数据分析
CMIP是模拟数据,网友UCDuan说:
CMIP是气候模型的数据
你可以理解为不同情况下(不同的初始场和不同的气候模型)“地球”的真实情况,只是符合大致的‘物理规律’,但不是地球真实的历史情况。所以用CMIP就是想挖掘这个‘物理规律’。
这里我打算拿CMIP数据训练,SODA数据验证。
数据统计
以sst数据为例


趋势图


可以看出数据是经过处理的,每隔12个月,连续三组数据值是一样的
再加上下个特征,发现他们也是相似的

另外有些特征数据缺失,需要进行平均填充

方法如下:
tr_features2 = np.concatenate([sst_CMIP_shaped,t300_CMIP_shaped,va_CMIP_shaped,ua_CMIP_shaped],axis=-1)
tr_features2[np.isnan(tr_features2)] = np.mean(tr_features2)#对NaN值进行均值填充
SODA数据分析
代码
baseline来自这篇文章:https://mp.weixin.qq.com/s/63LPCHNo4zOA_UGDAc2xUQ
这篇文章完成了数据组织、处理、MLP模型构建、本地测试、上传代码,但是有很多问题,我进行了初步修正:
- 由于内存限制,CMIP数据只加载1000年==》全部
- 前面数据转换为csv文件,后面没有用到==》后面数据加载来源于csv文件
- 模型使用MLP==》模型改为3维CNN
代码链接:https://github.com/guhang987/-AI-Earth-
代码解释:
- ./ENSO/data文件夹
存放原始数据与转换后的数据

- data_prepare.py
将比赛提供的nc文件转换为csv文件 - train.ipynb
训练模型 - main.py
模型打包提交
训练
conda环境:
- python 3.8
- tensorflow 2.20
首先进行数据格式转换,提取数据前24个月,以及标签后12个月的数据。
soda_label = pd.read_csv('./ENSO/data/df_SODA_label.csv')['label']
sst_SODA = pd.read_csv('./ENSO/data/df_sst_SODA.csv')
t300_SODA = pd.read_csv('./ENSO/data/df_t300_SODA.csv')
ua_SODA = pd.read_csv('./ENSO/data/df_ua_SODA.csv')
va_SODA = pd.read_csv('./ENSO/data/df_va_SODA.csv')
sst_SODA = np.array(sst_SODA).reshape(100,36,24,72,1)[:,:12,:,:,:]
t300_SODA = np.array(t300_SODA).reshape(100,36,24,72,1)[:,:12

本文记录了一位参赛者首次参加阿里天池大赛的经历,挑战时间序列预测问题——ENSO指数预测。面对数据质量问题、内存限制和模型选择的困难,作者尝试了多种数据处理策略和模型,包括CNN。通过分析CMIP和SODA数据,进行增量学习,最终实现模型训练。尽管遇到诸多bug,但作者决心克服并期待未来进步。
最低0.47元/天 解锁文章
1661





