预测PM 2.5
1、数据处理
每一天有24小时,每一天对应的特征有18个,每个月取前20天作为训练集数据,根据要求,每九个小时形成一个data,一个月有2024=480 hours,所以一共可以取到471个data,故x_train的行数为样本个数,即47112个,列数为18个特征9 hours。
target值取每九个小时的第十个小时,所以target的矩阵应为(47112,1)
将每个月20天每小时的数据作为每一列,行为特征数量。
month_data={}
for month in range(12):
sample=np.empty([18,480])
for day in range(20):
sample[:,day*24:(day+1)*24]=raw_data[18*(20*month+day):18*(20*month+day+1),:]
month_data[month]=sample
- 建立一个字典
- 遍历12个月
- 建立一个空的数组,行为18个特征,列为20 days * 24 hours
- 遍历每一天,对于第一天的遍历,sample中的所有行,以及前24列数据,为原始数据中,第一个月第一天,即原始数据中的第一行至第十八行(十八个特征)的所有24小时的数据。放入sample
- 遍历20 天, 至此,20天每一个小时对应的特征都在每一列上。
- 遍历20天结束,将该array放入字典作为value,key为月份
每九个小时形成一个data,data有189列,有24(480-9)行
x=np.empty([12*471,18*9],dtype=float)
y=np.empty([12*471,1],dtype=float)
for month in range(12):
for day in range(20):
for hour in range(24):
if day==19 and hour>14:
continue
#对于每个sample的month里,每九个小时一取,取18行所有的feature
x[month*471+day*24+hour,:]=month_data[month][:,day*24+hour:day*24+hour+9].reshape(1,-1)
#取每个sample的month