机器学习算法之 回归 regression

本文详细介绍了回归分析中的线性回归、局部加权回归和缩减系数方法,包括岭回归、Lasso回归及前向逐步回归。讨论了如何在过拟合或特征过多的情况下使用这些技术来提高预测效果,并给出了代码示例。
摘要由CSDN通过智能技术生成

 前面讲述了分类,分类的目标变量是表称型的,对其进行分类,回归是对连续数据做出预测。目的就是预测目标值,最直接

的方法是写出一个目标公式,即回归方程,求这些回归系数的过程叫做回归。

本文回归指的都是线性回归,非线性暂不涉及。

常见算法和实现

1、 线性回归

2、 局部加权线性回归

3、 缩减系数

 a、岭回归

 b、Lasso

 c、前向逐步回归

1 线性回归


 从数据集中怎么求出回归方程呢,假设输入数据放在矩阵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

测试
regressionTest.py

import regression
from numpy import *

impo
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值