ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

徒手实现 KNN算法问题汇总

2019-10-22 17:00:31  阅读:362  来源: 互联网

标签:KNN MachineLearning car study 汇总 label csv data 徒手


问题一: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有