线性回归预测油耗

本文通过预测汽车一加仑油能跑多少公里来熟悉python中线性回归模型。数据集可在该网址进行下载:http://archive.ics.uci.edu/ml/datasets/Auto+MPG,数据是网页版的,先复制到文本文档中再保存成data格式。

一、读入数据集

import pandas as pd
import matplotlib.pyplot as plt
columns = ['mpg','cylinders','displacement','horsepower','weight','acceleration',
           'model year','origin','car name']

#mpg(miles per gallon)为每加仑可以行驶多少公里,一加仑约等于3.79升
#我们的数据不是csv格式的,所以这里用read_table,第二个参数指数据是不是以空格符间隔的,第三个参数加上每列的特征名

data = pd.read_table('auto_mpg.data',delim_whitespace=True,names=columns)
data.head()

读入的数据如下所示:

简单分析一下车重‘weight’和加速度‘acceleration’分别对油耗‘mpg’的影响

fig = plt.figure(figsize = (10,10))
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(2,1,2)

data.plot('weight','mpg',kind = 'scatter',ax = ax1)
data.plot('acceleration','mpg',kind = 'scatter',ax = ax2)
plt.show()

结果如下图所示:

可看出车重越重,油耗越大即每加仑油跑的路程越少,加速度越快,油耗越小,即每加仑油跑的路程越多。

二、选择模型

from sklearn.linear_model import LinearRegression
model = LinearRegression()

#这里以一个特征‘weight’举例便于可视化,真正预测时要用到多个特征,比如#model.fit(data[['weight','acceleration']],data[['mpg']])

model.fit(data[['weight']],data[['mpg']])#训练
prediction = model.predict(data[['weight']])#预测

print(prediction[0:5])#显示预测值
print(data['mpg'][0:5])#显示真实值

####运行结果如下:
[[19.41852276]
 [17.96764345]
 [19.94053224]
 [19.96356207]
 [19.84073631]]
0    18.0
1    15.0
2    18.0
3    16.0
4    17.0
Name: mpg, dtype: float64

三、模型评估

plt.scatter(data['weight'],data['mpg'],c = 'red')#车重与真实值
plt.scatter(data['weight'],prediction,c = 'blue')#车重与预测值

结果如下图所示:

线性回归模型用均方差mse进行评估

#线性回归模型的评估,一般用mse(均方差)
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(data['mpg'],prediction)
mse = mse **(0.5)#一般再开个根号
print(mse)

随便拿一个数据进行预测

import numpy as np
model.predict(np.array(data['weight'].iloc[1]).reshape(1,-1))

####运行结果如下:
array([[17.96764345]])

猜你喜欢

转载自blog.csdn.net/qq_24946843/article/details/81837818