u012720518
fighting--sky
2016-10-20 12:42
采纳率: 100%
浏览 12.8k
已采纳

机器学习中例子 可能因为python3出现错误 求指导

图片说明
附代码

 from numpy import *
import operator
import matplotlib
import matplotlib.pyplot as plt
def file2matrix(filename):
    fr = open(filename)
    arrayOLines = fr.readlines() #逐行读取文件
    numberOfLines = len(arrayOLines) #获取文件的行数
    returnMat = zeros((numberOfLines,3)) #创建一个矩阵
    classLabelVector = []
    index = 0
    for line in arrayOLines:
        line = line.strip() #删除所有换行符
        listFromLine = line.split('\t') #通过指定分割符对字符串切分
        returnMat[index,:]=listFromLine[0:3]
        classLabelVector.append((listFromLine[-1]))
        index+=1
    return returnMat,classLabelVector
datingDataMat,datingLabels = file2matrix('datingTestSet.txt')
#print(datingDataMat,datingLabels)
fig = plt.figure()
ax = fig.add_subplot(111)
'''
''按照列进行划分
'''
ax.scatter(datingDataMat[:,1],datingDataMat[:,2],15.0*array(datingLabels),15.0*array(datingLabels))
plt.show()

错误提示
'multiply' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_36822079
    qq_36822079 2016-12-03 04:34
    已采纳

    file2matrix函数里的
    classLabelVector.append(listFromLine[-1])应该改成classLabelVector.append(int(listFromLine[-1]))

    同时,下面调用函数的时候应该是'datatingTestSet2',楼主应该是粗心,没有看到2,datatingTestSet2里的最后一列就已经全是数字了。

    点赞 11 评论
  • zqbnqsdsmd
    zqbnqsdsmd 2016-10-22 08:43
    点赞 评论

相关推荐