机器学习实战之--regression

这篇博客从线性回归开始,介绍了数值回归的几种常用算法,包括线性回归、局部加权线性回归、岭回归和逐步线性回归。内容涵盖了各种回归算法的原理、损失函数、回归系数计算及其实现方式,特别强调了如何处理特征数大于样本个数的情况,并探讨了权衡方差和偏差的重要性。
摘要由CSDN通过智能技术生成

前面主要讲到了分类问题,从这节开始,进入到回归的学习。这节主要介绍几个常用的数值回归算法。
1、线性回归
数据的线性拟合
平方误差损失函数:这里写图片描述
回归系数:这里写图片描述
主要算法实现:

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

2、局部加权线性回归
由于线性回归可能的欠拟合,引入局部加权线性回归,根据距离训练样本和预测样本之间的距离不同,而给定不同的权值。
为了表示上面的权值,引入核,常用的核为高斯核:
这里写图片描述
k取不同值时,与权重w的关系
这里写图片描述
回归系数:
主要算法实现:

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):                      #next 2 lines create weights matrix
        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 "This matrix is singular, cannot do inverse"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值