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 的函数,以此来处理输入格式问题。该函数的输入为文
件名字符串,输出为训练样本矩阵和类标签向量

结果显示:

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

结果显示:

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

 

结果显示:

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

 

结果显示:

 

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

结果显示:

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

 

数据集:

  • 总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值