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
def standRegres(xArr,yArr):
xMat=mat(xArr);yMat=mat(yArr).T#转置
xTx=xMat.T*xMat
if linalg.det(xTx)== 0.0:#行列式
print("This is singular,cannot do inverse")
return
ws=xTx.I*(xMat.T*yMat)#逆矩阵;或者linalg.solve(xTx,xMat.T*yMatT),linalg.solve 解方程ax = b
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
def standRegres(xArr,yArr):
xMat=mat(xArr);yMat=mat(yArr).T#转置
xTx=xMat.T*xMat
if linalg.det(xTx)== 0.0:#行列式
print("This is singular,cannot do inverse")
return
ws=xTx.I*(xMat.T*yMat)#逆矩阵;或者linalg.solve(xTx,xMat.T*yMatT),linalg.solve 解方程ax = b
return ws
#len() 方法返回对象(字符、列表、元组等)长度或项目个数
open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写
readline() 方法用于从文件读取整行,包括 "\n" 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符
readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。
如果碰到结束符 EOF 则返回空字符串
split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串
import matplotlib.pyplot as plt
fig=plt.figure()
ax=fig.add_subplot(111)
ax.scatter(xMat[:,1].flatten().A[0],yMat.T[:,0].flatten().A[0])#flatten()返回一个折叠成一维的数组
xCopy=xMat.copy()
xCopy.sort(0)
yHat=xCopy*ws
ax.plot(xCopy[:,1],yHat)#2D曲线绘图函数
plt.show()
corrcoef(yHat.T,yMat)#相关系数