本文作者通过Knn算法进行了一次用户判断预测的流程,文章为作者根据自身经验所做出的总结,希望通过此文能够加深你对Knn算法的认识。

knn算法简介

K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。knn的基本思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

如下图所示,如何判断绿色圆应该属于哪一类,是属于红色三角形还是属于蓝色四方形?

如果K=3,由于红色三角形所占比例为2/3,绿色圆将被判定为属于红色三角形那个类

如果K=5,由于蓝色四方形比例为3/5,因此绿色圆将被判定为属于蓝色四方形类。

由于KNN最邻近分类算法在分类决策时只依据最邻近的一个或者几个样本的类别来决定待分类样本所属的类别,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

因此,k值的选择、距离度量以及分类决策规则是k近邻算法的三个基本要素。

真实业务场景

某公司存在有一些数据样本(500*5矩阵),是关于人群属性的一些特征,希望通过已知数据的特征,推测出部分目标数据的性质,假如特征向量包含:

  1. 平均每日游戏时长-game time
  2. 异性朋友数-female friends
  3. 周末在家时长-stay-in time
  4. 用户接受类型-attr(attr是目标判断属性,同时也是标记属性)

问题:我们需要根据已知的这些属性,判断最后一个样本的属性是“Y”还是“N”

数据特征分析

我们所拿到的这批数据是500*5的矩阵,以平均每日游戏时长,异性朋友数,周末在家时长为轴,将不同属性的点用不同颜色区分,利用matplotlib绘制散点图,最终效果如图。

由于这些测试数据在空间的分布非常集中,所以对于需要验证的点(红,绿两点),我们很容易区分出这些点的属性
结合本次的业务场景,我们将通过前三种特征的空间分布,对attr属性进行预测

具体算法

在三维空间中,我们可以直观判断,那在具体的算法实现中,可以考虑使用

n维空间的欧氏距离:

通过以上公式,我们能对多维度数据进行分析,得到目标与各点的距离。

同时,细心的读者肯定考虑到,我们已知的这些特征,存在量级之间的差异,所以我们通常需要通过归一化特征值,对消除不同量级造成的影响。因此,我们选用0-1标准化(0-1 normalization)对原始数据的线性变换。

0-1标准化:

在通过以上两步对数据预处理完成后,我们将所得的距离进行排序,并选取合适的K值对目标数据进行预测。

在此选择k=10(仅举例),可以发现,前10项中Y出现的次数最多,因此我们可以认为目标数据的值为Y。

knn算法总结

在数据分析团队确定好数据特征后,对相应数据进行收集及清洗,对各数据特征进行归一化处理(视具体业务场景定,或需特征考虑权重),完成以上流程后,进行以下通用流程:

  1. 计算测试数据与各个训练数据之间的距离;
  2. 按照距离的递增关系进行排序;
  3. 选取距离最小的K个点;
  4. 确定前K个点所在类别的出现频率;
  5. 返回前K个点中出现频率最高的类别作为测试数据的预测分类。

最后,我们简单总结一下Knn的适用场景

  • 数据已存在标记特征,Knn是监督算法
  • 样本数在100k以下,由于算法会对每个目标值进行多维度距离计算,所以样本过大可能超负荷
  • 样本非文本,或可转化为数值

以上便是通过Knn算法进行了一次用户判断预测的流程,文中所展示内容均为模拟数据,且选择了其中最简单的判断属性。如文中有遗漏及不足,请各位指出。

