一元线性回归

1、概念

一元线性回归是最简单的一种模型,但应用广泛,比如简单地预测商品价格、成本评估等,都可以用一元线性模型,本节主要讲解scikit-learn一元线性回归的使用以及作图说明。

y=f(x)叫做一元函数,回归的意思就是根据已知数据复原某些值,线性回归(regression)就是用线性的模型做回归复原。

那么一元线性回归就是:已知一批(x,y)值来复原另外未知的值。

比如:告诉你(1,1),(2,2),(3,3),那么问你(4,?)是多少,很容易复原出来(4,4),这就是一元线性回归问题的求解。

当然实际给你的数据可能不是严格线性,但依然让我们用一元线性回归来计算,那么就是找到一个最能代表已知数据的一元线性函数来做复原和求解。

2、scikit-learn的一元线性回归

 1 import numpy as np
 2 from sklearn.linear_model import LinearRegression
 3 x = [[1],[2],[3],[4],[5],[6]]
 4 y = [[1],[2.1],[2.9],[4.2],[5.1],[5.8]]
 5 print x
 6 print(y)
 7 model = LinearRegression()
 8 model.fit(x, y) #训练模型
 9 predicted = model.predict([13])[0]#预测输出
10 print predicted

结果:

1 [[1], [2], [3], [4], [5], [6]]
2 [[1], [2.1], [2.9], [4.2], [5.1], [5.8]]
3 [ 12.82666667]

这里面的model是一个estimator,它通过fit()方法来算出模型参数,并通过predict()方法来预测,LinearRegression的fit()方法就是学习这个一元线性回归模型:

y = a + bx

原数据的图像:

 1 import matplotlib.pyplot as plt
 2 from matplotlib.font_manager import FontProperties
 3 font = FontProperties()
 4 plt.figure()
 5 plt.title(‘this is title‘)
 6 plt.xlabel(‘x label‘)
 7 plt.ylabel(‘y label‘)
 8 plt.axis([0, 25, 0, 25])
 9 plt.grid(True)
10 x = [[1],[2],[3],[4],[5],[6]]
11 y = [[1],[2.1],[2.9],[4.2],[5.1],[5.8]]
12 plt.plot(x, y, ‘k.‘)
13 plt.show()

结果:

合在一起:

 1 import numpy as np
 2 from sklearn.linear_model import LinearRegression
 3 import matplotlib.pyplot as plt
 4 from matplotlib.font_manager import FontProperties
 5
 6 x = [[1],[2],[3],[4],[5],[6]]
 7 y = [[1],[2.1],[2.9],[4.2],[5.1],[5.8]]
 8 model = LinearRegression()
 9 model.fit(x, y)
10 x2 = [[0], [2.5], [5.3], [9.1]]
11 y2 = model.predict(x2)
12
13 plt.figure()
14 plt.title(‘linear sample‘)
15 plt.xlabel(‘x‘)
16 plt.ylabel(‘y‘)
17 plt.axis([0, 10, 0, 10])
18 plt.grid(True)
19 plt.plot(x, y, ‘k.‘)
20 plt.plot(x2, y2, ‘g-‘)
21 plt.show()

其他相关用法

方差计算:方差用来衡量样本的分散程度,方差公式是

用numpy库已有的方法:

1 np.var([1, 2, 3, 4, 5, 6], ddof=1)
1 3.5

得出方差是3.5。

其中ddof是无偏估计校正技术。

协方差计算:协方差表示两个变量的总体变化趋势,如果朝同方向变化则为正,朝反方向变化则为负,不相关则为0,协方差公式是:

1 np.cov([1,2,3,4,5,6], [1,2.1,2.9,4.2,5.1,5.8])[0][1]
1 3.4299999999999997

得出协方差是3.43。

事实上,方差/协方差就是线性方程的参数b:1.02

代入一个数据就可以得到a值:1 = a + 1.02 * 1,所以a=-0.02

因此回归方程就是y = -0.02 + 1.02 * x

因此预测x=13时,y=-0.02+1.02*13=13.24

这就是通过最小化成本函数来做回归。

模型评估

R方度量方法可以评估线性回归效果,R方也叫确定系数,表示模型对现实数据的拟合程度。R方算法为:1-(残差平方和/样本总体平方和)

也可以用model.score()方法直接计算R方:

model.score(X_test, y_test)

时间: 03-10

一元线性回归的相关文章

一元线性回归模型与最小二乘法及其C++实现

原文:http://blog.csdn.net/qll125596718/article/details/8248249 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归.回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析.如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析.对于二维空间线性是一条直线:对于三维空间线性是一

