前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习第3天:预测汽车的燃油效率

机器学习第3天:预测汽车的燃油效率

作者头像
K同学啊
发布2020-08-05 15:33:47
4560
发布2020-08-05 15:33:47
举报
文章被收录于专栏:明天依旧可好的专栏

文章目录
  • 一、具体实现步骤
    • 1.导入数据
    • 2.探究数据关系
    • 3.提取数据
    • 4.拆分数据
    • 5.训练模型
  • 二、可视化结果展示
    • 1.训练集
    • 2. 测试集
    • 3.计算模型得分
  • 三、多元线性回归
    • 1.训练模型
    • 2.计算得分
    • 3.可视化预测结果


写在前面: 这篇文章将通过线性回归模型预测汽车的燃油效率,文本所用到的数据以及代码可根据文末的联系方式向我索取

一、具体实现步骤

1.导入数据

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt

cars = pd.read_csv('../data/auto-mpg.data',names=["燃油效率","气缸","排量","马力","重量","加速度","型号年份","编号","原产地"],delim_whitespace = True)
cars.head()

2.探究数据关系

代码语言:javascript
复制
import numpy as np
import matplotlib.ticker as ticker
#删除horsepower值为'?'的行
cars = cars[cars.马力 != '?']
#设置中文显示
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']

#用散点图分别展示气缸、排量、重量、加速度与燃油效率的关系
fig = plt.figure(figsize = (13,10))
ax1 = fig.add_subplot(321)
ax2 = fig.add_subplot(322)
ax3 = fig.add_subplot(323)
ax4 = fig.add_subplot(324)
ax5 = fig.add_subplot(325)
ax1.scatter(cars['气缸'], cars['燃油效率'], alpha=0.5)
ax1.set_title('气缸')
ax2.scatter(cars['排量'], cars['燃油效率'], alpha=0.5)
ax2.set_title('排量')
ax3.scatter(cars['重量'], cars['燃油效率'], alpha=0.5)
ax3.set_title('重量')
ax4.scatter(cars['加速度'], cars['燃油效率'], alpha=0.5)
ax4.set_title('加速度')
ax5.scatter([ float(x) for x in cars['马力'].tolist()], cars['燃油效率'], alpha=0.5)
ax5.set_title('马力')

从上图中可以看出汽车的燃油效率与排量、重量、马力三者都存在一定的线性关系,其中汽车重量与燃油效率线性关系最为明显,下面我们取这二者来构建一元线性回归模型,看看是否能通过汽车重量来预测汽车的燃油效率。

3.提取数据

代码语言:javascript
复制
Y = cars['燃油效率']
X = cars['重量']
X = X.reshape(len(X),1)
Y = Y.reshape(len(Y),1)

4.拆分数据

代码语言:javascript
复制
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)

5.训练模型

代码语言:javascript
复制
from sklearn.linear_model import LinearRegression
LR = LinearRegression()
LR = LR.fit(X_train, Y_train)

二、可视化结果展示

1.训练集

代码语言:javascript
复制
import matplotlib.pyplot as plt

plt.scatter(X_train, Y_train, color='red', alpha=0.3)
plt.scatter(X_train, LR.predict(X_train), color='green', alpha=0.3)
plt.xlabel("重量")
plt.ylabel("燃油效率")  
plt.title("这是训练数据")
plt.show()

2. 测试集

代码语言:javascript
复制
plt.scatter(X_test, Y_test, color='blue', alpha=0.3)
plt.scatter(X_train, LR.predict(X_train), color='green', alpha=0.3)
plt.xlabel("重量")
plt.ylabel("燃油效率")
plt.title("这是测试集数据")
plt.show()

3.计算模型得分

代码语言:javascript
复制
score = LR.score(cars[['重量']],cars['燃油效率'])
score
"""
得分为:0.6925641006507041
"""

通过汽车重量与燃油效率构建的一元线性回归模型的得分为0.69,上文我们得知汽车的燃油消耗率不仅和汽车重量是线性线性关系,也和汽车排量、马力存在着线性关系。如果采用多元线性回归模型预测效果是否更好呢?

三、多元线性回归

1.训练模型

代码语言:javascript
复制
#初始化模型
mul_LR_model = LinearRegression()
"""
拟合模型
多元线性回归模型的调用相对于一元线性回归,仅需要将X的传入由一个变为多个,即
由:LR_model.fit(cars['重量'], cars['燃油效率'])
变为:LR_model.fit(cars[['重量','马力','排量']], cars['燃油效率'])
"""
mul_LR_model.fit(cars[['重量','马力','排量']], cars['燃油效率'])
#预测
cars['燃料效率预测值'] = mul_LR_model.predict(cars[['重量','马力','排量']])
#显示
cars.head(5)

2.计算得分

代码语言:javascript
复制
mul_score = mul_LR_model.score(cars[['重量','马力','排量']], cars['燃油效率'])
mul_score
"""
mul_score得分为:0.7069554693444708
"""

多元线性回归模型的得分为0.71相对于一元线性回归模型(0.69分)得分更高,预测效果更好。

3.可视化预测结果

代码语言:javascript
复制
fig = plt.figure(figsize = (16,8))
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax1.scatter(cars['重量'], cars['燃油效率'], c='blue', alpha=0.3)
ax1.scatter(cars['重量'], cars['燃料效率预测值'], c='red', alpha=0.3)
ax1.set_title('重量')
ax2.scatter([ float(x) for x in cars['马力'].tolist()], cars['燃油效率'], c='blue', alpha=0.3)
ax2.scatter([ float(x) for x in cars['马力'].tolist()], cars['燃料效率预测值'], c='red', alpha=0.3)
ax2.set_title('马力')
ax3.scatter(cars['排量'], cars['燃油效率'], c='blue', alpha=0.3)
ax3.scatter(cars['排量'], cars['燃料效率预测值'], c='red', alpha=0.3)
ax3.set_title('排量')
plt.show()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、具体实现步骤
    • 1.导入数据
      • 2.探究数据关系
        • 3.提取数据
          • 4.拆分数据
            • 5.训练模型
            • 二、可视化结果展示
              • 1.训练集
                • 2. 测试集
                  • 3.计算模型得分
                  • 三、多元线性回归
                    • 1.训练模型
                      • 2.计算得分
                        • 3.可视化预测结果
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档