def loadDataSet(fileName): # 解析文件,按tab分割字段,得到一个浮点数字类型的矩阵
dataMat = [] # 文件的最后一个字段是类别标签
fr = open(fileName)
for line in fr.readlines():
curLine = line.strip().split('\t')
fltLine = map(float, curLine)#将每个元素转成float类型
dataMat.append(fltLine)
return dataMat
# 构建聚簇中心,取k个(此例中为4)随机质心
def randCent(dataSet, k):
n = np.shape(dataSet)[1]#输出列数 此处应改为0
centroids = np.mat(np.zeros((k,n))) # 每个质心有n个坐标值,总共要k个质心
for j in range(n):
minJ = min(dataSet[:,j])
maxJ = max(dataSet[:,j])
rangeJ = float(maxJ - minJ)
centroids[:,j] = minJ + rangeJ * random.rand(k, 1)
return centroids
报错:
TypeError: unsupported operand type(s) for -: 'map' and 'map'
rangeJ = float(maxJ - minJ)为两个map型数据相减
解决:
改成
#python2中map(float,curline)返回list,python3中返回map
fltLine = list(map(float, curLine))#将每个元素转成float类型