简单线性回归
2017-06-18 17:37
363 查看
一、麦子学院部分
1. 介绍:回归(regression) Y变量为连续数值型(continuous numerical variable)
如:房价,人数,降雨量
分类(Classification): Y变量为类别型(categorical variable)
如:颜色类别,电脑品牌,有无信誉
2、 简单线性回归介绍
简单线性回归包含一个自变量(x)和一个因变量(y)
以上两个变量的关系用一条直线来模拟
如果包含两个以上的自变量,则称作多元回归分析(multiple regression)
3、简单线性回归模型
被用来描述因变量(y)和自变量(X)以及偏差(error)之间关系的方程叫做回归模型
简单线性回归的模型是:
y = b0 + b1*x + ε
4、 估计的简单线性回归方程
ŷ=b0+b1x
这个方程叫做估计线性方程(estimated regression line)
其中,b0是估计线性方程的纵截距
b1是估计线性方程的斜率
ŷ是在自变量x等于一个给定值的时候,y的估的估计值
5、 关于偏差ε的假定
是一个随机的变量,均值为0
ε的方差(variance)对于所有的自变量x是一样的
ε的值是独立的
ε满足正态分布
二、机器学习部分
回归与分类的不同,就在于目标变量是连续数值型,分类的目标标称型数据
回归的目的是预测数值型的目标值。最直接的办法是依据输人写出一个目标值的计算公式。假如你想要预测姐姐男友汽车的功率大小,可能会这么计算:
这就是所谓的回归方程,其中的0.0015和-0.99称作为回归系数,求这些回归系数的过程就是回归
(1)收集数据:采用任意方法收集数据
(2)准备数据:回归需要数值型数据,标称型数据将被转化成二值型数据
(3)分析数据:绘出数据的可视化二维图将有助于对数据做出理解和分析,在采用缩减法求得新回归系数之后,可以将新拟合线在图上作为对比
(4)训练算法:求得回归系数
(5)测试算法:使用R2或者预测值和数据的拟合度,来分析模型的效果
(6)使用算法:使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续性数据而不仅仅是离散的类别标签
假定输入数据存放在矩阵X中,而回归系数存放在向量w中,那么对于给定的数据X预测结果将会通过
给出,加入在给定数据X和Y的情况下怎么求得W?
同过找到最小误差求W(误差是真实Y和预测Y之间的差值,使用该误差的简单累加将使得正误差和负误差相互抵消,所有我们采用平方误差)
我们可以通过调用Numpy库的矩阵方法求得w,即所谓最小二乘法(OLS)
1. 介绍:回归(regression) Y变量为连续数值型(continuous numerical variable)
如:房价,人数,降雨量
分类(Classification): Y变量为类别型(categorical variable)
如:颜色类别,电脑品牌,有无信誉
2、 简单线性回归介绍
简单线性回归包含一个自变量(x)和一个因变量(y)
以上两个变量的关系用一条直线来模拟
如果包含两个以上的自变量,则称作多元回归分析(multiple regression)
3、简单线性回归模型
被用来描述因变量(y)和自变量(X)以及偏差(error)之间关系的方程叫做回归模型
简单线性回归的模型是:
y = b0 + b1*x + ε
4、 估计的简单线性回归方程
ŷ=b0+b1x
这个方程叫做估计线性方程(estimated regression line)
其中,b0是估计线性方程的纵截距
b1是估计线性方程的斜率
ŷ是在自变量x等于一个给定值的时候,y的估的估计值
5、 关于偏差ε的假定
是一个随机的变量,均值为0
ε的方差(variance)对于所有的自变量x是一样的
ε的值是独立的
ε满足正态分布
import numpy as np def fitSLR(x, y): dinominator = 0 numerator = 0 for i in range(0,len(x)): numerator += (x[i] - np.mean(x))*(y[i] - np.mean(y)) dinominator += (x[i] - np.mean(x))**2 b1 = numerator/float(dinominator) b0 = np.mean(y) - b1*np.mean(x) return b0, b1 def predict(x, b0, b1): return b1+x*b0 x = [1, 3, 2, 1, 3] y = [14, 24, 18, 17, 27] b0, b1=fitSLR(x, y) print "intercept:",b1,"slope",b0 x_test = 6 y_test = predict(x_test, b0, b1) print y_test
二、机器学习部分
回归与分类的不同,就在于目标变量是连续数值型,分类的目标标称型数据
回归的目的是预测数值型的目标值。最直接的办法是依据输人写出一个目标值的计算公式。假如你想要预测姐姐男友汽车的功率大小,可能会这么计算:
这就是所谓的回归方程,其中的0.0015和-0.99称作为回归系数,求这些回归系数的过程就是回归
回归的一般方法:
(1)收集数据:采用任意方法收集数据(2)准备数据:回归需要数值型数据,标称型数据将被转化成二值型数据
(3)分析数据:绘出数据的可视化二维图将有助于对数据做出理解和分析,在采用缩减法求得新回归系数之后,可以将新拟合线在图上作为对比
(4)训练算法:求得回归系数
(5)测试算法:使用R2或者预测值和数据的拟合度,来分析模型的效果
(6)使用算法:使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续性数据而不仅仅是离散的类别标签
假定输入数据存放在矩阵X中,而回归系数存放在向量w中,那么对于给定的数据X预测结果将会通过
给出,加入在给定数据X和Y的情况下怎么求得W?
误差最小化:
同过找到最小误差求W(误差是真实Y和预测Y之间的差值,使用该误差的简单累加将使得正误差和负误差相互抵消,所有我们采用平方误差)我们可以通过调用Numpy库的矩阵方法求得w,即所谓最小二乘法(OLS)
#encoding:utf-8 import numpy as py from numpy import * def loadDataSet(filename): datMat=[] labelMat=[] numfat = len(open(filename).readline().split('\t')) - 1 print numfat for line in open(filename).readlines(): linArr =[] curline = line.strip().split('\t') for i in range(numfat): linArr.append(float(curline[i])) datMat.append(linArr) labelMat.append(float(curline[-1])) return datMat,labelMat def standRegress(xArr,yArr):#返回相关系数 ws 最终会得到yhat = ws[0] + ws[1]*x,因为常量设的是1, 1*ws[0]=ws[0] xMat = mat(xArr) yMat = mat(yArr).T#将y化成n*1的向量 xTx = xMat.T*xMat # print "xMat" # print xMat # print "yMat" # print yMat # print "xtx" # print xTx # print "----" if linalg.det(xTx) == 0:#判断行列式是否为0 如果行列式为0 计算逆矩阵的时候会出现错误 print "this matrix is singular,cannot do inverse" return ws = xTx.I*xMat.T*yMat#其中w[0]是常变量 w[1]是x前面的系数 return ws def show(xArr,yArr,ws): import matplotlib.pyplot as plt xMat = mat(xArr) yMat = mat(yArr) fig = plt.figure() ax = fig.add_subplot(111) xCopy = xMat.copy() yHat = xCopy*ws print yMat.T # ax.plot(xMat[:,-1],yMat.T,'o')#‘o’画的是原点 ax.scatter(array(xMat[:,-1].T)[0],array(yMat)[0])#前两个参数接受一维数组 ax.plot(xCopy[:,1],yHat) #plot参数可以接受二维矩阵 只加两个参数 默认画的是线 plt.show() # ax.scatter(array(xMat[:,-1].T)[0],array(yMat)[0])#前两个参数接受一维数组 # import matplotlib.pyplot as plt # from matplotlib.pyplot import scatter # scatter(array(xMat[:,-1].T)[0],array(yMat)[0],color="blue",marker='o',s=30) # plt.show() return xArr,yArr = loadDataSet('ex0.txt') # print yArr ws = standRegress(xArr,yArr) show(xArr,yArr,ws)
相关文章推荐
- 7.1简单线性回归--python机器学习
- R语言简单(一元)线性回归分析
- 简单线性回归
- pytho简单线性回归
- Python3 安装 numpy 科学库 简单线性回归
- 简单线性回归分析【笔记】
- 基于tensorflow的简单线性回归实例
- R语言写简单线性回归
- [置顶] 【算法 机器学习】MATLAB、R、python三种编程语言实现简单线性回归算法比较
- 用PHP实现的简单线性回归
- PHP实现简单线性回归之数据研究工具(1)
- 简单线性回归
- 多元线性回归、梯度下降法、正规方程法简单实验
- 简单线性回归的Python实现
- 机器学习笔记:简单线性回归
- 使用Eviews做简单线性回归
- 多元线性回归----Java简单实现
- 机器学习-线性回归python简单实现
- 机器学习练习(一)——简单线性回归
- 运用TensorFlow进行简单实现线性回归、梯度下降示例