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 infr.readlines():
lineArr=[]
curLine= line.strip().split('\t')for i inrange(numFeat):
lineArr.append(float(curLine[i]))
dataMat.append(lineArr)
labelMat.append(float(curLine[-1]))returndataMat,labelMatdefstandRegres(xArr,yArr):
xMat= mat(xArr); yMat =mat(yArr).T
xTx= xMat.T*xMatif linalg.det(xTx) == 0.0:print "This matrix is singular, cannot do inverse"
returnws= xTx.I * (xMat.T*yMat)returnwsdef 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"
returnws= xTx.I * (xMat.T * (weights *yMat))return testPoint *wsdef lwlrTest(testArr,xArr,yArr,k=1.0): #loops over all the data points and applies lwlr to each one
m =shape(testArr)[0]
yHat=zeros(m)for i inrange(m):
yHat[i]=lwlr(testArr[i],xArr,yArr,k)returnyHatdef lwlrTestPlot(xArr,yArr,k=1.0): #same thing as lwlrTest except it sorts X first
yHat