R语言解读一元线性回归模型

前言 在我们的日常生活中,存在大量的具有相关性的事件,比如大气压和海拔高度,海拔越高大气压强越小:人的身高和体重,普遍来看越高的人体重也越重.还有一些可能存在相关性的事件,比如知识水平越高的人,收入水平越高:市场化的国家经济越好,则货币越强势,反而全球经济危机,黄金等避险资产越走强. 如果我们要研究这些事件,找到不同变量之间的关系,我们就会用到回归分析.一元线性回归分析是处理两个变量之间关系的最简单模型,是两个变量之间的线性相关关系.让我们一起发现生活中的规律吧. 由于本文为非统计的专业文章,所

从统计看机器学习(一) 一元线性回归

从统计学的角度来看,机器学习大多的方法是统计学中分类与回归的方法向工程领域的推广. “回归”(Regression)一词的滥觞是英国科学家Francis Galton(1822-1911)在1886年的论文[1]研究孩子身高与父母身高之间的关系.观察1087对夫妇后,得出成年儿子身高=33.73+0.516*父母平均身高(以英寸为单位).他发现孩子的身高与父母的身高相比更加温和:如果父母均非常高,那么孩子身高更倾向于很高但比父母矮:如果父母均非常矮,那么孩子身高更倾向于很矮但比父母高.这个发现被

R语言——一元线性回归

1 一元线性回归 高尔顿被誉为现代回归的创始人,"回归效应"的发现源于高尔顿的豌豆遗传试验.在这个试验中,高尔顿发现,并非尺寸大的豌豆,其后代尺寸也大,尺寸小的豌豆,其后代尺寸也小.而是具有一种不同的趋势,即尺寸大的豌豆趋向于得到尺寸更小的子代,而尺寸小的豌豆趋向于得到尺寸更大的后代.高尔顿把这一现象称为"返祖",后来又称为"向平均值回归"."回归效应"的应用非常广泛,生活中随处可见这样的例子. 1.1 变量之间的关系的度量

matlab实现一元线性回归和多元线性回归

在回归分析中,如果有两个或两个以上的自变量,就称为多元回归.事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际. 在实际经济问题中,一个变量往往受到多个变量的影响.例如,家庭消费支出,除了受家庭可支配收入的影响外,还受诸如家庭所有财富.物价水平.金融机构存款利息等多种因素的影响,表现在线性回归模型中的解释变量有多个.这样的模型被称为多元线性回归模型. 多元线性回归模型的一般表现形式为 Yi=β0+β1X1i+β

R语言 一元线性回归

#一元线性回归的基本步骤#1.载入数据 给出散点图 x<-c(0.10,0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.20,0.21,0.23) y<-c(42.0,43.5,45.0,45.5,45.0,47.5,49.0,53.0,50.0,55.0,55.0,60.0) plot(x,y) #2.线性回归 得到回归方程  并查看回归结果 CG<-lm(y~x) CG summary(CG) #所得回归方程为y=130.83x+28.49#3.线

机器学习之一元线性回归模型

一元线性回归模型 样本数量m            输入变量x               输出变量y               训练样本(x,y)                   第i个训练样本(,) 假设函数:        模型参数 代价函数: 优化目标: 算法: 1.梯度下降法 具体解法: 2.正规方程法 原文地址:https://www.cnblogs.com/yuqiujie/p/8893660.html

R语言做一元线性回归

只有两个变量,做相关性分析,先来个一元线性回归吧 因为未处理的x,y相关性不显著,于是用了ln(1+x)函数做了个处理(发现大家喜欢用ln,log,lg,指数函数做处理),处理完以后貌似就显著了..虽然R方也比较小 model <- lm(y1~1+x1) summary(model) plot(x1,y1,main=" ",xlab="ln(H+1)",ylab="ln(G+1)",cex.main=1) abline(model,col

1、回归 一元线性回归 代价函数 梯度下降法

1.回归是达尔文表弟发现的,就是说人类总体有一个平均身高.那个高个子生的孩子都个高,矮的孩子生的矮.但是他们的下一代大部分都往平均身高长,也就是说特别高的人,他们的孩子会很高,但是往往比他们自己矮.特别矮的人他们生的孩子会矮一些,但是会比自己的父母高,他们都有这种趋势.表弟管这个叫做回归. 2.一元线性回归 指的是一个自变量对应一个因变量的 一元函数.当平面坐标系中 有些散列的点的时候,我们往往想找到一条直线去拟合他们的回归线.我们管这条直线叫做一元线性回归 假定这个函数为我们要求的就是这个函数