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

机器学习之 KNN 算法学习总结

一、学习内容

今天的学习围绕机器学习中的 K 近邻算法(KNN)展开,通过理论讲解、案例分析和实践操作,系统掌握了 KNN 算法的原理、应用及实现过程。学习内容涵盖 KNN 算法的核心思想、距离度量方法、模型训练与评估流程,并结合电影分类、鸢尾花分类等实例进行了深入理解。

二、核心知识点梳理

(一)K 近邻算法(KNN)基础

  1. 算法定义:K 近邻算法(k-Nearest Neighbor)是一种基于实例的监督学习算法,核心思想是每个样本可以用其最接近的 K 个邻近值来代表。
  2. 核心原理:对于输入的无标签新数据,通过与样本集中数据的特征比较,提取最相似的 K 个数据的分类标签,最终选择这 K 个数据中出现次数最多的分类作为新数据的分类。
  3. 算法步骤
    • 计算已知类别数据集与当前点之间的距离
    • 按照距离递增次序排序
    • 选取与当前点距离最小的 K 个点
    • 确定前 K 个点所在类别的出现频率
    • 返回前 K 个点出现频率最高的类别作为当前点的预测分类

(二)距离度量方法

  1. 欧式距离:最常见的距离度量方式,衡量多维空间中两个点之间的绝对距离。
    • 二维空间公式:d=(x1​−x2​)2+(y1​−y2​)2​
    • 三维空间公式:d=(x1​−x2​)2+(y1​−y2​)2+(z1​−z2​)2​
    • n 维空间公式:d=∑i=1n​(xi​−yi​)2​
  2. 曼哈顿距离:由赫尔曼・闵可夫斯基提出,指两个点在标准坐标系上的绝对轴距总和。平面上两点(x1​,y1​)与(x2​,y2​)的曼哈顿距离公式为:d(i,j)=∣x1​−x2​∣+∣y1​−y2​∣

(三)K 值的选择

  • K 值是 KNN 算法的关键超参数,一般不大于 20。
  • K 值的选择会影响模型结果:K=3 时可能将新样本判定为某一类别,K=5 时可能因纳入更多邻近点而判定为另一类别。
  • 可通过交叉验证的方式选择最优 K 值,计算不同 K 值对应的错误率,选取错误率最小的 K 值作为最优参数。

三、实践案例

(一)电影分类案例

  1. 问题背景:根据电影中打斗镜头和接吻镜头的数量,判断电影属于爱情片还是动作片。已知部分电影的类别及特征数据,需确定未知电影(打斗镜头 18 次,接吻镜头 90 次)的类型。
  2. 数据示例
    • 爱情片:California Man(打斗 3 次,接吻 104 次)、He's Not Really into Dudes(打斗 2 次,接吻 100 次)等
    • 动作片:Kevin Longblade(打斗 101 次,接吻 5 次)、Robo Slayer 3000(打斗 99 次,接吻 2 次)等
  3. 解决思路:通过计算未知电影与已知电影的距离(如欧式距离或曼哈顿距离),选取 K 个最近邻的电影类别,根据多数类判断未知电影类型。

(二)鸢尾花分类案例

  1. 数据集介绍:鸢尾花数据集包含 3 个类别(Iris Versicolor、Iris Setosa、Iris Virginica),每个样本有 4 个特征(sepal length、sepal width、petal length、petal width)。
  2. 实现步骤
    • 加载数据集:iris = datasets.load_iris()
    • 查看数据信息:通过iris.target(分类标签)、iris.feature_names(特征名称)、iris.target_names(类别名称)了解数据
    • 划分训练集和测试集:x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)
    • 创建并训练模型:knn = KNeighborsClassifier(n_neighbors=5, metric="euclidean")knn.fit(x_train, y_train)
    • 模型评估:通过knn.score(x_train, y_train)knn.score(x_test, y_test)分别获取训练集和测试集得分
    • 预测结果:y_pred = knn.predict(x_test)

  我还自己尝试了一个水果测试的数据集

四、学习收获与总结

  1. 知识掌握:深入理解了 KNN 算法的原理和实现流程,掌握了欧式距离、曼哈顿距离等距离度量方法,学会了使用交叉验证选择最优 K 值,能够运用 sklearn 库实现基于 KNN 的分类任务。
  2. 实践能力:通过电影分类和鸢尾花分类案例,提升了将理论知识应用于实际问题的能力,熟悉了数据集加载、划分、模型训练、评估和预测的完整流程。
  3. 算法特点认知:认识到 KNN 算法是一种 “惰性学习” 算法,不需要预先训练模型,而是在预测时进行计算,其性能受 K 值和距离度量方式影响较大,在实际应用中需合理选择参数。

通过今天的学习,我不仅掌握了 KNN 算法的相关知识,也为后续学习其他机器学习算法奠定了基础,同时深刻体会到理论与实践结合的重要性。在今后的学习中,将进一步探索 KNN 算法的优化方法及在更多领域的应用。

http://www.lryc.cn/news/622077.html

相关文章:

  • YTHDC1介导MAFF核输出减轻肝细胞缺血再灌注氧化应激损伤
  • exec函数族、线程
  • 新手入门Makefile:FPGA项目实战教程(二)
  • 【计算机视觉与深度学习实战】02基于形态学的权重自适应图像去噪系统
  • 大模型 + 垂直场景:搜索 / 推荐 / 营销 / 客服领域开发有哪些新玩法?
  • 短剧小程序系统开发:打造个性化娱乐新体验
  • Apache 如何支持SHTML(SSI)的配置方法
  • 告别手动优化!React Compiler 自动记忆化技术深度解析
  • Docker部署Spring Cloud微服务实战
  • vue一个超简单的菜单栏伸缩示例
  • 剧本杀小程序系统开发:重构推理娱乐生态
  • C语言第八章指针五
  • linux服务器查看某个服务启动,运行的时间
  • Chrome插件开发
  • 最长递增子序列-dp问题+二分优化
  • 智能巡检技术浅析
  • 最新chrome浏览器elasticsearch-head无法安装使用问题
  • 牛市暴跌后什么时候进入好
  • C++ 调试报错 常量中有换行符
  • NAS播放器的新星,一站式全平台媒体库管理工具『Cinemore』体验
  • 高通vendor app访问文件
  • 前端css学习笔记6:盒子模型
  • IP生意的天花板更高了吗?
  • 多路混音声音播放芯片型号推荐
  • Microsoft Visual Studio常用快捷键和Windows系统常用快捷键的整理
  • 深入解析五大通信协议:TCP、UDP、HTTP_HTTPS、WebSocket与GRPC
  • 【Leetcode hot 100】53.最大子数组和
  • 异步任务执行顺序
  • DataGear:一个免费开源的国产数据可视化分析平台
  • 经典BT的连接过程