[机器学习-回归实例] 李宏毅机器学习作业一:PM2.5 预测实例
简介
这是一个回归预测的实例,数据集来自李宏毅的《机器学习》课程的第一次作业,可以用来训练一个线性回归模型或者其他的回归模型,动手实践学习到的理论知识,在实践中去发现问题。这篇文章主要包括数据集的解释、数据的预处理过程及线性回归模型的代码实现这三个部分。由于这个数据集并不能直接使用,还需进行一些重构,为了对初学者更友好一些,我会提供重构完的可以读取后就直接使用的数据集,我也会提供 M a t l a b \rm Matlab Matlab 可直接使用的 . m a t \rm .mat .mat 文件供使用 M a t l a b \rm Matlab Matlab 的同学使用,不过还是希望同学们能够使用原始数据自己动手重构,重构的代码也会附在文中。
数据集解释
这个数据集是一个城市 2014 2014 2014 年一整年的空气质量监测的实测数据,包含了 A M B _ T E M P 、 C H 4 \rm AMB\_TEMP、CH4 AMB_TEMP、CH4 等十八种关于空气质量的参数,每个小时采集一次。在 t r a i n . c s v \rm train.csv train.csv 训练集数据集中包含了每个月前 20 20 20 天的每个小时采集的数据,一共有 12 × 20 × 24 12 \times20 \times24 12×20×24 个小时的监测数据。 下图截取了两天的前 10 10 10 个小时的原始数据的图,可以看到从第 4 4 4 列开始每一列是 1 1 1 个小时采集的数据,一共有 24 24 24 列。从第二行开始每 18 18 18 行是一天的 18 18 18 种监测数据。

我们要做的任务回归预测任务就是依据前 9 9 9 个小时的 18 18 18 种监测的参数预测第 10 10 10 个小时的 P M 2.5 \rm PM2.5 PM2.5 的取值。
数据集重构
直接用这个数据集显然是不容易进行训练的,因为属性值 X t r a i n \boldsymbol X_{train} Xtrain 和标签 y t r a i n \boldsymbol y_{train} ytrain 并没有分开,而且在 X t r a i n \boldsymbol X_{train} Xtrain 中应该每一行是一条数据,所以我们数据重构的任务就是从这个原始的数据集 t r a i n . c s v \rm train.csv train.csv 来构建我们方便使用的 X t r a i n \boldsymbol X_{train} Xtrain 和 y t r a i n \boldsymbol y_{train} ytrain 。
首先来计算一下我们总共可以构建出多少条数据,由于构建数据集的数据在时间上是要连续的,而每个月只有前 20 20 20 天的数据,所以我们没法跨月构建数据集,在任意一个月内,我们有 20 ( 天 ) × 24 ( 小 时 ) 20(天)\times24(小时) 20(天)×24(小时) 共 480 480 480 小时的数据,所以每 9 9 9 小时可以构建 X t r a i n \boldsymbol X_{train} Xtrain 上的一条数据,第 10 10 10 个小时的 P M 2.5 \rm PM2.5 PM2.5 可以作为这一条数据的标签。所以每个月可以有 471 471 471 条数据, 12 12 12 个月就有 5652 5652 5652 条数据。接下来是构建数据集的过程(以下代码是使用 Python 编写实现的,关于环境的配置等如有问题可在评论中联系我,我可以写个配置环境的教程):
Step1:读取数据集
调用 p a n d a s \rm pandas pandas 包和 n u m p y \rm numpy numpy 包,使用 pd.read_csv()
函数读取 t r a i n . c s v \rm train.csv train.csv 文件。
#读取数据集
import pandas as pd
import numpy as np
data = pd.read_csv('./train.csv', encoding = 'big5') #train.csv文件要与python代码文件(.py或.ipynb)在同一个目录下才行
去除表格中的前三列(第一行自动被去除了,不用主动去除),并将表格中 R A I N F