当前位置:   article > 正文

机器学习算法之 回归 regression_计算regression

计算regression

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

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

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

常见算法和实现

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

测试
regressionTest.py

import regression
from numpy import *

import matplotlib.pyplot as plt

def test():
    
    xArr,yArr = regression.loadDataSet('ex0.txt')
    #print  xArr[:1], yArr[:1]
    ws = 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/404541
推荐阅读
相关标签
  

闽ICP备14008679号