Python 机器学习入门之K近邻算法

news2024/11/20 13:42:54

系列文章目录

第一章 Python 机器学习入门之线性回归
第一章 Python 机器学习入门之梯度下降法
第一章 Python 机器学习入门之牛顿法
第二章 Python 机器学习入门之逻辑回归
番外 Python 机器学习入门之K近邻算法

K近邻算法

  • 系列文章目录
  • 前言
  • 一、K近邻算法简介
    • 1、定义
    • 2、用途
  • 二、K近邻应用
    • 1、问题
    • 2、过程
  • 三、k近邻算法详解
    • 1、三要素
      • 1.1 k值选择
      • 2.2 距离度量的方式
    • 2、维数诅咒
  • 四、优缺点

前言

之前看逻辑回归看的脑壳大,于是跑来看看机器学习中号称最简单的算法之一K近邻算法
在这里插入图片描述

一、K近邻算法简介

1、定义

百科定义:
所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中;

简单来说,就像我们常说的“近朱者赤,近墨者黑”,如果我们不知道一个人的品性,那不妨看看他身边的人的品性,大抵也就能看出来了,这也是K近邻的核心思想,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别;

2、用途

k近邻可用于回归和分类,在回归问题中通常是得出最近的k个实例的标记值,然后取这k个实例标记值的平均数或中位数,分类问题就不多说了。

二、K近邻应用

这么说可能只有一个概念,我们接下来举个例子来看看它的详细过程

1、问题

作为一名研究生,你如何判断他是否能拿到奖学金呢,我们舍弃掉大部分极端情况,只考虑他在外学习时间和宿舍游戏时间,一般来说在外学习时间越长,拿到奖学金的概率就越大,宿舍游戏时间越长,拿到奖学金概率就越低;

我们使用游戏时间作为x轴,学习时间作为y轴,红色的代表拿到奖学金,绿色的代表没拿到奖学金,学习时间远超过游戏时间的可以视作拿到奖学金,而对于学习时间与游戏时间相近的情况,我们不好判断了,此时就可以使用K近邻算法了;
在这里插入图片描述

2、过程

1.假设将图中每位研究生视作一个点,就如上图标记的一样;
2.计算未知点到图中每一个点的欧几里得距离;
3.假设k=4,选取距离未知点最近的4位同学;
4.比较这四位同学中拿到还是未拿到奖学金的数量,如果拿到的同学多,未知点马同学拿到奖学金,如果未拿到的同学多,未知点马同学未拿到奖学金;如果相等,重新选择k值直至确定未知点的状态。

三、k近邻算法详解

1、三要素

k近邻算法的三个基本要素分别是K值的选择、距离度量的方式和分类决策的规则

1.1 k值选择

k值的选择可以说是k近邻最重要的要素了,因为它没有一个固定的选择,在不同的问题我们要找到拟合度最合适的情况,也就是我们经常说的调参(调参侠狂喜.jpg);
但是K值即参数的选择异常重要,如果如果k值取的越大,则离未来新样本的实例会越来越多,即较远的实例也会对结果造成影响,从而使得模型欠拟合,但是模型会变得简单;反之只有较少的实例会对结果造成影响,模型会变得复杂,同时会使得模型容易发生过拟合现象;通常K值一般小于20

2.2 距离度量的方式

通常有多种方式可选择,包括欧几里得距离,曼哈顿距离和闵可夫斯基距离,常用的还是欧几里得距离; 假设n维空间中有两个点xi和xj,下面是具体的公式;在这里插入图片描述

欧几里得距离
在这里插入图片描述
曼哈顿距离
在这里插入图片描述
闵可夫斯基距离
在这里插入图片描述

2、维数诅咒

KNN在高维空间运行会出现”维度诅咒”的问题,因为在高维空间太广阔,通过距离度量的方式可以发现即使是最近的邻居在高维空间的距离也很远,以至于很难估计样本之间的距离;
一般情况下可以使用特征选择和降维等方法避免维数诅咒。

四、优缺点

优点:
1.思想简单
2.可用于非线性分类
3.基于实例学习,对数据没有假设,不需要通过模型训练获得参数

缺点:
1.计算量大,空间复杂度高
2.容易被样本影响,一旦样本某特征值影响力过高会导致其他影响力小的特征值失效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity引擎核心-Object,序列化,资产管理,内存管理】

文章目录 整体介绍Native & Managed Objects什么是序列化序列化用来做什么Editor和运行时序列化的区别脚本序列化针对序列化的使用建议 Unity资产管理导入Asset Process为何要做引擎资源文件导入Main-Assets和 Sub-Assets资产的导入管线Hook,AssetPostprocessor…

对协议的基本认识

目录 前言 TCP网络计算器的模拟实现 制定协议 协议protocol的整体代码 TCP网络计算器的服务端类TcpServer TcpServer类的整体代码 TCP网络计算器的服务端 服务端CalServer.cc的整体代码 TCP网络计算器的客户端 客户端CalClient.cc的整体代码 对模拟实现的TCP网络计算…

匿名内部类的使用:(一看就会!!!)

知识点: 匿名内部类依旧是一个类,但是没有名字,同时还是一个对象;再类的内部; 使用方法指南: 先创建一个类,可以是接口、抽象类、普通父类需要明确声明关系 ,父与子、实现接口、抽…

不容易解的题10.15

