python线性回归预测pm2.5_线性回归预测PM2.5----台大李宏毅机器学习作业1(HW1)

这篇博客介绍了如何使用Python进行线性回归预测PM2.5含量。作者首先对训练数据进行预处理,处理空数据并切割数据帧以匹配模型要求。接着,建立线性回归模型,定义损失函数并采用梯度下降法进行参数更新。在训练过程中应用了正则项以防止过拟合。最后,分析模型在验证集上的表现,提出模型改进的建议,如优化数据切分方式和构建更合理的模型结构。
摘要由CSDN通过智能技术生成

一、作业说明

给定训练集train.csv,要求根据前9个小时的空气监测情况预测第10个小时的PM2.5含量。

训练集介绍:

(1)、CSV文件,包含台湾丰原地区240天的气象观测资料(取每个月前20天的数据做训练集,12月X20天=240天,每月后10天数据用于测试,对学生不可见);

(2)、每天的监测时间点为0时,1时......到23时,共24个时间节点;

(3)、每天的检测指标包括CO、NO、PM2.5、PM10等气体浓度,是否降雨、刮风等气象信息,共计18项;

用excel打开,繁体字会出现乱码:

用notepad++可以正常打开:

二、思路分析及代码实现

前注:下文中提到的“数据帧”并非指pandas库中的数据结构DataFrame,而是指一个二维的数据包。

2.1 数据预处理

训练集中数据排列形式符合人类观察数据的习惯,但并不能直接拿来喂给模型进行训练,因此需要对数据进行预处理。

浏览数据可知,数据中存在一定量的空数据NR,且多存在于RAINFALL一项。对于空数据,常规的处理方法无非就是删除法和补全法两种。查阅资料后发现,RAINFALL表示当天对应时间点是否降雨,有降雨值为1,无降雨值为NR,类似于布尔变量。因此可以采用补全法处理空数据:将空数据NR全部补为0即可。

根据作业要求可知,需要用到连续9个时间点的气象观测数据,来预测第10个时间点的PM2.5含量。针对每一天来说,其包含的信息维度为(18,24)(18项指标,24个时间节点)。可以将0到8时的数据截取出来,形成一个维度为(18,9)的数据帧,作为训练数据,将9时的PM2.5含量取出来,作为该训练数据对应的label;同理可取1到9时的数据作为训练用的数据帧,10时的PM2.5含量作为label......以此分割,可将每天的信息分割为15个shape为(18,9)的数据帧和与之对应的15个label。

训练集中共包含240天的数据,因此共可获得240X15=3600个数据帧和与之对应的3600个label。

#数据预处理

defdataProcess(df):

x_list, y_list=[], []#df替换指定元素,将空数据填充为0

df = df.replace(['NR'], [0.0])#astype() 转换array中元素数据类型

array =np.array(df).astype(float)#将数据集拆分为多个数据帧

for i in range(0, 4320, 18):for j

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值