预测汽车油耗效率 MPG

这次做一个简单的线性回归的实验,用来预测汽车的油耗效率 MPG,让我们通过这次实验,更加清晰的了解一下LinearRegression,如果想更加清晰的了解的话,可以看看吴恩达机器学习ex1 Linear Regression (python)

如果想了解更多的知识,可以去我的机器学习之路 The Road To Machine Learning通道

目录

  • Read In Data
  • 探究数据模型
  • 拆分训练集和测试集
  • 单变量线性回归
    • 搭建线性回归模型
    • 可视化结果
      • 训练集
      • 测试集
    • 模型评价
  • 多变量线性回归模型
    • 模型得分
    • 可视化

Read In Data

我们先读入数据,其中,这里面一个有九列,他们分别都有对应的意义,其中有一列是汽车油耗效率mpg

  • mpg - > 燃油效率
  • cylinders -> 气缸
  • displacement - > 排量
  • horsepower - > 马力
  • weight - > 重量
  • acceleration - > 加速度
  • model year - > 型号年份
  • origin = > 编号
  • car name - > 原产地
import pandas as pd
import numpy as np
import matplotlib.pyplot as pltpath = '../data_files/3.MPG/auto-mpg.data'
columns = ["mpg", "cylinders", "displacement", "horsepower", "weight", "acceleration", "model year", "origin", "car name"]
# mpg - > 燃油效率
# cylinders -> 气缸
# displacement - > 排量
# horsepower - > 马力
# weight - > 重量
# acceleration - > 加速度
# model year - > 型号年份
# origin = > 编号
# car name - > 原产地
cars = pd.read_csv(path, delim_whitespace=True, names=columns)

cars.info()


这时候就读完数据了

探究数据模型

在我们可视化数据的时候,我们会发现origin和car name都是离散型的,就没有选择他们进行一个线性回归模型的搭建,除此之外,由于在horsepower中,有一些值是存在’?‘我们就要选取那些不是’?‘的进行操作

from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
cars = cars[cars.horsepower != '?']
#用散点图分别展示气缸、排量、重量、加速度与燃油效率的关系
fig = plt.figure(figsize=(13,20))
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['cylinders'],cars['mpg'],alpha=0.5)
ax1.set_title('cylinders')
ax2.scatter(cars['displacement'],cars['mpg'],alpha=0.5)
ax2.set_title('displacement')
ax3.scatter(cars['weight'],cars['mpg'],alpha=0.5)
ax3.set_title('weight')
ax4.scatter(cars['acceleration'],cars['mpg'],alpha=0.5)
ax4.set_title('acceleration')
ax5.scatter([float(x) for x in cars['horsepower'].tolist()],cars['mpg'],alpha=0.5)
ax5.set_title('horsepower')

从下图我们可以看出,汽车的燃油效率mpg与排量displacement、重量weight、马力horsepower三者都存在一定的线性关系,其中汽车重量weight与燃油效率线性关系最为明显,首先我们就利用weight一个单变量去构建线性回归模型,看看是否能预测出来

拆分训练集和测试集

Y = cars['mpg']
X = cars[['weight']]
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)

取数据中的20%作为测试集,其他均为测试集

单变量线性回归

搭建线性回归模型

from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr = lr.fit(X_train,Y_train)

利用训练集去训练模型

可视化结果

利用我们训练完的模型去测试一下我们的训练集和测试集

训练集

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('weight')
plt.ylabel('mpg')
plt.title('train data')
plt.show()

测试集

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('weight')
plt.ylabel('mpg')
plt.title('test data')
plt.show()

模型评价

print(lr.coef_)
print(lr.intercept_)
print('score = {}'.format(lr.score(X,Y)))
'''
[-0.00772198]
46.43412847740396
score = 0.6925641006507041
'''

可以看到,最后的结果的分数大约是0.69左右,还是挺不错的

多变量线性回归模型

刚刚我们是利用了单变量的线性回归模型,我们猜测,如果用多变量的线性回归模型会不会更好呢,因为汽车的燃油效率mpg与排量displacement、重量weight、马力horsepower三者都存在一定的线性关系
首先就要重新提取数据,为了对数据更加清晰,我们将预测出来mpg_prediction也加入数据中

cars = cars[cars.horsepower != '?']
mul = ['weight','horsepower','displacement'] # 选择三个变量进行建立模型
mul_lr = LinearRegression()
mul_lr.fit(cars[mul],cars['mpg']) # 训练模型
cars['mpg_prediction'] = mul_lr.predict(cars[mul])
cars.head()

模型得分

mul_score = mul_lr.score(cars[mul],cars['mpg'])
mul_score
# 0.7069554693444708

从结果可以看出来,这个模型得分大约是71,说明多变量线性回归模型还是比单变量线性回归模型优的,预测的也更加准确一点

from sklearn.metrics import mean_squared_error as mse
mse = mse(cars['mpg'],cars['mpg_prediction'])
print('mse = %f'%mse)
print('rmse = %f'%np.sqrt(mse))
'''
mse = 17.806188
rmse = 4.219738
'''

并且得出了MSE和RMSE的值

可视化

