正確加載方法:
def loadDataSet(filename):
numFeatures = len(open(filename).readline().split('\t')) - 1
dataMat = []
labelMat = []
f = open(filename)
for line in f.readlines():
lineArr=[]
curLine=line.strip().split('\t')
for i in range(0,numFeatures):
lineArr.append(float(curLine[i]))
dataMat.append(lineArr)
labelMat.append(float(curLine[-1]))
return dataMat,labelMat
錯誤加載方法:
def loadDataSet(filename):
f = open(filename)
numFeatures = len(f.readline().split('\t')) - 1
dataMat = []
labelMat = []
for line in f.readlines():
lineArr=[]
curLine=line.strip().split('\t')
for i in range(0,numFeatures):
lineArr.append(float(curLine[i]))
dataMat.append(lineArr)
labelMat.append(float(curLine[-1]))
return dataMat,labelMat
原因:獲取numFeatures時使用了readline()函數,使得句柄f移動到第二行,下面代碼中的readlines()函數只能讀取剩下的行,相當於少讀取了第一行。
