线性回归

来源:互联网 发布:android6.0.1源码下载 编辑:程序博客网 时间:2024/06/05 07:30

最佳拟合直线

from numpy import *import  matplotlib.pyplot as pltdef 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, labelMatdef 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 wsxArr,yArr = loadDataSet('ex0.txt')ws = standRegres(xArr,yArr)xMat = mat(xArr)yMat = mat(yArr)yHat = xMat*wsfig = 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*wsprint(corrcoef(yHat.T,yMat))ax.plot(xCopy[:,1],yHat)plt.show()