通俗得说线性回归算法(二)线性回归实战

前情提要:
通俗得说线性回归算法(一)线性回归初步介绍

一.sklearn线性回归详解

1.1 线性回归参数

介绍完线性回归,那么我们来看看如何运用sklearn来调用线性回归模型,进行训练和预测。

def LinearRegression(fit_intercept=True,
                       normalize=False,
                       copy_X=True,
                       n_jobs=None
                       )

- fit_intercept:默认为true,参数意思是说要不要计算此模型的截距。 如果设置为False,则不会在计算中使用截距。
- normalize:正则化,默认是false。
- copy_X:默认是true,会复制一份x,否则会覆盖掉原有的x。

- n_jobs:指定多少个CPU进行运算,默认是None,表示1。如果设置为-1则表示使用全部cpu。

1.2 线性回归例子

import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
# y = 1 * x_0 + 2 * x_1 + 3
y = np.dot(X, np.array([1, 2])) + 3
reg = LinearRegression().fit(X, y)
reg.score(X, y)
#打印线性回归的相关系数,在二维空间中,就是斜率k
print(reg.coef_)
#打线性回归中的独立项,二维空间中的,b
print(reg.intercept_)

pre = reg.predict(np.array([[3, 5]]))
print(pre)

这个例子取自sklearn官网,先是生成一个二维的x向量,然后对每个向量,根据公式生成y值。公式是

y = x11 + x22 + 3

得到y值后,拿去训练一个模型,由于公式已知,那结果自然也就知道了。训练好模型后,可以直接查看系数和独立项,也就是k和b。最后可以拿来预测数据了。

各位小伙伴可以运行一下自然就知道结果了。

二.其他回归模型介绍

回归分析是统计学中常见的一种分析方法,在之前也有讲过线性回归分析和梯度下降相关内容线性回归。那么这次,就来说说除了线性回归外,还有哪些回归分析方法。

2.1 树回归

以前有介绍过ID3决策树算法,不过ID3决策是不适合用作回归分析的,但如果用C4.5,那么就可以来进行回归分析。

我们都知道如果是离散值,那么可以直接选择某个类别作为分支。比如说有房,没房这种。但如果是连续的值呢?比如身上的现金,有人有10块钱,有人有11.5元,这种如果选择分支呢?

答案是通过遍历,遍历全部或部分连续值,尝试划分,计算损失函数(损失函数就不贴了,有兴趣可以百度详细的资料),然后选择一个最合适的划分(大于或小于这个值)。比如说,选5个人,这5个人身上的现金有[500,20,40,800,3000],那么遍历这5个值,最终选到一个损失函数最小的值。比如取到800,那么就是[大于800]和[小于800]着两个区间。通过这种方式可以让决策树也实现回归分析,当然,分析结果和线性回归就不大相同了。

我在网上找了两个图,一看就知道树回归和线性回归的区别了。

左边的图就是树回归,右边是线性回归。树回归按段来划分,所以看起来像一棵树横着放。而线性回归基本上总是处理成一条直线来拟合。

回归树的主要优点,是能够对复杂的数据,以及非线性的数据进行建模。但如果是线性数据,一般线性回归会比回归树的效果好

2.2 Stepwise Regression逐步回归

说到这个,就得先解释一下多重共线性这个问题了。

多重共线性:指多个自变量之间有高度相似或高关联性的现象。比如以房价预测为例,房屋面积和房间个数就是相关的,将这两个自变量一同作为特征,就容易出现多重共线性问题。

为解决多重共线性,就有了逐步回归的解决方法。逐步回归一个常见做法,就是先只有一个变量。逐渐加入其他特征,看看模型的效果会不会变好,如果变好了,就让这个特征加入模型中,否则不加。

这一过程不断迭代,直到没有其他特征。

当然限于篇幅,这里只是比较粗浅的介绍,有兴趣的小伙伴可以自己上网了解更多。

2.3 Ridge Regression岭回归和Lasso Regression套索回归

岭回归和套索回归也是为了解决多重共线性的问题,但和逐步回归从特征上动手脚不一样的是,岭回归和套索回归是从计算过程来尝试解决问题的。

这里引用一下脊回归(Ridge Regression)这篇博文中的介绍:

当设计矩阵XX存在多重共线性的时候(数学上称为病态矩阵),最小二乘法求得的参数ww在数值上会非常的大,而一般的线性回归其模型是 y=wTxy=wTx ,显然,就是因为ww在数值上非常的大,所以,如果输入变量xx有一个微小的变动,其反应在输出结果上也会变得非常大,这就是对输入变量总的噪声非常敏感的原因。

如果能限制参数ww的增长,使ww不会变得特别大,那么模型对输入ww中噪声的敏感度就会降低。这就是脊回归和套索回归(Ridge Regression and Lasso Regrission)的基本思想。

为了限制模型参数ww的数值大小,就在模型原来的目标函数上加上一个惩罚项,这个过程叫做正则化(Regularization)。

如果惩罚项是参数的l2l2范数,就是脊回归(Ridge Regression)

如果惩罚项是参数的l1l1范数,就是套索回归(Lasso Regrission)

小结

今天主要介绍了sklearn中线性回归的参数,以及使用sklearn来训练线性回归模型。然后介绍了其他各个线性回归模型及主要作用和优缺点。

