K邻近(KNN)分类和预测算法的原理及实现

2023-10-31


2016年4月13日 BY  蓝鲸  LEAVE A COMMENT

K邻近算法(k-NearestNeighbor)简称KNN,是分类算法中的一种。KNN通过计算新数据与历史样本数据中不同类别数据点间的距离对新数据进行分类。简单来说就是通过与新数据点最邻近的K个数据点来对新数据进行分类和预测。

我们以一个实例来说明KNN算法的原理及实现过程。下图是一组贷款用户还款情况的样本数据,其中包含了贷款用户的年龄,贷款金额和是否还款。我们将基于这些历史的贷款样本数据,通过KNN算法对新的贷款用户进行还款预测。

原始数据

将贷款用户的样本数据按还款情况进行分类,并将两类数据生成散点图。在散点图中,X轴为贷款用户年龄,Y轴为贷款金额。绿色的方块表示已经还款的用户,蓝色的三角表示未还款的用户,红色的圆圈代表新产生的数据(48岁用户贷款142000元)。我们将依据这些已有明确分类的数据点对新产生的数据进行分类和预测。

散点图

寻找距离最近的邻居

KNN中对新数据点进行分类的方法是计算它与其他所有数据点间的距离,并以距离最近的点所在的分类作为新数据点的类别。计算距离的方法很多种,欧式距离,曼哈顿距离和闵可夫斯基距离这里我们使用的是欧氏距离。

欧几里德距离评价

欧几里德距离评价在之前的协同过滤中我们已经介绍并使用过。以下是具体的计算公式。通过分别计算新增数据与历史数据在X和Y两个维度上的差值之和来获得距离值。

Euclidean distance

下表是我们通过计算欧式距离获得的距离值,通过这些数据点与新增数据间的距离来对新增数据进行分类。

Original data3

对数据进行分类

数据分类的方法很简单,将计算获得的距离值进行排序。距离最近的数据点所在的类别就是新增数据的分类。在这个示例中,33岁贷款150000元的数据点与新增数据点距离最近。因此我们认为新增数据点与他属于同一个类别。为会还款的用户分类。

Original data1

将距离值的计算结果还原到散点图中可以看到,绿色方框与红色圆圈的数据点距离最近,因此新增数据被分类到已还款的类别中。

Original data

这里有一个问题。我们判断的两个维度是年龄和借款金额,这里两个维度的数值测量尺度存在较大的差异。贷款金额以万元为单位,而年龄则以年为单位,贷款金额的数值明显要比年龄大很多。这会对计算距离值产生影响,造成距离值的偏差。因此,为了更准确的计算距离值,我们需要先对两类不同测量尺度的数据进行标准化。将数据等比例缩放到0-1区间中,然后再计算他们的距离值。

原始数据0-1标准化

我们使用0-1标准化方法对贷款金额和年龄两个维度的数据进行标准化处理。以下是0-1标准化的计算公式。其中Max为最大值,Min为最小值,X为要进行标准化的数据。

数据标准化

通过0-1标准化后,年龄和贷款金额两组数据都进行了等比例缩放,不再像标准化之前相差悬殊,变成了0-1区间无量纲的纯数值。我们对标准化后的数据再次计算欧式距离。

原始数据标准化

0-1标准化后的数据在对距离进行排序后我们发现,结果与之前不一致了。标准化前新数据的分类为Y,也就是还款分类。而标准化后新数据被分到了N未还款的分类。

standardized data1

选择并调整K值

无论是对原始数据的距离计算和分类还是标准化后的分类。我们都是以距离最近的数据点分类来表示的新数据类别。只用一个数据点(K值)进行分类的准确性并不高,并且可能会被数据中的噪声影响而产生错误。一般情况下选择多个K值比只选择一个K值要更加准确,并且可以避免数据中噪声的干扰。最优的K值一般应该在3-10个之间。

这里我们选择了K=6,6个数据点中4个为Y,2个为N。代表还款的Y出现的概率(0.67)要更高一些,所以新的数据点应该被分类为Y。当新数据的结果发生时,我们会将结果与现在的分类和预测进行对比,以调整和优化K值的选择。

SD K=6

—【所有文章及图片版权归 蓝鲸(王彦平)所有。欢迎转载,但请注明转自“蓝鲸网站分析博客”。】—

FILED UNDER: 网站数据分析  TAGGED WITH: K-NEAREST NEIGHBORKNN


