李宏毅2020机器学习作业一

Step1:读懂题目题目的意思训练集是:12个月–>每月的前20天–>每天的24小时–>每小时的18种不同属性的数值测试集:240天–>连续的9小时–>18种不同的属性要求的输出:根据某天连续的9小时–>18种不同的属性,预测第10小时的PM2.5的值。也就是通过一个18*9的矩阵预测出来一个值Step2:数据预处理# 读取数据csv文件,将csv数据保存为矩阵data = pd.read_csv('./train.csv', encoding='bi
摘要由CSDN通过智能技术生成

Step1:读懂题目

李宏毅机器学习HW1
李宏毅机器学习HW1题目的意思

  • 训练集是:12个月–>每月的前20天–>每天的24小时–>每小时的18种不同属性的数值
  • 测试集:240天–>连续的9小时–>18种不同的属性
  • 要求的输出:根据某天连续的9小时–>18种不同的属性,预测第10小时的PM2.5的值。也就是通过一个18*9的矩阵预测出来一个值

Step2:数据预处理

# 读取数据csv文件,将csv数据保存为矩阵
data = pd.read_csv('./train.csv', encoding='big5')  # read_csv顾名思义-读取csv文件    big5的编码是台湾和香港用的繁体
# print(data)
data = data.iloc[:, 3:]  # 要全部行、不要前三列
data[data == 'NR'] = 0  # FAINFULL的值原来是NR,现实意义中表示是否降雨那么可以用0 1 来表示
# print(data)
arr_data = data.to_numpy()  # 将data转换为numpy矩阵

数据处理到这里首先得到了一个二维的矩阵,一共有12*20*18行,每一行有24列
在这里插入图片描述矩阵现在的结构是:
在这里插入图片描述
接下来要进一步处理数据,大致思想是把一个月的数据放到宏观的一行上去,这样一个月的小时就会一字排开,我们的实验是要求输入连续的9个小时的时间来预测第10小时的PM2.5值,放在一大行的好处就是可以有更多的连续9小时作为输入来训练。(我们将一个月的第一天到第二十天横向排序,那么我们可以使用滑动窗口的思想,取大小为9的窗口,从第一天的第0时一直可以划到第20天的第14时[为什么是14时,因为14+9=23,最后一个小时的PM2.5数据需要得到,所以这样处理可以最大化的利用已知训练集从而得到更多的数据]),画个图可能更好理解:
在这里插入图片描述首先把一个月放到一大行里,然后在慢慢滑动起始的时间,每9小时为为一组输入数据
在这里插入图片描述最后,再把12个月放在一起。
下面我们用代码实现以上思想,因为第一次接触这样处理数据还比较抽象,所以这里是直接copy了老师的代码再去理解。

month_data = {
   }
for month in range(12):
    sample = np.empty([18, 480])  # 一行sample代表一个月的20天数据-->18行(18种不同属性,每一天24小时一共20天,所以共有480列)
    for day in range(20):
        sample[:, (day * 24):((day + 1) * 24)] = arr_data[18 * (20 * month + day):18 * (20 * month + day + 1), :]
        # 把一个月的所有天拼凑到一行上去
    month_data[month] = sample

# 生成新的训练集矩阵
x = np.empty([12 
  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值