机器学习模型之K近邻

news/2024/6/16 11:36:33/文章来源:https://blog.csdn.net/a2313179618/article/details/137294917

K近邻(K-Nearest Neighbors,KNN)是一种基本的机器学习算法,它既可以用于分类问题,也可以用于回归问题。KNN算法的核心思想非常简单:一个新样本的分类或回归值取决于它与训练集中最相似的K个样本的多数类别或平均值。

KNN的基本步骤:

  1. 选择邻居的数量K

    • K是KNN算法中的超参数,表示在预测新样本时考虑的最近邻居的数量。
    • K值的选择对模型的性能有很大影响。通常,K值太小会导致模型对噪声敏感,而K值太大则可能导致模型对训练数据的泛化能力不足。
  2. 计算距离

    • 对于一个新的输入样本,KNN算法会计算它与训练集中每个样本的距离。
    • 常用的距离度量方法包括欧氏距离、曼哈顿距离和汉明距离等。
  3. 选择最近的K个邻居

    • 根据计算出的距离,选择与新样本最近的K个训练样本作为邻居。
  4. 进行预测

    • 对于分类问题,新样本的类别通常是K个邻居中多数样本的类别。
    • 对于回归问题,新样本的预测值通常是K个邻居的输出值的平均值。

KNN的特点:

  • 简单直观:KNN算法的概念非常简单,易于理解。
  • 无需训练:KNN是一种懒惰学习(lazy learning)算法,它在训练阶段只是存储了训练数据,直到进行预测时才进行计算。
  • 非线性决策边界:KNN能够生成非常复杂的决策边界,因为它考虑了训练数据中所有样本的信息。

KNN的局限性:

  • 计算成本高:由于KNN在预测时需要计算新样本与所有训练样本的距离,因此它的计算成本很高,尤其是在大规模数据集上。
  • 对噪声敏感:如果训练数据中存在噪声,KNN算法可能会受到影响,因为它依赖于训练样本的局部信息。
  • 维数灾难:随着特征数量的增加,KNN算法的性能可能会下降,因为距离计算在高维空间中变得不那么直观和有效。

KNN的应用:

KNN算法由于其简单性和在特定情况下的有效性,被广泛应用于各种领域,包括文本分类、图像识别、推荐系统等。然而,在实际应用中,通常需要考虑数据的预处理、距离度量的选择、K值的选择等问题,以提高模型的性能。

KNN的python实现:

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建KNN分类器模型
knn_model = KNeighborsClassifier(n_neighbors=3)# 在训练集上训练模型
knn_model.fit(X_train, y_train)# 在测试集上进行预测
y_pred = knn_model.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

在这段代码中,首先加载了鸢尾花数据集,并将数据集划分为训练集和测试集。然后创建了一个K近邻(K-Nearest Neighbors,KNN)分类器模型,设置K值为3。接着在训练集上进行训练,最后使用训练好的模型在测试集上进行预测,并计算准确率作为模型性能的评估指标。

在实际应用中,可以根据具体的数据集和问题选择不同的K值、距离度量方式(如欧氏距离、曼哈顿距离等)以及调整其他参数来优化KNN模型的性能。

总的来说,KNN算法是一种直观且易于理解的机器学习算法,适用于小型数据集和简单问题的分类和回归任务。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SpringCloud】认识微服务

目 录 一.服务架构演变单体架构分布式架构服务治理微服务总结 二.微服务技术对比微服务结构微服务技术对比企业需求 三.SpringCloud 一.服务架构演变 单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。 优点: 架…

Linux系统使用Docker部署Jupyter Notebook结合内网穿透实现公网访问本地笔记

文章目录 1. 选择与拉取镜像2. 创建容器3. 访问Jupyter工作台4. 远程访问Jupyter工作台4.1 内网穿透工具安装4.2 创建远程连接公网地址4.3 使用固定二级子域名地址远程访问 本文主要介绍如何在Ubuntu系统中使用Docker本地部署Jupyter Notebook,并结合cpolar内网穿透…

docker搭建CI/CD环境配置过程中的常见问题

一、Jenkins 1、pull镜像问题 docker pull jenkins/jenkins:lts Using default tag: latest Trying to pull repository docker.io/library/centos ... Get https://registry-1.docker.io/v2/library/centos/manifests/latest: Get https://auth.docker.io/token?scoperepo…

以柔克刚,以静制动,以弱胜强 举几个生活中通俗易懂的经典案例,说明这些伟大的智慧的精妙之处 省力的竞争策略

简单易懂 很神奇 省力的竞争策略 以柔克刚 案例:柔道运动。柔道是一种利用对手力量的武术,它教导人们如何将对手的力量转化为自己的优势。柔道中的摔法、招式都是以柔克刚的体现,通过巧妙引导而非硬碰硬的对抗,使得体型较小的选…

