李宏毅机器学习2021系列
作业1-PM2.5预测
项目描述
- 本次作业的资料是从行政院环境环保署空气品质监测网所下载的观测资料。
- 希望大家能在本作业实现 linear regression 预测出 PM2.5 的数值。
数据集介绍
- 本次作业使用丰原站的观测记录,分成 train set 跟 test set,train set 是丰原站每个月的前 20 天所有资料。test set 则是从丰原站剩下的资料中取样出来。
- train.csv: 每个月前 20 天的完整资料。
- test.csv : 从剩下的资料当中取样出连续的 10 小时为一笔,前九小时的所有观测数据当作 feature,第十小时的 PM2.5 当作 answer。一共取出 240 笔不重複的 test data,请根据 feature 预测这 240 笔的 PM2.5。
- Data 含有 18 项观测数据 AMB_TEMP, CH4, CO, NHMC, NO, NO2, NOx, O3, PM10, PM2.5, RAINFALL, RH, SO2, THC, WD_HR, WIND_DIREC, WIND_SPEED, WS_HR。
项目要求
- 请手动实现 linear regression,方法限使用 gradient descent。
- 禁止使用 numpy.linalg.lstsq
数据准备
无
环境配置/安装
# !pip install --upgrade pandas
import pandas as pd
import numpy as np
import math
import matplotlib.pyplot as plt
import paddle
import os
# 复制数据集到指定目录
!mkdir work/hw1_data
!cp data/data74756/train.csv -d work/hw1_data && cp data/data74756/test.csv -d work/hw1_data
mkdir: cannot create directory ‘work/hw1_data’: File exists
Load data
df = pd.read_csv('work/hw1_data/train.csv', encoding='big5')
print(df.shape)
(4320, 27)
df.head() # 查看引入的csv文件前5行数据
日期 | 測站 | 測項 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | ... | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2014/1/1 | 豐原 | AMB_TEMP | 14 | 14 | 14 | 13 | 12 | 12 | 12 | ... | 22 | 22 | 21 | 19 | 17 | 16 | 15 | 15 | 15 | 15 |
1 | 2014/1/1 | 豐原 | CH4 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | ... | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 |
2 | 2014/1/1 | 豐原 | CO | 0.51 | 0.41 | 0.39 | 0.37 | 0.35 | 0.3 | 0.37 | ... | 0.37 | 0.37 | 0.47 | 0.69 | 0.56 | 0.45 | 0.38 | 0.35 | 0.36 | 0.32 |
3 | 2014/1/1 | 豐原 | NMHC | 0.2 | 0.15 | 0.13 | 0.12 | 0.11 | 0.06 | 0.1 | ... | 0.1 | 0.13 | 0.14 | 0.23 | 0.18 | 0.12 | 0.1 | 0.09 | 0.1 | 0.08 |
4 | 2014/1/1 | 豐原 | NO | 0.9 | 0.6 | 0.5 | 1.7 | 1.8 | 1.5 | 1.9 | ... | 2.5 | 2.2 | 2.5 | 2.3 | 2.1 | 1.9 | 1.5 | 1.6 | 1.8 | 1.5 |
5 rows × 27 columns
df.tail()
日期 | 測站 | 測項 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | ... | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4315 | 2014/12/20 | 豐原 | THC | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.7 | 1.7 | ... | 1.8 | 1.8 | 2 | 2.1 | 2 | 1.9 | 1.9 | 1.9 | 2 | 2 |
4316 | 2014/12/20 | 豐原 | WD_HR | 46 | 13 | 61 | 44 | 55 | 68 | 66 | ... | 59 | 308 | 327 | 21 | 100 | 109 | 108 | 114 | 108 | 109 |
4317 | 2014/12/20 | 豐原 | WIND_DIREC | 36 | 55 | 72 | 327 | 74 | 52 | 59 | ... | 18 | 311 | 52 | 54 | 121 | 97 | 107 | 118 | 100 | 105 |
4318 | 2014/12/20 | 豐原 | WIND_SPEED | 1.9 | 2.4 | 1.9 | 2.8 | 2.3 | 1.9 | 2.1 | ... | 2.3 | 2.6 | 1.3 | 1 | 1.5 | 1 | 1.7 | 1.5 | 2 | 2 |
4319 | 2014/12/20 | 豐原 | WS_HR | 0.7 | 0.8 | 1.8 | 1 | 1.9 | 1.7 | 2.1 | ... | 1.3 | 1.7 | 0.7 | 0.4 | 1.1 | 1.4 | 1.3 | 1.6 | 1.8 | 2 |
5 rows × 27 columns
df['測項'][:20]