机器学习线性回归算法预测PM2.5
程序员文章站
2022-05-02 16:32:01
...
数据集:
train.csv: 每个月前 20 天的完整数据。
test.csv : 从剩下的数据当中取样出连续的 10 小时为一笔,前九小时的所有观测数据当作 feature,第十小时的 PM2.5 当作 answer。一共取出 240 笔不重复的 test data,请根据 feature 预测这 240 笔的 PM2.5。
数据集下载链接:https://aistudio.baidu.com/aistudio/datasetlist/2
项目代码:
from sklearn import linear_model
import numpy as np
import pandas as pd
#加载数据
train_data= pd.read_csv('data/train.csv') #默认情况下,会把数据内容的第一行默认为字段名标题,data_df中读取到的数据不包括文件第一行
#整理训练集数据,留下要用的数据
train_data_labels = list(train_data.columns.values)
#删除用不到的列
train_data1=train_data.drop([train_data_labels[0],train_data_labels[1],train_data_labels[2],'10','11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23'],axis=1)
#过滤留下要用的行
train_data2=np.array(train_data1) #转换为数组
train_arr=train_data2[9]
i=9
while i<len(train_data2)-18:
i=i+18
train_arr = np.vstack((train_arr, train_data2[i]))
#整理测试集数据,留下要用的数据
test_data= pd.read_csv('data/test.csv',header=None)
test_data1=np.array(test_data) #转换为数组
test_arr=test_data1[8]
i=8
while i<len(test_data1)-18:
i=i+18
test_arr = np.vstack((test_arr, test_data1[i]))
X_train=np.delete(train_arr,9,axis=1)
i_=[0,1,2,3,4,5,6,7,8]
y_train=np.delete(train_arr,i_,axis=1)
#线性回归的代码,生成y_predict作为测试集的预测结果
regr = linear_model.LinearRegression()
# 使用上一步得到的模型去训练拆分出来的训练数据集
regr.fit(X_train, y_train)
# 使用训练之后的模型去预测测试数据集
i_=[0,1]
x_test=np.delete(test_arr,i_,axis=1)
y_predict= regr.predict(x_test)
col1=np.array(test_arr[0:len(test_arr), 0])
col2=np.array(y_predict)
#将二维数组转化为一维,并修改不合理数据
col3 = []
i=0
while i<len(col2):
if float(col2[i]) < 0:
col3.append(0)
else:
col3.append(float(col2[i]))
i = i + 1
# 字典中的key值即为csv中列名
dataframe = pd.DataFrame({'id': col1, 'result': col3})
# 将DataFrame存储为csv,index表示是否显示行名,default=True
dataframe.to_csv("data/result.csv", index=False, sep=',')
预测结果:
上一篇: 决策树(decision tree)