徒手实现 KNN算法问题汇总
作者:互联网
问题一:read_csv()读取文件,运行提示文件不存在
代码:import pandas as pd
data=pd.read_csv('D:\MachineLearning\study\vehicle.csv')
运行报错:FileNotFoundError: [Errno 2] File b'D:\\MachineLearning\\study\x0behicle.csv' does not exist: b'D:\\MachineLearning\\study\x0behicle.csv'
分析:1 不能使用中文的路径名和文件名 2 路径用 "\\"标记不是用\或者/,
修改后代码:data=pd.read_csv('D:/MachineLearning/study/vehicle.csv') 或 data=pd.read_csv('D:\\MachineLearning\\study\\vehicle.csv')
运行后结果:runfile('D:/MachineLearning/study/untitled1.py', wdir='D:/MachineLearning/study')
原因: 注意windows下路径中的反斜杠\和斜杠/及双斜杠\\区别,windows下\是转义字符,想表达\请用\\
问题二:pandas中利用 .iloc 选取数据&numpy数组切片操作
代码:feature=np.array(data.iloc[:,0:2])
分析: Pandas中基本数据结构是Series(数组)和Dataframe(类似二维数组),Pandas中提供了Index对象,每个 Series 都会带有一个对应的Index,用来标记不同的元素,Index 的内容不一定是数字,也可以是字母、中文等,.iloc:根据标签的所在位置,从0开始计数,选取列,loc:根据DataFrame的具体标签选取列
numpy的数组切片操作,一般是array[a:b,c:d],首先是看逗号,逗号前是取行的下标范围a到b-1,逗号后是取列的下标范围c到d-1 ,前面是行索引,后面是列索引;此处:取行全部数据,列从第0列开始取到第1列,第2列不算。即vehicle.csv数组中取出长度和宽度,标签列不取。
问题三:matplotlib.pylab 画散点图报语法错误
代码:plt.scatter(data['length'][data['label]=='car'],data['width'][data['label']=='car'],c='y')
plt.scatter(data['length'][data['label]=='truck'],data['width'][data['label']=='truck'],c='r')
运行报错:SyntaxError: invalid syntax
分析:matplotlib——pyplot和pylab区别 pylab包括了许多NumPy和pyplot模块中常用的函数。测试后发现不是导入问题,从正确的句子中复制黏贴这两段代码,可运行出正确结果。
修改后代码:
plt.scatter(data['length'][data['label']=='car'],data['width'][data['label']=='car'],c='y') #先取length的数值,里面有car和truck的长度,再单独取label那一行为car的值
plt.scatter(data['length'][data['label']=='truck'],data['width'][data['label']=='truck'],c='r') #先取width的数值,里面有car和truck的长度,再单独取label那一行为truck的值
运行后结果:正常显示散点图
原因:初始代码是打字上去的, 在[data['label]=='car'],这个地方,label后面少打了一个单引号 ' ,造成句法不通,散点图不显示;希望以后在写代码的过程中注意符号的对称。
标签:KNN,MachineLearning,car,study,汇总,label,csv,data,徒手 来源: https://www.cnblogs.com/athenawang/p/11720853.html