在运行机器学习实战所给的用例代码时,出现了以下的错误:
ret, rcount, out=ret, casting='unsafe', subok=False)
TypeError: unsupported operand type(s) for /: 'map' and 'int'
显示
def pca(dataMat, topNfeat=9999999):
meanVals = mean(dataMat, axis=0)
这里出错,然后查了一下,发现是loadDataSet里出现错误,map()函数的结果是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。
def loadDataSet(fileName, delim='\t'):
fr = open(fileName)
stringArr = [line.strip().split(delim) for line in fr.readlines()]
datArr = [map(float, line) for line in stringArr]
return mat(datArr)
只需要改成以下代码就行:
def loadDataSet(fileName, delim='\t'):
fr = open(fileName)
stringArr = [line.strip().split(delim) for line in fr.readlines()]
datArr = [list(map(float,line)) for line in stringArr]
# datArr = [map(float, line) for line in stringArr]
return mat(datArr)