Open3D(C++) 基于随机抽样与特征值法的点云平面稳健拟合方法

目录 一、算法原理1、论文概述2、参考文献二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的GPT爬虫。 一、算法原理 1、论文概述 针对点云数据含有异常值且传统拟合方法拟合结果不理想的情…

城市治理/县域治理方案:构建基于AI视频能力的“一张网”,助力新型城市发展

TSINGSEE青犀AI算法中台是一款平台型产品,专注于提供各行业中小场景部署解决方案。平台具备接入广、性能强、支持跨平台、芯片国产化等特点,可提供丰富的视图接入能力和智能分析能力。 平台采用了多项IT高新技术,包括视频编解码技术、嵌入式…

linux删除 buff/cache缓存

1.查看当前内存占用 free -h如图,缓存占用了将近9G,接下来进行清理 释放页缓存 echo 1 > /proc/sys/vm/drop_caches释放dentries和inodes echo 2 > /proc/sys/vm/drop_caches释放所有缓存 echo 3 > /proc/sys/vm/drop_caches再次查看&#…

Linux:TCP的流量控制/滑动窗口/延迟应答

文章目录 流量控制滑动窗口延迟应答 本篇要总结的是对于TCP的一些其他概念进行总结 流量控制 接收端处理数据的速度是有限的. 如果发送端发的太快, 导致接收端的缓冲区被打满, 这个时候如果发送端继续发送,就会造成丢包, 继而引起丢包重传等等一系列连锁反应 因此TCP支持根据…

如何在比特币上验证ZK Proofs

1. 引言 前序博客有: 基于BitVM的乐观 BTC bridgeBitVM:Bitcoin的链下合约Bitcoin Bridge:治愈还是诅咒?BitVM2:比特币上的无需许可验证以比特币脚本来实现SNARK VerifierClementine:Citrea的基于BitVM的…

element-ui tableData导出为xlsx文件

下载 npm i / yarn add file-saver、xlsx库 引入 import FileSaver from “file-saver”; import XLSX from “xlsx”; const simexport (data) > {// if (data.create_time && data.create_time.length > 0) {// data.start_time parseTime(data.create_tim…

JDK,JRE,JVM 区别和联系【大白话Java面试题】

JDK,JRE,JVM 区别和联系 大白话回答: JDK是开发环境一般开发人员需要,包含开发环境(JDK)和运行环境(JRE),JRE是运行环境,普通用户需要。jre文件夹下的bin文件夹就是JVM的…

搭建电商网站外贸网站用API接口可以实现哪些功能(天猫API接口|京东API接口)

在电商领域,API接口可以实现多种功能,起到连接内外部系统及优化电商业务流程等多种作用,从而来提高电商企业的运营效率。 具体来看,API接口接入可以用来: 商品管理: API接口能够用来获取商品详情等&#…

【原创】基于springboot+vue的会议室预约管理系统

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

AI音乐GPT时刻来临:Suno 快速入门手册!

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

【Go】七、包、init函数、匿名函数、闭包

文章目录 1、包2、本质3、init函数4、匿名函数5、闭包 1、包 不同的包,不同的功能和业务,互相import 关于包: package 包名注意点: 建议包名和所在文件夹同名 main函数一定要放在main包下,否则编译报错 go run&a…

如何划分训练集、测试集、验证集

训练集、测试集和验证集是在机器学习和数据科学中常用的术语,用于评估和验证模型的性能。它们通常用于监督学习任务中。 1. 训练集(Training Set):训练集是用于训练机器学习模型的数据集。在训练期间,模型使用训练集中…

若依框架mysql 搜索中文等于不生效

背景&#xff0c;字段存储的是中文 不生效代码如下 <if test"constellation ! null and constellation ! ">AND u.constellation #{constellation}</if> 正确生效的代码如下 <if test"constellation ! null and constellation ! ">A…

瑞吉外卖实战学习--8、人员禁用和启用

前言 1、通过前端页面查看接口 会发现请求方式是put 请求接口是employee 2、检查页面传值 根据浏览器的请求可以看到传值为id和status 2、写put请求&#xff0c;添加修改时间和修改人的id然后传回给后台 /*** 启用和禁用员工账号* param request* param employee* return…

【面试HOT200】数组篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试coding部分的&#xff0c;整理期间苛求每个算法题目&#xff0c;平衡可读性与代码性能&#xff08;leetcode运行复杂度均打败80%以上&#xff09;。 &#x1f970;来源&#xff1a;材料主要源于…

对【AI技术创业】有哪些机会进行分析和引导

文章目录 方向一&#xff1a;行业解决方案,以下是一些常见的行业解决方案&#xff1a;方向二&#xff1a;智能产品和服务,以下是一些智能产品和服务的示例&#xff1a;方向三&#xff1a;教育和培训 1.智能客户服务&#xff1a; 利用自然语言处理&#xff08;NLP&#xff09;和…