机器学习:PM2.5预测MATLAB实现(李宏毅HW1)

该博客介绍了如何使用MATLAB实现李宏毅机器学习课程中的PM2.5预测任务,包括从CSV文件提取数据、数据映射、固定学习速率计算以及Adagrad优化。通过将前9小时气象数据作为输入,预测当前小时的PM2.5浓度,并对比实际值进行结果评估。
摘要由CSDN通过智能技术生成

李宏毅机器学习:PM2.5预测MATLAB实现


上一篇采用两个参数进行gradient descend计算线性回归问题,由于自己也是新手才学不久,最近又在啃周志华著的《机器学习》,深深的陷进去了,现在才想起吧这个未完成的任务完成,我也是新手也请大神指点。
直接进入正题

将数据提取出来我这里分成了两步

1.将数据从train.csv中提取到MATLAB中

将数据存放在data矩阵中,其中矩阵的每一行是一种气象数据(feature)。tip:MATLAB中csvreader函数,计算行和列是从0开始计数的
BTW:由于MATLAB中csvreader函数只能读取数据,我先将train.csv中的NR改成了0(我也很痛苦,本来想直接实现的,试了好多办法比如textscan都不太好用,到时候学习中有好办法再改吧)

直接上代码


new_feature=1;%定义CSV文件中特征行的变化 取1是指第二行才有数据

for day=0:239%一次循环读取1天24小时1种特征  定义收集数据天数的变化,共240天
    for feature=1:18

        data( feature,day*24+1:day*24+24 )=...%读取的是1*24列的矩阵
             csvread('train.csv',new_feature,3,[new_feature,3, new_feature,26 ]);
        new_feature=new_feature+1;

    end

end
clear day feature new_feature

2.将data矩阵中的数据映射到x,y中

选取前9小时气象数据作为预测的输入(x),预测当前小时的PM2.5
x是5652X163阶矩阵,5652是指train.csv中采集的是一个月中前20天的数据,每天24小时,取前9小时作为训练数据共有24X20-9组数据又有12个月
同时为了方便矩阵计算将x的最后一列加上一个全为1的向量用于计算bias。
代码如下

%data中前24*20为一个月,对每个月进行取值每10小时1组前9为training set共471(480-9)组
x=zeros(471*12,18*9);
y=zeros(471*12,1);
for month=0:11
    for j=1:471
        for hours=0:9
            if(hours<9)
                x(471*month+j,hours*18+1:hours*18+18)=data(:,480*month+j +hours);%前9组做输入
                %480*month+j是指每个月有480组数据,每个月内的数据由j选择
            else
                y(471*month+j,1)=data(10,480*month+j +hours);%PM2.5在第十行
            end
        end
    end
end

%将全为1的向量加入矩阵末尾用于计算bias
bias=ones(471*12,1);
x=[x,bias];

clear month j hours

固定学习速率计算

先进行矩阵计算
符号规定 X 为输入矩阵(包含最后一列为1), Y train.csv的实际值, Ycalc 为计算值,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值