统计学习方法:第3章 k-近邻算法.pptx

  第三章k-近邻算法分类问题分类问题爱情片、剧情片、喜剧片、家庭片、伦理片、文艺片、音乐片、歌舞片、动漫片、西部片、武侠片、古装片、动作片、恐怖片、惊悚片、冒险片、犯罪片、悬疑片、记录片、战争片、历史片、传记片、体育片、科幻片、魔幻片、奇幻片Supervised learning提纲KNN算法原理和流程Python程序调试Python文件类型模块Idle调试环境数据载入算法和关键函数分析算法改进和实验作业K-Nearest Neighbors算法原理K=7 Neighborhood?K=1 NeighborhoodDependent of the data distributions.Can make mistakes at boundaries.K-Nearest Neighbors算法特点优点精度高对异常值不敏感无数据输入假定缺点计算复杂度高空间复杂度高适用数据范围数值型和标称型 K-Nearest Neighbors Algorithm工作原理存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每个数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,只选择样本数据集中前N个最相似的数据。K一般不大于20,最后,选择k个中出现次数最多的分类,作为新数据的分类K近邻算法的一般流程 收集数据:可以使用任何方法准备数据:距离计算所需要的数值,最后是结构化的数据格式。分析数据:可以使用任何方法训练算法: (此步骤kNN)中不适用测试算法:计算错误率使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。距离度量Lp距离:欧式距离:曼哈顿距离L∞距离距离度量K值的选择如果选择较小的K值“学 习”的近似误差(approximation error)会减小,但 “学习”的估计误差(estimation error) 会增大,噪声敏感K值的减小就意味着整体模型变得复杂,容易发生过 拟合.如果选择较大的K值,减少学习的估计误差,但缺点是学习的近似误差会增大.K值的增大 就意味着整体的模型变得简单.Python程序调试Python传统运行模式:Python解释器:运行Python程序的程序; Python字节码:Python将程序编译后所得到的底层形式;Python自动将字节码保存为名为.pyc的文件中;录入的源码转换为字节码->字节码在PVM(Python虚拟机)中运行->代码自动被编译,之后再解释m.pym.pycPVM源代码字节码运行时Python程序调试Python无“build”和“make”的步骤,代码写好后立即运行 Python字节码不是机器的二进制代码(so 不能像C++运行速度那么快,其速度介于传统编译语言和传统解释语言之间)raw_input()的使用Python模块每一个.py文件都是一个模块,其他文件可以通过导入一个模块读取这个模块的内容,相当于C中的include……一个大型程序往往呈现出多模块的形式。其中一个模块文件被设计为主文件(or顶层文件)。模块是Python程序最大的程序结构 每个模块文件是一个独立完备的变量包装,即一个命名空间模块的导入import,from 和 reloadimport语句将模块作为一个整体引用,相当于引入一个类的object。From 增加了对变量名的额外赋值,也就是拷贝模块的属性,因此能够以主模块导入,而不是原来的对象例子:A=“this”B=“is”C=“test”Print A,B,CImport test1Test1.AFrom test import *AReload和重编译修改文件如kNN注意Reload()或者:重新编译import py_compile py_pile('D:pythonmachinelearninginactionCh02kNN.py')最好不要用中文,如果需要,用编码转换工具codecIdle调试环境Idle 的使用:Copy的结果是什么?For语句 Reload的好处修改程序,显示修改时间Import 和from A import *的关系空间,如numpyPython导入数据>>> import os>>> os.getcwd()'D:\python'>>>os.chdir('D:\python\machinelearninginaction\Ch02')>>> os.getcwd()'D:\python\machinelearninginaction\Ch02'>>> open('.\