机器学习暴雨竞猜挑战赛

来自集智百科
跳转到: 导航搜索

彩云天气宣传视频截图2.png


目录

问题定义

以下文字需要进一步梳理。

我们把某时刻某地区的降雨量r看做一个连续变量的话,可以把它缩放到[0,1]上。于是可以构成一个三维矩阵R,其每一个元素 
R(i,j,t)
为坐标(i,j)在t时刻的降雨量。

已知跨度为T的降雨量,求T_predict_interval之后的降雨量。我的输入数据是x,代表T个时刻在不同位置的降雨量。输出也是一个向量,代表T_predict_interval之后的降雨量。输入数据和标准输出都可以从降雨量三维矩阵得到。

数据集

降雨量地区时间三维矩阵

import cPickle;
import gzip;
import numpy;
times = []
matrix = []
data_size=5000;
 
f = gzip.open("data/matrix_combine_uint8.pkl.gz")
while True:
  try:
    time,pix = cPickle.load(f)
    times.append(time);
    matrix.append(pix);
    if len(times)>=data_size : break;
  except:
    break;
 
 
f.close()
 
times = map(int,times);
matrix = numpy.array(matrix);
 
matrix = matrix.astype("float")/16;
>>> matrix.shape
(5000, 480, 480)
>>> times[:5]
['201308101535', '201308101540', '201308101550', '201308101555', '201308101600']

于是得到5000x480x480的numpy.array,三个维度分别是时间,横坐标和纵坐标。数值范围是[0,1],打印出来看看:

import matplotlib.pyplot as plt
plt.imshow(matrix[200])
plt.show()

Matrix plot.png

来一段视频吧(三分钟以后开始风云变幻)

如何构造训练集

  • 切换到代码根目录,比如 /home/yuanxy/projects/nowcasting/
  • 编辑 src/buildTrainSet.py
  • 找到参数的位置
#parameters start
train_frame_size=(5,25,25)
train_frame_center=(240,250)
predict_interval=5;
predict_frame_size=(1,5,5);
predict_frame_center=(240,250);
#paramters end
  • train_frame_size是每一个样本当中,输入数据的大小(时间,纵向长度,横向长度)
  • train_frame_center是指输入数据的中心坐标(240,240)是全图中心。
  • predict_interval是指预测多少帧之后的图像
  • predict_frame_size和train_frame_size相同,是指label数据(y)的大小。
  • 运行程序
python src/buildTrainSet.py data/matrix_combine_uint8.pkl.gz data/train_set1_5to10_230x230to200x200.pkl.gz

六分钟预报训练测试集

这次没有存在一个numpy.array里面,需要循环读入

import cPickle;
import gzip;
 
f = gzip.open("data/train_set.pkl.gz")
x,y = ([],[])
while True:
  try:
    x.append(cPickle.load(f));
    y.append(cPickle.load(f));
  except:
    break;
 
x=numpy.array(x);
y=numpy.array(y);
 
>>> x.shape
(939, 400000)
>>> y.shape
(939, 40000)

x是前一个小时的雷达图,y是6分钟以后的雷达图。

baseline结果

暂无

期待你的加入

参考页面

个人工具
名字空间
操作
导航
工具箱