2

我对 python 很陌生,并且遵循 Python 中的机器学习一书。在一个例子中,我有

min(datMat[:,0])

应该返回

 matrix([[-5.379713]])

但我得到的是

 matrix([[<map object at 0x000002130BF3E240>]], dtype=object)

当我将其包含在代码中时

rangeJ = float(max(dataSet[:,j]) - minJ)

我收到错误“TypeError: unsupported operand type(s) for -: 'map' and 'map'”。

这是我用来生成 dataMat 的代码

def loadDataSet(fileName):
    dataMat = []
    fr = open(fileName)
    for line in fr.readlines():
       curLine = line.strip().split('\t')
       fltLine = map(float,curLine)
       dataMat.append(fltLine)
   return dataMat

我很难弄清楚这一点。任何帮助都会很棒!

4

1 回答 1

6

正如 PM 2Ring 的评论中所建议的那样,当您使用 Python 3 时,您的书似乎正在使用 Python 2。该map函数在 Python 2 中返回一个列表,但在 Python 3 中它返回一个地图对象,除非您将其显式转换为列表。您应该能够通过更改此行来使您的代码工作:

fltLine = map(float,curLine)

至:

fltLine = list(map(float,curLine))
于 2018-05-01T12:51:09.360 回答