python 线性回归_用Python实现线性回归算法
前几天我们介绍了线性回归模型的原理,今天我们主要来看如何用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实现线性回归算法相关推荐
- 第一章 第一节:Python基础_认识Python
Python基础入门(全套保姆级教程) 第一章 第一节:Python基础_认识Python 1. 什么是编程 通俗易懂,编程就是用代码编写程序,编写程序有很多种办法,像c语言,javaPython语言 ...
- python做线性回归_利用python实现简单的线性回归
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 用pytho ...
- 排序算法python实现_用Python,Java和C / C ++实现的选择排序算法
排序算法python实现 The Selection Sort Algorithm sorts the elements of an array. In this article, we shall ...
- 动态照片墙 python 实现_利用python生成照片墙的示例代码
这篇文章主要介绍了利用python生成照片墙的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 PIL(Python Im ...
- python 字符识别_使用python进行光学字符识别入门
python 字符识别 语言模型设计 (Language Model Designing) Optical Character Recognition is the conversion of 2-D ...
- 类的继承python事例_【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸...
作者:白宁超 2016年10月10日22:36:57 摘要:继一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc入门资料包含了基本要点.本文是对文档常用核心要点进行梳理,简 ...
- excel python插件_利用 Python 插件 xlwings 读写 Excel
Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...
- 网络安全用python吗_使用Python进行网络安全渗透——密码攻击测试器
相关文章: 本篇将会涉及: HTTP 基本认证 对HTTP Basic认证进行密码暴力攻击测试 什么是HTTP 基本认证 HTTP基本认证(HTTP Basic Authentication)是HTT ...
- 日本python教材_自学python:完整入门python书单!
小伙伴总在询问Python的书,哎呀,动力所致,书单来了.9本,涵盖范围蛮大的.Python热持续中,入门计算机首选语言... 1.<父与子的编程之旅> 关注威信工宗号:程序员大牛,即可领 ...
- python字符串_(Python基础教程之七)Python字符串操作
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...
最新文章
- IDEA打包成war部署web项目
- 省选专练之后缀自动机SPOJ1811LCS - Longest Common Substring
- 职场社交:做职场版微信不如做职场版微博
- 科大星云诗社动态20210823
- 【C++深度剖析教程3】C++中类的静态成员变量
- (6)<a>标签如何实现点击既不刷新也不跳转的功能
- 艾伟_转载:在C#中实现3层架构
- EasyUI:form表单提交前验证
- 服务器虚拟计算节点,什么是云服务器计算节点
- 使用iptables+脚本实现只允许中国IP访问服务器
- 基于国密算法SM2非证书标识公钥密码技术(IPK)
- 燕十八PHP公益课堂学习笔记
- 每个程序员都可以入手的小项目创意大集合
- python爬虫——爬取豆瓣TOP250电影
- Oneday01 | ~scanf、冒泡排序、sort排序
- Python:实现scoring评分算法(附完整源码)
- 成为一名合格的java工程师
- Windows下清理redis缓存
- 一个十年程序员写给大家的忠告
- git中提示 please tell me who you are
热门文章
- Windows10+Virtual box+ubuntu17.10
- Python01——初识python
- NodeJS Events模块源码学习
- 微信小程序,是不是一盘可口的菜!
- 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
- ie下input的type属性为hidden问题
- String.fromCharCode()
- 在PHP中实现StringBuilder类
- MIT自然语言处理第五讲:最大熵和对数线性模型(第一部分)
- Winsock异步模式I/O模型WSAEventSelect的使用