首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python数据分析之k-近邻算法

本文参考于《机器学习实战》

k-近邻算法(k-nearest neighbor,KNN)是一种基本的分类与回归算法。它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。本文将基于《机器学习实战》上的约会数据集展开。

分类步骤

准备数据

约会对象分为三类:1.不喜欢的人2. 魅力一般的人3. 极具魅力的人 。测试集datingTestSet.txt,每行一个样本,每个样本3个特征和一个类别,数据集维数1000x3 ,三个特征如下:

每年获得的飞行常客里程数

玩视频游戏所消耗时间百分比

每周消费的冰淇淋公升数

将得到的txt文本文件转换成训练样本矩阵和标签向量,代码如下:

分析数据

通过数据可视化直观了解特征对分类的影响。代码如下:

图形如下:

测试数据

首先是数据特征归一化。定义函数如下:

我们将已有数据的90%作为训练集,剩下的10%作为测试集。

分类结果如下,错误率为5%,通过调整hoRatio和变量k的值,错误率会相应变化。

使用算法

通过输入三个特征的值,输出是否喜欢该约会对象。

输入特征值,输出判断结果。

结语

kNN是非常常用的分类算法,除了通过上述方式定义函数外,你也可以直接通过下述语句直接调用。

from sklearn.neighborsimport KNeighborsClassifier

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180717G1TZ6900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券