一、题目:
二、代码
import csv
import numpy as np
# 处理训练数据,得到train_x,train_y
# 其中,train_x(12×471,18×9),train_y(12×471,1×1)
def train_data_process(file_name):
# 打开train.csv,将file对象转为reader对象,并存储在reader
with open(file_name, 'r+', encoding='gbk') as f:
reader = csv.reader(f, delimiter=',')
# 初始化一个18维的向量(18中污染物),向量的每个属性均为一个向量(连续12×20×24=12×480h)
# 即二维数组,18列(污染物)×
data = []
for i in range(18):
data.append([])
# 遍历reader对象,每18行分别读入18维向量,重复进行
index = 0
for row in reader:
# 首行不读
if reader.line_num == 1:
continue
# 前三列(0,1,2)不读
for i in range(3, len(row)):
if row[i] == 'NR':
row[i] = 0
data[index].append(row[i])
index = (index + 1) % 18
# 将data分割得到12month×471个样本;其中,每个样本为train_x,train_y
# Q:我思考,这些样本之间要满足怎样的关系呢?还是说没关系也行呢?有关系又行不行呢?
# Q:因为每个月的样本之间,不用月的样本之间,其关系肯定不一致,so?
# A:线性模型中,所有样本组成一个矩阵,每个样本为独立一行(作为出入),我们只需要保证单个样本之内
# 的关系是一致的,即连续10个小时(其第10个小时作为y),样本之间的关系我们无需理会
# 换句话来说,就是我们要保证输入-输出的对应性,而不用保证输入之间的关系
# 其中,train_y依次排序即可,使用的时候也依次取
# 二维矩阵要整成一维序列,即向量 []