赞
踩
前面讲述了分类,分类的目标变量是表称型的,对其进行分类,回归是对连续数据做出预测。目的就是预测目标值,最直接
的方法是写出一个目标公式,即回归方程,求这些回归系数的过程叫做回归。
本文回归指的都是线性回归,非线性暂不涉及。
常见算法和实现
1、 线性回归
2、 局部加权线性回归
3、 缩减系数
a、岭回归
b、Lasso
c、前向逐步回归
从数据集中怎么求出回归方程呢,假设输入数据放在矩阵X中,回归系数存放在向量w中。那么对于给定的数据x1,预测的结果
将会通过给出。问题是,已得到的数据集x和对应的y,怎么才能得到w呢? 一个常用的方法就是找出使误差最小的w。
这里的误差是指预测y值和真实y值之间的差值。当然简单累加误差会正差值和
负差值相互抵消,所以一般采用平方误差。所以一般采用平方误差。
平方误差可以写成:
用矩阵表示
求极值求导得到:
上述公式中包含
需要对矩阵求逆,因此这个方程只有在逆矩阵存在时适用。
代码:
from numpy import * def loadDataSet(fileName): #general function to parse tab -delimited floats numFeat = len(open(fileName).readline().split('\t')) - 1 #get number of fields dataMat = []; labelMat = [] fr = open(fileName) for line in fr.readlines(): lineArr =[] curLine = line.strip().split('\t') for i in range(numFeat): lineArr.append(float(curLine[i])) dataMat.append(lineArr) labelMat.append(float(curLine[-1])) return dataMat,labelMat def standRegres(xArr,yArr): xMat = mat(xArr); yMat = mat(yArr).T xTx = xMat.T*xMat if linalg.det(xTx) == 0.0: print "This matrix is singular, cannot do inverse" return ws = xTx.I * (xMat.T*yMat) return ws
import regression
from numpy import *
import matplotlib.pyplot as plt
def test():
xArr,yArr = regression.loadDataSet('ex0.txt')
#print xArr[:1], yArr[:1]
ws =
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。