第一:书中file2matrix函数可能无法通过编译。函数如下:
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(int(listFromLine[-1]))
index+=1
return returnMat,classLabelVector
解决问题:把其中语句classLabelVector.append(listFromLine[-1])
第二.在使用matplotlib模块进行画图颜色区分时,也可能无法编译成功
fig=plt.figure()
ax=fig.add_subplot(111)
ax.scatter(datingDataMat[:,1],datingDataMat[:,2],15.0*array(LabelsList),15.0*array(LabelsList))
plt.show()
这个问题和第一个问题源于同一个原因,即作者数据集的问题:
40920 8.326976 0.953952 largeDoses
14488 7.153469 1.673904 smallDoses
26052 1.441871 0.805124 didntLike
Label是字符串,无法使用int("abc"),array也是如此
解决问题:1.把数据集换成datingTestSet2.txt
2.自己写个函数,把标签数字化
def classLabels(dataSet):
newLabels=[]
for item in dataSet:
if item=='largeDoses':
newLabels.append(2)
elif item=='smallDoses':
newLabels.append(1)
elif item=='didntLike':
newLabels.append(0)
return newLabels
第三.画图补充
坐标注释: plt.xlabel()
plt.ylabel()
注意编码问题:#coding=UTF-8
第四. 手写识别系统
不知道什么原因,读取图片数据那里一直编译不成功
trainingMat[i,:] = img2vector('trainingDigits/%s' % fileNameStr)
想起python中尽量尽量不嵌套原则,后分成两句,就通过了fname='trainingDigits/%s' %fileNameStr
trainingMat[i,:]=img2vector(fname)