机器学习实战_08预测数值型数据-回归

来源:互联网 发布:pls tower 软件 购买 编辑:程序博客网 时间:2024/05/21 14:46

回归的目的是预测数值型的目标值。
最直接的办法是依据输入写出一个目标值的计算公式。
这里写图片描述
这里写图片描述

1. 标准回归

# 读取文件def loadDataSet(filename):    numFeat = len(open(filename).readline().split('\t'))-1    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# 求wdef standReares(xArr,yArr):    xMat = mat(xArr);yMat=mat(yArr).T    xTx = xMat.T*xMat    if linalg.det(xTx) ==0.0:        print "No answer"        return    ws = xTx.I*(xMat.T*yMat)    return ws

2. 局部加权线性回归
这里写图片描述

# 读入并创建所需矩阵,之后创建对角权重矩阵weights,阶数等于样本个数#随着样本点与待预测点距离的增加,权重以指数级衰减。k控制衰减的速度def lwlr(testPoint,xArr,yArr,k=1.0):    xMat=mat(xArr);yMat=mat(yArr).T;    m=shape(xMat)[0]    weights=mat(eye((m)))    for j in range(m):        diffMat=testPoint-xMat[j,:]        weights[j,j]=exp(diffMat*diffMat.T/(-2.0*k**2))    xTx =xMat.T * (weights * xMat)    if linalg.det(xTx) ==0.0:        print "No answer"        return    ws = xTx.I*(xMat.T*(weights*yMat))    return testPoint*wsdef lwlrTest(testArr,xArr,yArr,k=1.0):    m=shape(testArr)[0]    yHat=zeros(m)    for i in range(m):        yHat[i]=lwlr(testArr[i],xArr,yArr,k)    return yHat

3. 岭回归
当样本个数小于特征个数时,采用岭回归
公式为:
这里写图片描述

def ridgeRegres(xMat,yMat,lam=0.2):    xTx=xMat.T*xMat    denom=xTx+eye(shape(xMat)[1])*lam    if linalg.det(denom) == 0.0:        print "No answer"        return    ws = denom.I * (xMat.T * yMat)    return wsdef ridgeTest(xArr,yArr):# 对特征进行标准化处理:所有特征减去各自的均值并处以方差    xMat = mat(xArr);yMat=mat(yArr).T    yMean =mean(yMat,0)    yMat=yMat-yMean    xMeans=mean(xMat,0)    # var  取0求样本方差的无偏估计值    xVar = var(xMat,0)    xMat =(xMat-xMeans)/xVar    numTeatPts=30    wMat=zeros((numTeatPts,shape(xMat)[1]))    for i in range(numTeatPts):        ws = ridgeRegres(xMat,yMat,exp(i-10))        wMat[i,:]=ws.T    return wMat

4. Lasso缩减
在增加如下约束时,普通的最小二乘法回归会得到与岭回归一样的公式:
这里写图片描述
与岭回归类似,lasso缩减方法也对回归系数做了限定,对应的约束条件为:
这里写图片描述
这里写图片描述足够小的时候,一些系数会因此被迫缩减到0。

5.前向逐步回归

逐步回归是一种变量选择的方法。
随机梯度上升(下降)是一种拟合模型的数值优化方法。

逐步回归试图解决“放哪些变量在模型里最好”这个问题。
随机梯度上升试图解决“确定了哪些变量在模型里,如何求得参数值”这个问题。

阅读全文
0 0
原创粉丝点击