Read more: http://bluewhale.cc/2016-04-13/k-nearest-neighbor.html#ixzz45sGyjEcn
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

K邻近(KNN)分类和预测算法的原理及实现 的相关文章

  • MySQL基础架构与日志详解

    一 MySQL基础架构 MySQL可以分为Server层和存储引擎层两部分 Server层包括连接器 查询缓存 分析器 优化器 执行器等 涵盖MySQL的大多数核心服务功能 以及所有的内置函数 如日期 时间 数学和加密函数等 所有跨存储引擎
  • 软件需求之DFD图

    DFD图是一种以数据和数据的封闭性为基础 从问题空间到某种表示的映射方法 是一种结构化分析方法 DFD图在软件的需求分析中发挥着不可替代的作用 DFD图在软考中是必考的内容 在软件工程中也是一个非常中要的图 下面是我结合网上的资料和自己的所
  • Linux系统里压缩PDF文件大小

    sudo apt get install ghostscript gs sDEVICE pdfwrite dCompatibilityLevel 1 4 dPDFSETTINGS screen dNOPAUSE dQUIET dBATCH
  • JavaFX 控件 ImageView

    ImageView 支持格式 BMP GIF JPEG PNG 加载图片 如果设置了 requestedXXX 尺寸 ImageView中 设置 FitXXX 尺寸是基于requestedXXX 尺寸缩放 Image image new I
  • Linux & Docker常用命令

    目录 一 Docker服务相关命令 二 镜像相关命令 查看镜像 查看本地所有的镜像 搜索镜像 从网络中查找需要的镜像 拉取镜像 删除镜像 三 容器相关命令 查看容器 创建容器 进入容器 启动容器 停止容器 重启应用 删除容器 查看容器信息
  • OpenCV教程——加载、修改、保存图像

    1 颜色空间 颜色空间 也称彩色模型 又称彩色空间或彩色系统 本质上 彩色模型是坐标系统和子空间的阐述 位于系统的每种颜色都有单个点表示 RGB 红绿蓝 是依据人眼识别的颜色定义出的空间 可表示大部分颜色 但在科学研究中一般不采用RGB颜色
  • ARouter 源码分析

    ARouter基本使用 在开始分析源码之前 先了解一下ARoute如何使用的 使用ARoute可以概括为以下3步 项目中引入ARouter 及配置 初始化ARouter 开始使用 下面详细的看下每一步怎么操作 项目中引入ARouter及配置
  • 计算机一级2010的试题,全国计算机等级考试一级office2010试题

    计算机一级是要求考生对基础的计算机知识进行掌握 下面给大家整理了全国计算机等级考试一级office2010试题 欢迎阅读 全国计算机等级考试一级office2010试题 选择题答案 1 5 C A D B B 6 10 B C D B D
  • Qt项目实战2:图片查看器QImageViewer

    在博文Qt学习笔记2 QMainWindow和QWidget的区别中介绍了使用空的Qt项目创建带有菜单栏 工具栏的界面 这里 使用一个简单的图片查看器项目 来熟悉一下Qt的图片显示和基本操作 该项目实现的主要功能 实现图片的打开 关闭 居中
  • Head First Design Mode(12)-状态模式

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 状态模式 状态模式和策略模式是 双胞胎 在出生时才分开 策略模式是围绕可以互换的算法来创建成功业务的 状态模式则是通过改变对象内部的状态来帮助对象控制自己的行为 状态
  • 麻雀虽小五脏俱全,中小企业的知识管理须重视

    编者按 在知识资产越来越重要的市场发展环境下 做好企业知识管理对中小企业来说十分重要 本文从企业知识管理的重要性说起 分析了现代中小企业面临的知识管理困境 并进一步提出天翎KMS是如何帮助企业突破这种困境的 概要 1 知识管理的重要性 2
  • 表白墙 -- 前后端代码详解

    表白墙 前后端代码详解 一 前端 二 后端实现 2 1 需求 2 2 创建项目及初始化 2 3 实现提交数据 存档 2 3 1 实现 doPost 2 3 2 构造请求 修改 html 文件 2 3 3 验证 2 4 实现获取数据 读档 2
  • ubuntu-tensorflow环境配置

    前言 刚接触ubuntu和深度学习框架的时候 都可能不清楚 为什么要用ubuntu系统 windows不是很好用吗 其实很多的开发是基于linux系统的 不一定是ubuntu 但是ubuntu是大家比较熟悉的 开源的系统 pc上认为wind
  • 全桥逆变电路

    全桥逆变电路知识汇总 每一部分详细可以点击对应的下方链接 单元一 全桥逆变电路的驱动部分 驱动部分 单元二 全桥逆变电路MOS IGBT管搭建 桥式电路 单元三 阻抗匹配电路 阻抗匹配 对全桥逆变电路知识感兴趣的可以咨询博主QQ 28593
  • HDU6703 Fishing Master

    比赛的时候想的是尽量先炖鱼 果然还是赛后牛逼 反应过来无论怎样总时间内一定有所有的炖鱼时间 所以只需要尽量缩减我们的钓鱼时间即可 一 在炖鱼时间内可以把所有鱼都钓上来 那ans k t 1 n 二 不能在炖鱼时间内把所有鱼都钓上来 即每次钓
  • 小学生学Arduino---------点阵(三)动态的显示与清除

    学习目标 1 理解 整数值 的概念与使用 2 理解 N 1 指令的意义 3 掌握 反复执行多次 指令的使用 4 掌握屏幕模块的清除功能指令 5 理解 反复执行 指令与 反复执行多次 指令的嵌套使用 6 搭建电路图 7 编写程序 效果 整数包
  • 物联网LoRa系列-7:LoRa终端模组ASR6505详解

    1 ASR6505简介 在2018年 Semtech公司推出了在综合性能上优于SX1278 SX1276射频收发器的SX1268 SX1262射频收发器 各大厂商也纷纷开始根据新的射频收发器来升级方案 意在取代性能无法适应市场的SX1278
  • stm32f103串口接收队列,DMA循环模式+空闲中断

    串口通讯最主要的就是要不丢数据 不丢帧 基本设想就是建立一个大的串口缓冲区 串口接收到的数据使用循环队列的方式全部往这个缓冲区放 不过这种方式需要把串口缓冲区弄大一点 防止数据覆盖 在stm32中 利用DMA 空闲中断很容易做到这一点 只需
  • Iterm2使用指南

    Iterm2使用指南 1 安装iterm2 官网直接下载安装 官网 2 个性化设置 iterm2 gt preferences gt profiles 点击新建一个profile 下面可以设置透明度 模糊度 背景图片 设置窗口的主题配色 下