fig = plt.figure(figsize = (8,8))
ax1 = fig.add_subplot(3,1,1)
ax2 = fig.add_subplot(3,1,2)
ax3 = fig.add_subplot(3,1,3)
ax1.scatter(cars['weight'], cars['mpg'], c='blue', alpha=0.3)
ax1.scatter(cars['weight'], cars['mpg_prediction'], c='red', alpha=0.3)
ax1.set_title('weight')
ax2.scatter([ float(x) for x in cars['horsepower'].tolist()], cars['mpg'], c='blue', alpha=0.3)
ax2.scatter([ float(x) for x in cars['horsepower'].tolist()], cars['mpg_prediction'], c='red', alpha=0.3)
ax2.set_title('horsepower')
ax3.scatter(cars['displacement'], cars['mpg'], c='blue', alpha=0.3)
ax3.scatter(cars['displacement'], cars['mpg_prediction'], c='red', alpha=0.3)
ax3.set_title('displacement')
plt.show()


到这里又成功了,真不错,继续加油

每日一句
If you find a path with no obstacles, it probably doesn’t lead anywhere.
太容易的路,可能根本就不能带你去任何地方。

如果需要数据和代码,可以自提

  • 路径1:我的gitee
  • 路径2:百度网盘
    链接:https://pan.baidu.com/s/1U9dteXf56yo3fQ7b9LETsA
    提取码:5odf

机器学习实战三: 预测汽车油耗效率 MPG相关推荐

  1. 线性回归实战之分析汽车油耗效率8.18

    任务要求: 根据不同配置下的汽车使用一加仑的汽油跑的公里数这一数据,来预测一下不同重量的汽车在使用一加仑汽油时跑的公里数.   大致思路: (1)建立模型:采用sklearn中的线性回归模型,先进行数 ...

  2. 机器学习实战 AdaBoost预测患有疝气病的马的存活问题

    机器学习实战 使用AdaBoost来预测患有疝气病的马的存活问题 结果示例 完整代码 # -*- coding: utf-8 -*- # @Time : 2021/6/21 15:33 # @Auth ...

  3. 机器学习实战——分类及性能测量完整案例(建议收藏慢慢品)

    文章目录 1. 获取数据 2. 训练二元分类器 3. 性能测量 3.1 交叉验证测量准确率 3.2 混淆矩阵 3.3 精度和召回率 3.4 F1F_1F1​分数 3.5 精度/召回率权衡 3.6 RO ...

  4. tensorflow2 auto mpg汽车油耗预测实践(3.5节)

    tensorflow2 汽车油耗预测实践 tensorflow2 汽车油耗预测实践 1. 数据集 1.1 Auto MPG 1.2 数据清洗 1.3 数据处理 1.4 标准化 2. 搭建神经网络 3. ...

  5. 《机器学习实战》斧头书——第三章—决策树(1)——使用决策树预测你是否需要带隐形眼镜

    <机器学习实战>斧头书--决策树 一.对文章的说明 1.1 对本文有几点说明如下: 1.1.1 我是一个刚学没多久的小白,所以代码可能也会有错误,欢迎各位大佬提出我的问题,感谢: 1.1. ...

  6. Python实现汽车油耗预测_基于Tensorflow2.X

    目录 一.开发环境 二 .代码实现 2.1 准备操作 2.1.1 导入所需模块 2.1.2 matplotlib无法正常显示中文的解决方案(若无此情况可跳过) 2.2 加载数据集 2.3 数据处理 2 ...

  7. 疯狂的机器学习实战-银行营销预测

    机器学习实战-银行营销预测 问题: 数据集: 链接:https://pan.baidu.com/s/1TUOLr8jFbT38p_iUh1iBsQ 提取码:1234 银行营销数据集 这些数据与葡萄牙银 ...

  8. 《机器学习实战》学习笔记(八):预测数值型数据 - 回归

    欢迎关注WX公众号:[程序员管小亮] [机器学习]<机器学习实战>读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details ...

  9. 《机器学习实战》学习笔记(三):决策树

    欢迎关注WX公众号:[程序员管小亮] [机器学习]<机器学习实战>读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details ...

最新文章

  1. Javascript 对 CSS3 animation 动画的流程的简单控制
  2. C++中的yield和fork
  3. 关于arguments
  4. windows环境下运行.sh文件
  5. h5支付不能打开支付宝 ios_IOS H5支付调起微信支付宝客户端问题总结
  6. mysql 不join的原因
  7. ResNet超强变体CoTNet!一种新的Transformer计算机视觉模块!
  8. jboss 的debug启动4法
  9. 老板:kill -9 的原理都不知道就敢在线上执行?
  10. 数据结构——二叉链表创建二叉树(C语言版)
  11. SAP中常用到的会计知识
  12. Typora基本技巧
  13. 9大电商平台开具发票页调研
  14. 微信支付 android4.4,Android集成微信支付
  15. DAMO-YOLO全流程代码解读
  16. 第六章(项目进度管理)知识点
  17. 文件服务器迁移方法,文件服务器迁移工具
  18. 安装EDEM出现There is a problem with this Windows Installer package问题
  19. juju部署,本地源搭建
  20. 文件上传(感谢秦疆老师)

热门文章

  1. x86为什么不叫x32
  2. 使用微服务定制企业应用程序
  3. pytorch Glove 下载到使用
  4. C语言:浮点数float的储存方式。
  5. 一步一步教你在JCenter发布开源库
  6. led数码显示控制plc实验_实验三LED数码显示控制PLC实验报告.doc
  7. windows10 驱动开发环境搭建vs2019 helloworld
  8. STM32---波形输出
  9. vs2013中在使用stricmp函数时出现错误
  10. 群晖python套件包_群晖中给Python3安装pip工具以安装扩展包