解读李宏毅机器学习PM2.5数据处理部分(2)

第一部分解读链接:解读李宏毅机器学习数据处理部分(1)_Hey Kids!!!的博客-CSDN博客

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
            x[month * 471 + day * 24 + hour, :] = month_data[month][:,day * 24 + hour: day * 24 + hour + 9].reshape(1,-1)  # vector dim:18*9 (9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9)
            y[month * 471 + day * 24 + hour, 0] = month_data[month][9, day * 24 + hour + 9]  # value

这个部分的数据处理依然把我难的大汗淋漓 = =

我们前面有提到month_data 是一个字典,月份是key,(18,480)的数组是value

x和y为什么这样设置:

x-   行:12是12个月份,471的含义是480个小时每9小时算一笔,举个例子:0-8,1-9,.....,472-480,这里总共471笔,

       列:我画个图就明白了。拿第一第二列为例子:

解读李宏毅机器学习PM2.5数据处理部分(2)_第1张图片

 y-  就是标签x取的是前九小时作为训练,然后第十小时数据作为label,这里很好理解不做赘述。

我们来承接上面的代码看看老师是怎么操作的

month = 0

day = 0

hour = 0:24

x[0, :] = month_data[0][:,0:9].reshape(1,-1)

month_data[0]对应的是第一个月的数据,我们知道格式是(18,480)取所有18行,然后列取前九小时。

我们知道在上一段代码中我已经把每个月20天的数据按照18个feature全给他分好了。

这样切下来的就是完整的18个feature对应的小时数据。

reshape(1,-1)的作用就是把它全部拉成一行,作为x的第一行

总结一下:

上一篇文章提到的代码段的目的是将分散在每天的各个feature的数据重新整合归类,这一篇的代码段的目的是把每一个时间段的数据进行汇总,第一行只要0-8小时的所有数据,第二行只要1-9小时的所有数据以此类推,这样处理就能把数据完美划分了,不得不说李宏毅老师还是厉害的。

现在这个代码干了啥应该就迎刃而解了:)

你可能感兴趣的:(python,数据挖掘,机器学习,人工智能,深度学习)