当前位置: 首页 > news >正文

机器学习中KNN算法介绍

一、核心思想

1.定义

        K - 近邻算法(K Nearest Neighbor,KNN)是一种基于实例的学习方法,通过样本的 “邻居” 来推断其类别,例如一个样本在特征空间中的 k 个最相似(距离最近)的样本中,大多数属于某一类别,则该样本也属于此类别。

        根据样本间的距离衡量相似性,距离越近则越相似。

2.分类与回归流程

        分类流程

                1.计算未知样本与所有训练样本的距离;

                2.按距离升序排列训练样本;

                3. 选取距离最近的 k 个样本;

                4.对这 k 个样本的类别进行多数表决,未知样本归属到出现次数最多的类别。  

        回归流程

                1.计算未知样本与所有训练样本的距离;

                2.按距离升序排列训练样本;

                3.选取距离最近的 k 个样本;

                4.计算k 个样本目标值的平均值;

                5.以此平均值作为未知样本的预测值。

3.K值选择

        若K值过小:模型复杂,易受异常点的影响,可能会照成过拟合

        若K值过大:模型简单,易受样本均值影响,可能会照成欠拟合

        极端情况:当K值等于训练样本总数时,会直接选取训练集中数量最多的那个而忽视了其他信息。

二:KNN算法API介绍

        1.分类API

                sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)

                参数n_neighbors:指定邻居数量(默认5)

                示例:通过简单数据集训练模型,预测新样本类别。

        2.回归API

                sklearn.neighbors.KNeighborsRegressor(n_neighbors=5)

                 功能:用于回归问题,预测连续值

                示例:通过多特征数据集训练,预测新样本的目标值。

        3.常见错误

                预测输入格式错误:如predict([1])应改为predict([[1]])(需要传入二维数组)

三、距离度量

        1.欧式距离

                定义:空间中两点的直线距离,是最常用的距离度量方式。

                二维空间:d12​=(x1​−x2​)2+(y1​−y2​)2​

                n维空间:d12​=∑k=1n​(x1k​−x2k​)2​

        2.曼哈顿距离

                别称:城市街区距离

                定义:两点在各维度上的绝对差值之和

                二维空间:d12​=∣x1​−x2​∣+∣y1​−y2​∣

                n维空间:d12​=∑k=1n​∣x1k​−x2k​∣

        3.切比雪夫距离

                定义:两点在各维度上绝对差值的最大值。

                二维空间:d12​=max(∣x1​−x2​∣,∣y1​−y2​∣)

                n维空间:d12​=max(∣x1k​−x2k​∣)

        4.闵可夫斯基距离

                定义:对多种距离的概括性表述,公式为d=(∑k=1n​∣x1k​−x2k​∣p)**1/p

                        当 p=1 时,为曼哈顿距离;

                        当p=2 时,为欧氏距离;

                        当 p→∞时,为切比雪夫距离。

四、特征预处理

        1.必要性

                当特征单位或大小差异大时,可能导致模型受某一特征支配,需通过预处理消除这种影响。      

        2.归一化

                定义:将数据映射到 [0,1](默认)或指定区间 [mi, mx]。

                        公式:x` = (x-min)/(max-min) ,x`` = x`*(max - min)+min

                API:sklearn.preprocessing.MinMaxScaler(feature_range=(0,1))

                缺点:受异常值的影响大,鲁棒性差,适合小数据场景

        3.标准化

                定义:将数据转换为均值为 0、标准差为 1 的标准正态分布数据。

                        公式:x` = (x-mean)/σ(mean 为均值,σ 为标准差) 

                API:sklearn.preprocessing.StandardScaler()

                优点:受异常值影响小,适合大数据场景。

        4.鸢尾花案例

                流程:获取数据集→划分训练集和测试集→标准化处理→训练 KNN 模型→评估准确率(如使用score函数或accuracy_score方法)→预测新样本。

五、超参数选择方法

        1.交叉验证

                定义:将训练集划分为 n 份,轮流用 1 份作为验证集、其余 n-1 份作为训练集,多次评估取平均值,提高模型评分的可信度。

                作用:更可靠地评估模型性能,减少数据划分带来的误差。

        2.网格搜索

                定义:自动尝试超参数的不同组合,结合交叉验证评估,选出最优参数组合。

                API:sklearn.model_selection.GridSearchCV(estimator,param_grid,cv)

                cv:交叉验证的折数。

                结果分析:通过best_score_(最优交叉验证得分)、best_estimator_(最优模型)等属性查看结果。

          3.手写数字案例

                数据:MNIST 数据集,包含 0-9 的手写数字图像(28×28 像素,784 个特征)。

                流程:加载数据→归一化(像素值缩放到 [0,1])→划分数据集→网格搜索调优超参数→训练模型→评估与预测。

六、KNN模型评估

        1.KNN的优缺点

                优点:简单易懂,无需训练过程,可处理多分类问题。

                缺点:计算复杂度高(需计算与所有样本的距离),对高维数据敏感(维度灾难)。

        2.特征预处理的选择

                标准化在大多数机器学习场景中更常用,因其对异常值更稳健;归一化适用于特征取值范围明确的场景。

        3.超参数调优的重要性

                K 值等超参数直接影响模型性能,交叉验证结合网格搜索是实用的调优手段,尤其适合小到中等规模的数据集。

http://www.dtcms.com/a/358261.html

相关文章:

  • 笔记共享平台|基于Java+vue的读书笔记共享平台系统(源码+数据库+文档)
  • 数据库原理及应用_数据库基础_第3章数据库编程_常用系统函数
  • 骑行商城怎么开发
  • 【金仓数据库产品体验官】KingbaseES-ORACLE兼容版快速体验
  • 国家统计局数据分析01——机器学习
  • GD32VW553-IOT 基于 vscode 的 bootloader 移植(基于Cmake)
  • 【DreamCamera2】相机应用修改成横屏后常见问题解决方案
  • 阿里云营业执照OCR接口的PHP实现与技术解析:从签名机制到企业级应用
  • LZ4 解压工具(WPF / .NET 8)说明书
  • Java Stream API并行流性能优化实践指南
  • 基于Kubernetes自定义调度器的资源隔离与性能优化实践指南
  • 从 0 到 1 构建零丢失 RabbitMQ 数据同步堡垒:第三方接口数据零丢失的终极方案
  • 人工智能学习:Python相关面试题
  • 人工智能学习:Linux相关面试题
  • 98、23种设计模式之代理模式(7/23)
  • spark.sparkContext.broadcast() 与 org.apache.spark.sql.functions.broadcast 的区别
  • 开源PPT生成智能体(Agent)全景透视:技术路线、代表项目与未来趋势
  • 鸿蒙ArkTS 核心篇-15-条件渲染(组件)
  • 三重积分的性质
  • [论文阅读] 人工智能 + 软件工程 | 从“法律条文”到“Gherkin脚本”:Claude与Llama谁更懂合规开发?
  • comfUI背后的技术——VAE
  • [创业之路-581]:如何驾驭不确定性和风险,并从中获利?
  • 什么是雪花算法
  • [Mysql数据库] 知识点总结7
  • 直播间整蛊玩法
  • 【一】Django框架版本介绍
  • 2025 批量下载hasmart所有知乎回答,文章和想法,导出txt,html和pdf
  • OSI与TCP/IP各层功能详解
  • 计算机毕设javayit商城 基于SSM框架的校园二手交易全流程管理系统设计与实现 Java+MySQL的校园二手商品交易与供需对接平台开发
  • java字节码增强,安全问题?