《机器学习实战》学习笔记-[8]-回归-普通最小二乘OLS

来源:互联网 发布:网络视频协议 编辑:程序博客网 时间:2024/06/08 13:22

  • 分类的目标变量为标称型数据
  • 回归可对连续性数据做出预测
  • 回归的目的就是求出预测数值的目标值,最直接的办法就是写出一个目标值的计算公式:Y=aX+b(线性)或者非线性,回归即为求取系数的过程。

OLS理论基础

对于线性
Y = (X^T)w 
根据平方误差最小求系数(最小二乘)


OLS评价标准

判断模型的好坏可以用相关系数

'''机器学习实战-回归'''from numpy import *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'''OLS'''def standRegres(xArr, yArr):    xMat = mat(xArr)    yMat = mat(yArr).T    xTx = xMat.T * xMat    if linalg.det(xTx) == 0.0:  # 行列式的值是否为0,判断是否可逆        print("矩阵不可逆")        return    ws = xTx.I * (xMat.T*yMat)    return ws #返回归回系数

测试
import osfrom numpy import *from ML_Learn.com.ML.Regression.BasicRegressionOLS import regressionimport matplotlib.pyplot as plt#导入训练数据集xArr, yArr = regression.loadDataSet(os.getcwd() + '/resource/ex0.txt')ws = regression.standRegres(xArr,yArr)print("xArr[0:2]: \n", xArr[0:2])print("yArr[0:2]: \n", yArr[0:2])print("ws: \n" ,ws)print("xArr[0:2]*ws.T = \n",mat(xArr[0:2])*ws)xMat = mat(xArr)yMat = mat(yArr)yHat = xMat*ws#判断模型的好坏-相关系数cor = corrcoef(yHat.T,yMat)print("相关系数=  \n", cor)## xArr[0:2]:#  [[1.0, 0.067732], [1.0, 0.42781]]# yArr[0:2]:#  [3.176513, 3.816464]# ws:#  [[ 3.00774324]#  [ 1.69532264]]# xArr[0:2]*ws.T =#  [[ 3.12257084]#  [ 3.73301922]]# 相关系数=#  [[ 1.          0.98647356]#  [ 0.98647356  1.        ]]fig = plt.figure()ax = fig.add_subplot(111)ax.scatter(xMat[:,1].flatten().A[0],yMat.T[:,0].flatten().A[0])xCopy = xMat.copy()xCopy.sort(0)yHat = xCopy*wsax.plot(xCopy[:,1],yHat)plt.show()




源代码

github


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