- 概论
采用测量不同特征值之间的距离方法进行分类
- 示例
K近邻算法改进约会网站的配对效果
海伦使用约会网站寻找自己的约会对象,尽管网站会推荐不同的人,但她并不是喜欢每一个。经过总结,发现交往三种类型的人
1. 不喜欢的人
2. 魅力一般的人
3. 极具魅力的人
在约会网站上使用k一近邻算法
1. 收集数据 : 提供文本文件。
2. 准备数据 : 使用 Python 解析文本文件。
3. 分析数据 : 使用 Matplotlib 画二维扩散图。
4. 训练算法 : 此步骤不适用于 k -近邻算法。
5. 测试算法:使用海伦提供的部分数据作为测试样本。测试样本和非测试样本的区别在于:测试样本是已经完成分类的数据,如果预测分类与实际类别不同,则标记为一个错误。
6. 使用算法:产生简单的命令行程序,然后海伦可以输入一些特征数据以判断对方是否为自己喜欢的类型。
一. 准备数据:从文本中分析数据
海伦收集约会数据已经有了一段时间,她把这些数据存放在文本文件datingTestSet.txt中,每
个样本数据占据一行,总共有1000行。海伦的样本主要包含以下3种特征:
1. 每年获得的飞行常客里程数
2. 玩视频游戏所耗时间百分比
3. 每周消费的冰淇淋公升数
在将上述特征数据输入到分类器之前,必须将待处理数据的格式改变为分类器可以接受的格
式。在kNN.py中创建名为 file2matrix 的函数,以此来处理输入格式问题。该函数的输入为文
件名字符串,输出为训练样本矩阵和类标签向量
结果显示:
二. 分析数据: 使用Matplotip创建散点图
结果显示:
三. 准备数据:归一化数据
结果显示:
四. 测试算法: 作为完整程序验证分类器
结果显示:
五. 使用算法: 构建完整可用系统
结果显示:
输出三个数据判断海伦对这个人是否喜欢
数据集:
- 总结
K近邻算法精度高,对异常值不敏感,无数据输入假定,但计算复杂度高,空间复杂度高,所以适用数据范围是数值型和标称型。