机器学习:基于Knn算法的用户属性判断方案设计相关推荐

  1. python 数学公式识别_Python实现基于KNN算法的笔迹识别功能详解

    本文实例讲述了Python实现基于KNN算法的笔迹识别功能.分享给大家供大家参考,具体如下: 需要用到: Numpy库 Pandas库 手写识别数据 点击此处本站下载. 数据说明: 数据共有785列, ...

  2. python模拟手写笔迹_Python实现基于KNN算法的笔迹识别功能详解

    本文实例讲述了Python实现基于KNN算法的笔迹识别功能.分享给大家供大家参考,具体如下: 需要用到: Numpy库 Pandas库 手写识别数据 点击此处本站下载. 数据说明: 数据共有785列, ...

  3. 基于KNN算法的手写体数字识别

    基于KNN算法的手写体数字识别 KNN分类算法是一种经典的分类算法,属于懒惰学习算法的一种. 1.算法原理 工作原理:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道 ...

  4. 机器学习之KNN算法原理

    机器学习之KNN算法原理 1 KNN算法简介 2 算法思想 3 多种距离度量公式 ① 欧氏距离(Euclidean distance) ② 曼哈顿距离(Manhattan distance) ③ 闵式 ...

  5. 机器学习:KNN算法对鸢尾花进行分类

    机器学习:KNN算法对鸢尾花进行分类 1.KNN算法的理解: 1.算法概述 KNN(K-NearestNeighbor)算法经常用来解决分类与回归问题, KNN算法的原理可以总结为"近朱者赤 ...

  6. 机器学习实战-KNN算法-20

    机器学习实战-KNN算法-鸢尾花分类 # 导入算法包以及数据集 from sklearn import neighbors from sklearn import datasets from skle ...

  7. php定位和天气,基于thinkphp实现依据用户ip判断地理位置并提供对应天气信息的应用...

    基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用 我们都知道,在很多的网站都提供了给用户提供天气预报的功能,有时会发现,用户即使不输入任何和自己有关的地理位置信息,同样的网站也 ...

  8. php定位和天气,基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用_PHP教程...

    基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用 我们都知道,在很多的网站都提供了给用户提供天气预报的功能,有时会发现,用户即使不输入任何和自己有关的地理位置信息,同样的网站也 ...

  9. 【Python】基于kNN算法的手写识别系统的实现与分类器测试

    基于kNN算法的手写识别系统 1.      数据准备 使用windows画图工具,手写0-9共10个数字,每个数字写20遍,共200个BMP文件. 方法如下,使用画图工具,打开网格线,调整像素为32 ...

最新文章

  1. java 时间间隔 工作日,计算Java中两个日期之间的工作日数
  2. Synchronization (computer science)
  3. verdi使用linux命令,verdi工具的使用
  4. 算法学习-求两个整数的最大公约数
  5. AJPFX关于collection总结
  6. linux read line,LINUX readline 库的使用,,
  7. 11_python基础—函数(引用、全局、局部变量)
  8. sql server 锁与事务拨云见日(下)
  9. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! node-sass@
  10. 群晖 root_群晖洗白简单教程
  11. 智能家居控制系统制作技术_【动态】HDL在欧洲推广智能家居技术
  12. 【Inpho精品教程】任务二:Inpho创建工程(创建项目、新建相机参数、导入照片、导入POS、生成航条、保存项目)
  13. Swift之Attempting to badge the application icon but haven't received permission from the user to badg
  14. 驱动开发---cc1: error: code model kernel does not support PIC mode(改文件Unhelp?try it)
  15. 北京飞漫软件创始人魏永明
  16. Logisitc Regression 预测员工离职率
  17. 文献:利用自驱动分子马达并行计算子集和问题 Parallel computation with molecular-motor-propelled agents...(PNAS)
  18. 1、DirectX 系列之 Direct 2D
  19. 中国大学moocpython_中国大学MOOC(慕课)_Python 语言程序设计_测试题及答案
  20. 最大公约数、最小公倍数算法实现

热门文章

  1. 深入理解pandas读取excel,txt,csv文件等命令
  2. jupyter|魔法函数问题| UsageError: Line magic function `%` not found
  3. 谷歌colab实验室使用GPU
  4. 批处理,%~d0 cd %~dp0 代表什么意思
  5. “智源 — INSPEC 工业大数据质量预测赛” 上线,为硬核工业制造炼就 AI 之心...
  6. 如何从从工程师跨步管理者,微博信息安全总经理手把手教你企业安全体系建设...
  7. 如何为博客选择可以赢利的主题
  8. Python中glob.glob的排序问题
  9. 用VTK实现CT图片的三维重建过程
  10. 【CSTC白皮书】分布式数据库发展路径研究(附下载)