KNN算法概述
简单来说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。
KNN不需要训练算法,直接将一个测试样本的每个特征与训练集中各个样本的对应的每个特征进行比较,然后算法提取出训练样本中特征最相似(即 距离最近)的样本的分类标签。
一般来说,我们只选择训练样本中前k个最相似的样本,这就是k-近邻算法中k的出处,通常k为整数且k k-近邻算法
优点:精度高、对异常值不敏感、无数据输入假定
缺点:计算复杂度高、空间复杂度高
使用数据范围:数值型和标称型
标称型:标称型目标变量的结果只在有限目标集中取值,如真与假,0、1与2等 (标称型目标变量主要用于分类)
数值型:数值型目标变量则可以从无限的数值集合中取值,如0.100,42.001等 (数值型目标变量主要用于回归分析)
pseudo-code:
对测试集中每个样本一次执行以下操作:
(1)计算一直类别数据集中的点与当前测试点之间的距离;
(2)按照距离递增次序排序;
(3)选取与当前测试点距离最小的k个点;
(4)确定前k个点所在类别的出现频率;
(5)返回前k个点出现频率最高的类别作为当前测试点的预测分类;
示例:改进约会 站的配对效果
训练样本:1000
类别:不喜欢的人0、魅力一般的人1、极具魅力的人2
三种特征(数值型):(比较奇怪)
1、 每年获得的飞行常客里程数
2、 玩游戏所耗时间百分比
3、 每周消费的冰淇淋公斤数
示例:手写识别系统
训练样本:2000 测试样本:900
类别:0-9
1024个特征(32×32个像素)
分类器为上一个实例的 classify0()
#2 手写数字识别算法def handwriting_classtest(): hw_labels = [] # 创建labels列表 training_filelist = listdir('digits/trainingDigits') # 将文件夹各个文件的文件名存入list m_train = len(training_filelist) 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!