395.至少有K个重复字符的最长字串 395. 至少有 K 个重复字符的最长子串 - 力扣(LeetCode)https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/description/?envTypelist&envIdZCa7r67M自认为是不好做的题。尤其…

自动化的采集链接和自动推送必应的在线工具

搜索LMCJL在线工具 进入后点击站长工具类型,选择必应自动推送 进去后,添加域名,点击数据管理,输入必应的token 然后开启推送,就可以实现,自动化采集链接,自动推送给必应。 必应的站长后台官网…

基于吉萨金字塔建造优化的BP神经网络(分类应用) - 附代码

基于吉萨金字塔建造优化的BP神经网络(分类应用) - 附代码 文章目录 基于吉萨金字塔建造优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.吉萨金字塔建造优化BP神经网络3.1 BP神经网络参数设置3.2 吉萨金字…

16.SpringBoot前后端分离项目之简要配置一

SpringBoot前后端分离项目之简要配置一 前面对后端所需操作及前端页面进行了了解及操作,这一节开始前后端分离之简要配置 为什么要前后端分离 为了更低成本、更高效率的开发模式。 前端有一个独立的服务器。 后端有一个独立的服务器。两个服务器之间实时数据交换…

关于YOLOv8不显示GFlops的问题解决

屏幕显示GFlops需要安装此pip库: thop。但是没有安装,则不显示,导致debug比较困难。

Linux:进程调度的O(1)算法

文章目录 并发的理解程序运行时的数据进程切换的过程 内核的调度队列和调度原理 并发的理解 前面总结到了,关于并发的概念,并发针对的是单核的CPU上同时运行很多情况,并不是某个程序在CPU上运行就一直运行,而是根据一定的时间片和…

Linux C/C++ 嗅探数据包并显示流量统计信息

嗅探数据包并显示流量统计信息是网络分析中的一种重要技术,常用于网络故障诊断、网络安全监控等方面。具体来说,嗅探器是一种可以捕获网络上传输的数据包,并将其展示给分析人员的软件工具。在嗅探器中,使用pcap库是一种常见的方法…

怎么启动MySQL服务

你可能也遇到这样的问题,打开navicat,但是点击数据库连接不上,这就有可能是数据库服务没有启。报错如下图所示 解决方法一win11为例,右键此电脑,找到管理。 找到服务和应用吃程序,点击服务。 往下找到MySQL…

ti am335 RT-LINUX测试

RT-Linux是一个基于Linux内核的实时操作系统,它在满足Linux操作系统的通用性的同时兼顾 实时性能,它的核心是Linux内核的一个实时扩展,它为实时任务提供了必要的调度机制和时间管理。通过采用抢占式调度策略,高优先级的实时任务可…

肉眼无法读懂是二进制独有的浪漫——一篇博客学懂文件操作(C语言)

目录 一、为什么使用文件 二、什么是文件 2.1程序文件 2.2数据文件 2.3文本文件和二进制文件 2.4文件名 三、文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 3.3文件的顺序读写函数 3.3.1流的概念 3.3.2输入输出的概念 3.3.3函数操作 3.4文件的随机读写函…

miniblink学习

1.基本使用 main.cpp #include "webwidget.h" #include <QApplication> #include "wke.h" //工作目录是指当前目录&#xff0c;运行目录是指exe所在路径。 int main(int argc, char *argv[]) {QApplication a(argc, argv);//设置miniblink的全路径文…

C# GFPGAN 图像修复

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace 图像修复 {pu…

leetcode-62.不同路径

1. 题目 2. 解答 dp[i][j]表示机器人位于第i&#xff0c;j位置的时候&#xff0c;有多少路径 如果i 0&#xff0c;dp[i][j] 1;如果j 0&#xff0c;dp[i][j] 1;其他情况dp[i][j] dp[i-1][j] dp[i][j - 1] #include <stdio.h>int solve(int m, int n) {int dp[m][…

一场直播脚本的策划及话术怎么写?

一场直播脚本的策划及话术参考 直播流程安排示范:120 分钟直播流程设计(过款型) 标准化直播话术单元(单款产品话术模板) I 直播 120 分钟标准化流程 I 分解为 4 个 30 分钟直播单元 I 30 分钟前期介绍 2-3 个款作为起步 每款持续时长 10 分钟,10 分钟的时间里 ①卖点引出 2 …

找不到msvcp100.dll无法继续执行此代码怎么解决,快速修复dll问题的5个方法

电脑已经成为我们生活和工作中不可或缺的一部分&#xff0c;在我们使用电脑的时候&#xff0c;总会遇到一些技术问题&#xff0c;其中之一就是“找不到msvcp100.dll”。msvcp100.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2010 Redistributable Package的一部…

G.711语音编解码器详解

语音编解码利用人听觉上的冗余对语音信息进行压缩从而达到节省带宽的目的。值得注意的是,本文说的是语音编解码器,也就Speech codec,而常用的还有另一种编解码器称作音频编解码器,英文是Audio codec,它们的区别如下。 以前在学校的时候研究了很多VoIP的编解码器从G.723到A…

java.sql.SQLFeatureNotSupportedException解决方法

使用MyBatis访问数据库查询数据时报错&#xff1a; Caused by: java.sql.SQLFeatureNotSupportedExceptionat com.alibaba.druid.pool.DruidPooledResultSet.getObject(DruidPooledResultSet.java:1771)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun…