k近邻算法

  • 概论

采用测量不同特征值之间的距离方法进行分类

  • 示例

K近邻算法改进约会网站的配对效果

海伦使用约会网站寻找自己的约会对象,尽管网站会推荐不同的人,但她并不是喜欢每一个。经过总结,发现交往三种类型的人

1.   不喜欢的人

2.   魅力一般的人

3.   极具魅力的人

在约会网站上使用k一近邻算法
1.   收集数据 :  提供文本文件。
2.   准备数据 :  使用 Python 解析文本文件。
3.   分析数据 :  使用 Matplotlib 画二维扩散图。 
4.   训练算法 :  此步骤不适用于 k -近邻算法。
5.   测试算法:使用海伦提供的部分数据作为测试样本。测试样本和非测试样本的区别在于:测试样本是已经完成分类的数据,如果预测分类与实际类别不同,则标记为一个错误。
6.   使用算法:产生简单的命令行程序,然后海伦可以输入一些特征数据以判断对方是否为自己喜欢的类型。

一.   准备数据:从文本中分析数据

海伦收集约会数据已经有了一段时间,她把这些数据存放在文本文件datingTestSet.txt中,每
个样本数据占据一行,总共有1000行。海伦的样本主要包含以下3种特征:

1.   每年获得的飞行常客里程数
2.   玩视频游戏所耗时间百分比
3.   每周消费的冰淇淋公升数
在将上述特征数据输入到分类器之前,必须将待处理数据的格式改变为分类器可以接受的格
式。在kNN.py中创建名为 file2matrix 的函数,以此来处理输入格式问题。该函数的输入为文
件名字符串,输出为训练样本矩阵和类标签向量

k近邻算法_第1张图片

结果显示:

k近邻算法_第2张图片

二.   分析数据:  使用Matplotip创建散点图

k近邻算法_第3张图片

k近邻算法_第4张图片

结果显示:

k近邻算法_第5张图片

三.   准备数据:归一化数据

 k近邻算法_第6张图片

结果显示:

k近邻算法_第7张图片

四.   测试算法: 作为完整程序验证分类器

k近邻算法_第8张图片

 k近邻算法_第9张图片

结果显示:

k近邻算法_第10张图片

 

五.   使用算法:  构建完整可用系统

k近邻算法_第11张图片

k近邻算法_第12张图片

k近邻算法_第13张图片

结果显示:

输出三个数据判断海伦对这个人是否喜欢

 

数据集:

k近邻算法_第14张图片

  • 总结

K近邻算法精度高,对异常值不敏感,无数据输入假定,但计算复杂度高,空间复杂度高,所以适用数据范围是数值型和标称型。

你可能感兴趣的:(近邻算法,算法)