机器学习实战:第二章KNN中的一些问题

本文解决Python机器学习实战中遇到的问题,包括数据导入、matplotlib绘图、数据预处理及手写识别系统的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一:书中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)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值