前几天我们介绍了线性回归模型的原理,今天我们主要来看如何用Python代码将线性回归写出来。

首先,打开我们的jupyter notebook,把常用的一些包都加载上吧:

import numpy as np
import pandas as pd

然后,加载我们的线性回归模型:

from sklearn.linear_model import LinearRegression

数据集就选择sklearn包自带的“波士顿房价预测数据集”:

from sklearn.datasets import load_boston

将数据集放到boston对象中,并查看它的内容:

boston = load_boston()
boston.keys()
dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])

影响房价的特征在data中,房价在target中,我们先来看下有哪些特征:

boston['feature_names']
array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD','TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')

可以看到,一共有13个特征之多。再看下房屋价格的前5行数据:

boston['target'][:5]
array([24. , 21.6, 34.7, 33.4, 36.2])

好了,下面先把数据集分成训练集和测试集:

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(boston['data'],boston['target'],random_state=0)

构建我们的回归模型并训练它:

lr = LinearRegression()
lr.fit(X_train,y_train)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,normalize=False)

可以看到,返回了一个训练完成的线性回归模型。我们可以看到该线性模型的系数和截距:

lr.coef_ #系数
array([-1.17735289e-01, 4.40174969e-02, -5.76814314e-03, 2.39341594e+00,-1.55894211e+01, 3.76896770e+00, -7.03517828e-03, -1.43495641e+00,2.40081086e-01, -1.12972810e-02, -9.85546732e-01, 8.44443453e-03,-4.99116797e-01])

可以看出,给我们的13个特征都加了一个系数。再来看下截距:

lr.intercept_ #截距
36.933255457118975

之后我们就可以进行预测了,这里用score方法可以直接看出该模型在训练集和测试集上的性能:

lr.score(X_train,y_train) #模型在训练集上的性能
0.7697699488741149
lr.score(X_test,y_test) #模型在测试集上的性能
0.6354638433202129

我们看到,模型在训练集上的精确度是77%左右,在测试集上是64%左右。测试集的精度低于训练集,有可能是过拟合,但鉴于两者精度都不高,也有欠拟合的可能性。

但我们还是用有正则化项、防止过拟合的岭回归来试试。首先,还是加载模型:

from sklearn.linear_model import Ridge

然后在训练集上使用它:

ridge_model = Ridge().fit(X_train,y_train)

最后,评估岭回归模型的性能:

ridge_model.score(X_train,y_train)
0.7678858330771393
ridge_model.score(X_test,y_test)
0.626618220461385

从上面的代码看出,我们的岭回归模型的泛化能力并没有提高,那就很有可能是我们的模型复杂度不够,需要给原始数据增加一些特征,这个我们后面会讨论。

除了岭回归,我们还有lasso回归,也是用来防止过拟合的,我们来看看它的表现如何:

from 

可以看出,Lasso回归模型在训练集和测试集上的表现都很差,而且不如我们原始的线性模型,再次说明需要增加模型的复杂度。

还需要说明的是,Ridge和Lasso回归模型中,正则化项的系数是通过alpha参数来调节的。


更多干货内容,欢迎关注今日头条账号“人人都会机器学习”;你也可以搜索知识星球“自学机器学习”,里面也有精彩内容;还可以关注公众号:“数据实干家”,为你献上数据大餐。

python 线性回归_用Python实现线性回归算法相关推荐

  1. 第一章 第一节:Python基础_认识Python

    Python基础入门(全套保姆级教程) 第一章 第一节:Python基础_认识Python 1. 什么是编程 通俗易懂,编程就是用代码编写程序,编写程序有很多种办法,像c语言,javaPython语言 ...

  2. python做线性回归_利用python实现简单的线性回归

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 用pytho ...

  3. 排序算法python实现_用Python,Java和C / C ++实现的选择排序算法

    排序算法python实现 The Selection Sort Algorithm sorts the elements of an array. In this article, we shall ...

  4. 动态照片墙 python 实现_利用python生成照片墙的示例代码

    这篇文章主要介绍了利用python生成照片墙的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 PIL(Python Im ...

  5. python 字符识别_使用python进行光学字符识别入门

    python 字符识别 语言模型设计 (Language Model Designing) Optical Character Recognition is the conversion of 2-D ...

  6. 类的继承python事例_【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸...

    作者:白宁超 2016年10月10日22:36:57 摘要:继一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc入门资料包含了基本要点.本文是对文档常用核心要点进行梳理,简 ...

  7. excel python插件_利用 Python 插件 xlwings 读写 Excel

    Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...

  8. 网络安全用python吗_使用Python进行网络安全渗透——密码攻击测试器

    相关文章: 本篇将会涉及: HTTP 基本认证 对HTTP Basic认证进行密码暴力攻击测试 什么是HTTP 基本认证 HTTP基本认证(HTTP Basic Authentication)是HTT ...

  9. 日本python教材_自学python:完整入门python书单!

    小伙伴总在询问Python的书,哎呀,动力所致,书单来了.9本,涵盖范围蛮大的.Python热持续中,入门计算机首选语言... 1.<父与子的编程之旅> 关注威信工宗号:程序员大牛,即可领 ...

  10. python字符串_(Python基础教程之七)Python字符串操作

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

最新文章

  1. IDEA打包成war部署web项目
  2. 省选专练之后缀自动机SPOJ1811LCS - Longest Common Substring
  3. 职场社交:做职场版微信不如做职场版微博
  4. 科大星云诗社动态20210823
  5. 【C++深度剖析教程3】C++中类的静态成员变量
  6. (6)<a>标签如何实现点击既不刷新也不跳转的功能
  7. 艾伟_转载:在C#中实现3层架构
  8. EasyUI:form表单提交前验证
  9. 服务器虚拟计算节点,什么是云服务器计算节点
  10. 使用iptables+脚本实现只允许中国IP访问服务器
  11. 基于国密算法SM2非证书标识公钥密码技术(IPK)
  12. 燕十八PHP公益课堂学习笔记
  13. 每个程序员都可以入手的小项目创意大集合
  14. python爬虫——爬取豆瓣TOP250电影
  15. Oneday01 | ~scanf、冒泡排序、sort排序
  16. Python:实现scoring评分算法(附完整源码)
  17. 成为一名合格的java工程师
  18. Windows下清理redis缓存
  19. 一个十年程序员写给大家的忠告
  20. git中提示 please tell me who you are

热门文章

  1. Windows10+Virtual box+ubuntu17.10
  2. Python01——初识python
  3. NodeJS Events模块源码学习
  4. 微信小程序,是不是一盘可口的菜!
  5. 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
  6. ie下input的type属性为hidden问题
  7. String.fromCharCode()
  8. 在PHP中实现StringBuilder类
  9. MIT自然语言处理第五讲:最大熵和对数线性模型(第一部分)
  10. Winsock异步模式I/O模型WSAEventSelect的使用