随机推荐

  • jlpt报名系统显示网络错误和服务器忙,【JLPT】12月日语等级考试报名经验与技巧...

    2017年12月日语能力考 JLPT 报名日期即将到来 N1考试 8月28日 N2考试 8月29日 其他级别考试 8月31日 这次日语考试报名的 抢椅子 大战即将展开 为了能够顺利地抢到考位 未名天日语小编还是建议大家提前做好一切报名前的准
  • CSDN-markdown编辑器指导文件

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 Sma
  • SpringBoot+Vue+Uniapp搭建的Java版本的ChatGPT智能Ai对话系统

    chatgpt java system 介绍 SpringBoot Vue Uniapp搭建的Java版本的ChatGPT智能Ai对话系统 小程序和H5包含智能Ai对话 精美Ai壁纸 知识付费商城 积分 会员 分享等公功能 后端管理包括系统
  • 虚拟存储器

    文章目录 虚拟存储器 一 虚拟存储器概述 二 页式虚拟存储器 例题分析 三 段式与段页式虚拟存储器 虚拟存储器 一 虚拟存储器概述 1 引入原因 高速的主存容量满足不了要求 虚拟存储器 在操作系统及辅助硬件的管理下 由主存和大容量外存所构成
  • R语言入门——笔记(二)--包(package)的使用及RStudio的使用,加载包和数据集

    一 1 包 package 的使用 包是扩展R基本功能的机制 集成了众多函数 如果想使用某些函数而当前R中不存在 就可以找对应函数的包直接使用 去哪里找包 如何使用包 CRAN install packages Bioconductor G
  • unity3d GUI.Button 自定义字体大小及透明背景

    代码 public class MyButton MonoBehaviour public Texture buttonTexture Use this for initialization void Start Update is cal
  • 【通信原理课设--基于MATLAB/Simulink的2ASK数字带通传输系统建模与仿真】课程设计报告大纲

    1 摘要 研究现状 对本设计模型的介绍 2 目录 自动生成即可 3 概述 3 1 课程设计背景 该设计的应用现状 针对应用部分 3 2 国内外研究背景 对该设计的研究状况 针对学术研究 3 3 报告组织形式 介绍本报告的框架结构 4 系统模
  • python图像处理Pillow学习笔记

    Pillow学习笔记 1 安装pillow pip install pillow 2 图像处理简介 图像处理RGB色彩模式 R red 0 255 G green 0 255 B blue 0 255 像素阵列 每个点就是一个像素每个点都由
  • Spring Cloud Alibaba之负载均衡组件 - Ribbon

    负载均衡 我们都知道在微服务架构中 微服务之间总是需要互相调用 以此来实现一些组合业务的需求 例如组装订单详情数据 由于订单详情里有用户信息 所以订单服务就得调用用户服务来获取用户信息 要实现远程调用就需要发送网络请求 而每个微服务都可能会
  • 疫情期间,这1家庭常备药品清单你要收藏好,4个囤药误区要避免

    疫情期间 这1家庭常备药品清单你要收藏好 4个囤药误区要避免 2022 12 06 16 30 疫情期间 这1家庭常备药品清单你要收藏好 4个囤药误区要避免 疫情常态化管理 很多人开启了 囤药 模式 有不少人感慨 像逛超市一样逛药店 像囤菜
  • linux中用top、ps命令查看进程中的线程

    在Linux上显示某个进程的线程的几种方式 方法一 PS 在ps命令中 T 选项可以开启线程查看 下面的命令列出了由进程号为
  • Spring Cloud技术分析(3)- spring cloud sleuth

    spring cloud sleuth是从google的dapper论文的思想实现的 提供了对spring cloud系列的链路追踪 本文主要从spring cloud sleuth的使用着手 上一篇 Spring Cloud技术分析 2
  • JS数组

    数组的对象是Array 1 length属性 获取字符串的长度 2 一维数组 1 2 3 4 5 5 二维数组 1 2 4 4 5 5 6 7 7 8 var arr 1 2 4 4 5 5 6 7 7 8 console log arr
  • WIN7-L2TP/IPSec 访问网站连接被重置-错误809的解决办法

    开始以为是VPS上服务配置的问题 但是移动设备是连接OK的 所以问题就推到win7系统配置的问题了 因为之前做过优化 所以考虑应该是服务的问题 L2TP属于加密的VPN的一种协议 最初win7是连上之后不能访问 非死不可 国内的可以访问 后
  • [1117]maven依赖中scope=compile和provided区别

    scope的其他参数如下 compile 默认的scope 表示dependency 依赖 都可以在生命周期中使用 而且 这些dependencies 会传递到依赖的项目中 适用于所有阶段 会随着项目一起发布 provided 跟compi
  • Prometheus-06 Prometheus与其他监控解决方案的对比

    介绍 在现代技术环境中 监控和管理系统的健康状态至关重要 许多监控解决方案可供选择 其中Prometheus作为一种开源系统监控解决方案 逐渐崭露头角 本文将对Prometheus与其他主流监控解决方案进行比较 并探讨其优势和劣势 Prom
  • 二级指针创建二维数组

    int p 利用这个二级指针创建一个能随机访问p m n 的二维数组 本质思想就是先申请一个大小为m的空间用于存放数组指针 即是 p new int m 然后为每个数组指针申请n的空间 即是for int i 0 i lt m i p i
  • 【Leetcode】153. 寻找旋转排序数组中的最小值

    题目描述 已知一个长度为 n 的数组 预先按照升序排列 经由 1 到 n 次 旋转 后 得到输入数组 例如 原数组 nums 0 1 2 4 5 6 7 在变化后可能得到 若旋转 4 次 则可以得到 4 5 6 7 0 1 2 若旋转 7
  • PAT乙级1074. 宇宙无敌加法器(C语言)

    PAT乙级真题题解目录 可回顾 1048 数字加密 都涉及使数字位数一致 1 不同位数的PAT数之间如何方便相加 构造相同大小的字符数组 按位数存储对应的数字 2 相加时转为数字进行运算 3 结果为0 为特殊情况 单独写输出代码 inclu
  • K邻近(KNN)分类和预测算法的原理及实现

    2016年4月13日 BY 蓝鲸 LEAVE A COMMENT K邻近算法 k NearestNeighbor 简称KNN 是分类算法中的一种 KNN通过计算新数据与历史样本数据中不同类别数据点间的距离对新数据进行分类 简单来说就是通过与