pytorch实战(一)hw1——李宏毅老师作业1

任务描述:利用前9小时数据,预测第10小时的pm2.5的数值,回归任务

 kaggle地址:https://www.kaggle.com/c/ml2020spring-hw1

 

训练集为: 12个月*20天*18维(共4320行) , 24小时(列)

每月的前20天

 

test为: 18*240行, 9 列

每月的后10天随机采样连续9小时

 

宏观上理解:

一、X和y什么样的

一个batch中,X可以是18维*9列,对应一个数值y,即第10小时的pm2.5的值

为了方便操作,可以把x拉成一个行向量,18*9=162,这样y=W*x,目标是预测W,线性模型(nn.Linear)

可以在X末尾加上一列常数1,模拟bias,即y = W*x+b(注意:train和test要用相同的操作,如X末尾都要加1,如X都同时归一化或不归一)

 

二、第二个难点,如何处理数据

可以将同一个月的小时数连接在一起,制作训练集,一个月有20天*24=480小时,每10小时制作成一个batch,可以制作471个batch

实战技巧中,取dataframe.values转成numpy来处理,将同一月份每18行按照水平方式拼接,np.hstack

 

整个算法的细节以及流程:

1. 加载csv,注意encoding='big5', engine = 'python'

2. 判断df是否有缺失值, df.isnull().any()

3. 是否有异常值,要转换 df.replace("NR",0, inplace = True)

4. 加工数据,拆分X和y

5. 进一步,拆成train和valid

6. 进入pytorch环节

(1)数据初始化,torch.tensor(X,y.....)

(2)定义model,loss,optim

(3)训练,绘图,观察loss,保存最好的model,torch.save(model,path_1)

7. test上预测,test数据加工,X_test转成tensor,加载模型预测,model = torch.load(path_1)

8. 写入csv, import csv

posted @ 2020-11-12 11:31  qiezi_online  阅读(459)  评论(0编辑  收藏  举报