Python 线性回归

1 声明

本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。

2 线性回归简介

相关概念见下:

如果想通过一个模型找到目标变量和特征的线性关系就用到线性回归(在房价的预测的场景中假设拿到地段、面积、学区、建筑时间等特征后,通过训练线性回归模型,进而可对的新数据进行预测)。线性回归假设特征与目标变量存在线性关系,换言之这种影响(系数或参数,神经网络里又叫权重)是常量。这里是概率统计里的应用,下面以二元回归作为里例子,演示其原理。

这里 是目标变量, 是每个特征, 是x1和x2的系数。 是截距, 是误差。

更普通的方式可以矩阵的形式表达 Y=Xβ+ε,一般使用最小二乘法拟合得系数的解为

详细证明见:最小二乘法(多元)推导

相关统计量

详见:Excel一元线性回归示例

交互项(Interactive Term):当特征间有相互作用时可以使用交互项,表现形式见下:

正则化:

为了解决过拟合、方差较高的问题,需要对线性回归模型进行正则化(收缩惩罚即RSS和系数更小),一般用L1(LaSSO)、L2(岭回归)法。

这里的RSS对应前文的SSE即残差平方和,线性回归模型的目的就是使得RSS最小。

其中岭回归里通过如下方式添加惩罚项(α乘以系数的平方和,α是超参数):

LASSO正则化(α乘以系数绝对值的和,α是超参数,n是样本数):

3 线性回归代码示例

# 加载相关包:标准化、线性回归、特征构造
# Scenario 1 普通线性回归
from sklearn.linear_model import LinearRegression,Ridge
from sklearn.datasets import load_boston
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import StandardScaler# 加载波士顿房价数据并指定特征和目标变量
boston = load_boston()
features = boston.data[:,0:2]
target = boston.target
# 创建并拟合线性回归模型
regression = LinearRegression()model1 = regression.fit(features, target)# 查看截距
print(model1.intercept_)
# 查看系数β1、β2
print(model1.coef_)# Scenario 2 带交互项的线性回归
# 通过PolynomialFeatures创建交互项
interaction = PolynomialFeatures(
degree=3, include_bias=False, interaction_only=True)
features_interaction = interaction.fit_transform(features)# 创建并拟合线性回归模型
regression = LinearRegression()
model2 = regression.fit(features_interaction, target)
# 验证样本交互项X1*X2
print(features_interaction[0])
# 查看带交互项的系数
print(model2.coef_)# Scenario 3 正则化之岭回归
# 标准化数据,即特征都在同一量纲上(无量纲)
scaler = StandardScaler()
features_standardized = scaler.fit_transform(features)# 创建带α的岭回归并拟合
regression = Ridge(alpha=0.5)
model3 = regression.fit(features_standardized, target)# 评价指标R2(仅演示如何使用)
from sklearn.metrics import r2_score
print('R^2 train: %.3f' % r2_score(target, model1.predict(features)))

4 总结

Python 线性回归相关推荐

  1. python线性回归实例_sklearn+python:线性回归案例

    使用一阶线性方程预测波士顿房价 载入的数据是随sklearn一起发布的,来自boston 1993年之前收集的506个房屋的数据和价格.load_boston()用于载入数据. from sklear ...

  2. l2正则化python_机器学习入门之机器学习之路: python线性回归 过拟合 L1与L2正则化...

    本文主要向大家介绍了机器学习入门之机器学习之路: python线性回归 过拟合 L1与L2正则化,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 正则化:    提高模型在未知数据上的 ...

  3. python 线性回归_Python中的简化线性回归

    python 线性回归 In the area of Machine Learning, one of the first algorithms that someone can come acros ...

  4. python 线性回归模型_如何在Python中建立和训练线性和逻辑回归ML模型

    python 线性回归模型 Linear regression and logistic regression are two of the most popular machine learning ...

  5. python 线性回归_用Python实现线性回归算法

    前几天我们介绍了线性回归模型的原理,今天我们主要来看如何用Python代码将线性回归写出来. 首先,打开我们的jupyter notebook,把常用的一些包都加载上吧: import numpy a ...

  6. python 线性回归 统计检验 p值_SPSS 25 数学统计分析工具

    SPSS 25 是一个集成的系列产品,解决了整个分析过程,从策划到数据收集,分析,报告和部署.随着十几完全集成的模块可供选择,你可以找到你需要的专业能力,以增加收入,超越竞争对手,进行研究,并做出更好 ...

  7. python线性回归实例_python 线性回归示例

    说明:此文的第一部分参考了这里 用python进行线性回归分析非常方便,有现成的库可以使用比如:numpy.linalog.lstsq例子.scipy.stats.linregress例子.panda ...

  8. python线性回归算法简介_Python机器学习(二):线性回归算法

    机器学习研究的问题分为分类问题和回归问题.分类问题很好理解,而回归问题就是找到一条曲线,可以最大程度地拟合样本特征和样本输出标记之间的关系.当给算法一个输入时,这条曲线可以计算出相应可能的输出.回归算 ...

  9. python 线性回归 技术方案亮点_基于Python的线性回归实战

    一.线性回归的理论 1)线性回归的基本概念 线性回归是一种有监督的学习算法,它介绍的自变量的和因变量的之间的线性的相关关系,分为一元线性回归和多元的线性回归.一元线性回归是一个自变量和一个因变量间的回 ...

最新文章

  1. 深度学习最新方法:随机加权平均,击败了当前最先进的Snapshot Ensembling
  2. 2周修改了1000多个Bug后软件项目扭转了局面,未交付银行的现金管理系统健壮起来了...
  3. Vue.js——60分钟快速入门
  4. 【jQuery】用jQuery给文本框添加只读属性【readOnly】
  5. 苹果截屏快捷键_新手小白用苹果电脑搞科研,学会这些才不至于尴尬!
  6. java des3加密_JAVA加密算法(3)- 对称加密算法(DES、3DES、AES)
  7. 这个超时问题花了我两周才解决!
  8. 希望查询windows下安装cygwin后ssh服务无法启动的解决办法
  9. 买了一块烂砖头(《ADO.NET技术内幕》)- 以及今天看砖头的一些感想(技术感想)...
  10. 同样是做冻品生意,哪类人更挣Q?
  11. 我为什么离开国企,回到互联网内卷?
  12. 取消ajax请求时页面闪烁,基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法...
  13. Java数据结构与算法(十) 图
  14. 设定pic单片机端口为输入_PIC单片机入门_输入输出端口详解
  15. java 数组中存储26个英文字母_利用数组打印26个英文字母
  16. 业余草 2018 技术文章合集整理,适合入门、中级、高级、架构师进阶
  17. Linux为sh脚本文件添加执行权限
  18. .NET 开源GIS解决方案一 概述
  19. mysql 检查配置_MYSQL 配置检查脚本
  20. git checkout切换分支报错解决办法

热门文章

  1. VTK:图像平面小部件用法实战
  2. OpenCASCADE可视化:3D演示之创建3D场景
  3. OpenCASCADE:形状愈合之形状加工
  4. wxWidgets:wxSashEvent类用法
  5. wxWidgets:wxGridSizeEvent类用法
  6. boost::throw_exception简单的测试程序
  7. boost::range::for_each相关的测试程序
  8. boost::mpl模块实现replace相关的测试程序
  9. boost::mp11::mp_intersperse相关用法的测试程序
  10. DCMTK:以HTML格式呈现DICOM结构化报告文件的内容