以上~



推荐阅读:
Windows上IDEA搭建最新Spark2.4.3源码阅读及调试的开发环境
Scala 函数式编程指南(一) 函数式思想介绍
通俗地说决策树算法(二)实例解析
大数据存储的进化史 --从 RAID 到 Hadoop Hdfs
C,java,Python,这些名字背后的江湖!

原文地址:https://www.cnblogs.com/listenfwind/p/11676301.html

时间: 2024-08-27 15:18:16

通俗得说线性回归算法(二)线性回归实战的相关文章

《BI那点儿事》Microsoft 线性回归算法

原文:<BI那点儿事>Microsoft 线性回归算法 Microsoft 线性回归算法是 Microsoft 决策树算法的一种变体,有助于计算依赖变量和独立变量之间的线性关系,然后使用该关系进行预测.该关系采用的表示形式是最能代表数据序列的线的公式.例如,以下关系图中的线是数据最可能的线性表示形式. 关系图中的每个数据点都有一个与该数据点与回归线之间距离关联的错误.回归方程式中的系数 a 和 b 可以调整回归线的角度和位置.可以对 a 和 b 进行调整,直到与所有点都关联的错误总数达到最低值

Spark MLlib Linear Regression线性回归算法

1.Spark MLlib Linear Regression线性回归算法 1.1 线性回归算法 1.1.1 基础理论 在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.这种函数是一个或多个称为回归系数的模型参数的线性组合. 回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析.如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间

scikit-learn 线性回归算法库小结

scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库的使用做一个总结,重点讲述这些线性回归算法库的不同和各自的使用场景. 线性回归的目的是要得到输出向量YY和输入特征XX之间的线性关系,求出线性回归系数θθ,也就是 Y=XθY=Xθ.其中YY的维度为mx1,XX的维度为mxn,而θθ的维度为nx1.m代表样本个数,n代表样本特征的维度. 为了得到线性回归系数θθ,我们需要定义一个损失函数,一个极小化损失函数的优化方法,以及一个验证算法的方法.

机器学习--线性回归算法的原理及优缺点

一.线性回归算法的原理 回归是基于已有数据对新的数据进行预测,比如预测股票走势.这里我们主要讲简单线性回归.基于标准的线性回归,可以扩展出更多的线性回归算法. 假设我们找到了最佳拟合的直线方程 : , 则对每一个样本点    ,根据我们的直线方程,预测值为:,其对应的真值为   . 我们希望    和   的差距尽量小,这里我们用   表达   和  的距离, 考虑所有样本则为: 我们的目标是使   尽可能小,而    ,所以我们要找到  a .b  ,使得  尽可能小. 被称为损失函数或效用函

简单线性回归算法

/**  * 简单线性回归算法  * @param array y轴数据  * @param array x轴数据  * @returns array(slope,intercept,r2)  */ function linearRegression(y, x) {     var lr = {};     var n = y.length;     var sum_x = 0;     var sum_y = 0;     var sum_xy = 0;     var sum_xx = 0;

机器学习 —— 基础整理(五):线性回归;二项Logistic回归;Softmax回归;广义线性模型

本文简单整理了以下内容: (一)线性回归 (二)二分类:二项Logistic回归 (三)多分类:Softmax回归 (四)广义线性模型 二项Logistic回归是我去年入门机器学习时学的第一个模型,我觉得这个模型很适合用来入门(但是必须注意这个模型有很多很多很多很多可以展开的地方).比较有意思的是那时候还不会矩阵微积分,推导梯度时还是把矩阵全都展开求的(牛顿法要用的二阶梯度也是)... 下面的文字中,"Logistic回归"都表示用于二分类的二项Logistic回归. 首先约定一下记号

【吴恩达机器学习】学习笔记——2.1单变量线性回归算法

1 回顾1.1 监督学习定义:给定正确答案的机器学习算法分类:(1)回归算法:预测连续值的输出,如房价的预测(2)分类算法:离散值的输出,如判断患病是否为某种癌症1.2 非监督学习定义:不给定数据的信息的情况下,分析数据之间的关系.聚类算法:将数据集中属性相似的数据点划分为一类. 2 单变量线性回归算法2.1 符号定义m = 训练样本的数量x = 输入变量y = 输出变量2.2 工作方式训练集通过学习算法生成线性回归函数hypothesis  hθ(x) = θ0 + θ1x 原文地址:http

使用tensorflow实现最简单的线性回归算法

1 #线性回归:用线性模型y=Wx+b拟合sin 2 import numpy as np 3 import matplotlib.pyplot as plt 4 import tensorflow as tf 5 6 #数据,标签 7 x_data = np.linspace(-2*np.pi,2*np.pi,300) 8 noise = np.random.normal(-0.01,0.05,x_data.shape) 9 y_label = np.sin(x_data) + noise 1

萌新向Python数据分析及数据挖掘 第三章 机器学习常用算法 第二节 线性回归算法 (下)实操篇

线性回归算法 In [ ]: import numpy as np import matplotlib.pyplot as plt from sklearn import datasets In [ ]: boston = datasets.load_boston() X = boston.data[:,5] #- RM average number of rooms per dwelling y = boston.target print(X.shape) print(y.shape) In