matlab knn方法快速实现,手把手教学

news2024/12/25 2:38:21

目录

  • 介绍
  • 话不多说,进入实战
  • 注意事项
  • KNN算法的优势和劣势

介绍

1968年,Cover和Hart提出K近邻算法。该算法既可以用于回归也可以用于分类,其用于分类时其输入为实例的特征向量,输出为实例的类别。假设给定一个训练数据集,其中实例类别已知。度量每个样本点到其他样本点的距离,选择其中K个距离最近的样本点,按照多数表决原则对新的实例进行分类。

KNN的全称是K Nearest Neighbors,意思是K个最近的邻居,从这个名字我们就能看出一些KNN算法的蛛丝马迹了。K个最近邻居,毫无疑问,K的取值肯定是至关重要的。那么最近的邻居又是怎么回事呢?其实啊,KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。

我们知道K的取值比较重要,那么该如何确定K取多少值好呢?答案是通过交叉验证(将样本数据按照一定比例,拆分出训练用的数据和验证用的数据,比如6:4拆分出部分训练数据和验证数据),从选取一个较小的K值开始,不断增加K的值,然后计算验证集合的方差,最终找到一个比较合适的K值。

话不多说,进入实战

  • knn的matlab实验【使用UCI数据集】

首先加载数据

load fisheriris
X = meas;
Y = species;

之后直接上内置函数

mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1);

这样就获得了KNN模型

下一步,就可以直接使用了

Xnew = [min(X);mean(X);max(X)];
[label,score,cost] = predict(mdl,Xnew)

这样便得到了结果

在这里插入图片描述

注意事项

训练和测试之前需要对数据标准化、归一化处理,不然可能结果无法达到预期。

KNN算法的优势和劣势

了解KNN算法的优势和劣势,可以帮助我们在选择学习算法的时候做出更加明智的决定。那我们就来看看KNN算法都有哪些优势以及其缺陷所在!

  1. KNN算法优点

简单易用,相比其他算法,KNN算是比较简洁明了的算法。即使没有很高的数学基础也能搞清楚它的原理。

模型训练时间快,上面说到KNN算法是惰性的,这里也就不再过多讲述。
预测效果好。

对异常值不敏感这里是引用

  1. KNN算法缺点

对内存要求较高,因为该算法存储了所有训练数据

预测阶段可能很慢

对不相关的功能和数据规模敏感

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

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

相关文章

PsiQuantum宣布在容错量子计算架构方面取得新突破

(图片来源:网络) 12月2日,PsiQuantum宣布了一项突破性技术,该技术将使编译应用程序在运行时效率提高约50倍。可以更有效地实现容错量子计算。 该技术专门针对容错量子计算机的算法,而不是非容错的NISQ系统。…

linux倒序查看占用cpu或内存最多的进程

一、获取当前系统占用CPU最高的前10个进程 命令:ps aux|head -1;ps aux|sort -rn -k3|head -10 该命令组合由2条独立的命令组成: ps aux|head -1:这一句是为了获取标题(USER PID %CPU %MEN VSZ RSS TTY STAT START TIME COMMAND…

儿童学生护眼台灯哪个牌子好?双十二儿童护眼台灯精选

我国儿童以及青少年的近视人数迅速增加,主要是不注意用眼时间,不良好的照明光线,拥有一个明亮舒适的光线环境,能大大减少近视概率,推荐合适的儿童护眼台灯给大家。 TOP1:南卡护眼台灯L1 推荐指数&#xf…

每天一个面试题:ThreadLocal底层原理和实现Demo(12.6.2022)

ThreadLocal底层原理和实现Demo每天一个面试题:ThreadLocal实现ThreadLocal的DemoThreadLocal底层原理为什么ThreadLocalMap的key设计为弱引用今天开始一个新专栏:每天一个面试题系列 也没有拿到令人心动的offer,看来自己学习方式和能力还是差…

霸榜!这本《程序员如何向架构师转型》在Github已持续置顶两月

前言 企业架构在过去十年中取得了长足的进步。随着越来越多新技术出现,充分利用这些因素来将企业架构创建得更好十分重要。通过将新技术集成到企业架构中,即使在困难时期,也能取得丰硕的成果。现代企业架构师的 5 个特征: 1. IT…

PyQt利用QScrollArea+QGridLayout制作一个滑动的Grid布局(QT Designer)

目录前言制作ui文件推送结语前言 有需求需要做一个滑动的Grid布局结构,网上找了很多的文章都是介绍直接用代码去生成的,没有看到用QT Designer做好后再怎么处理,这里研究了一下,以作记录和参考 制作ui文件 新建一个MainWindow 我…

本周推荐 | 基于 canvas 实现 H5 丝滑看图体验

推荐语:随着机器算力及性能的提升,基于原生Web体系的富交互体验也可以媲美原生,本文作者通过Canvas Web手势从零实现了大图浏览的交互效果,并在体验上不输Native,是一次不错的技术尝试,欢迎阅读。——大淘…

家庭宽带相关知识及工具

1.FTTH、FTTR、FTTB FTTH,光纤到户,需要用到光猫,目前主流,最高到千兆(1G),局域网内为网线(超五类、六类等)连接。 FTTR,光纤到房间,或者说是光纤到终端,全光网,最高到万…

技术分享| 音视频与微信小程序互通实践

随着网络架构的变迁、媒体技术发展、音视频场景迭代&#xff0c;基于流媒体的技术也是推陈出新。WebRTC渐渐的成为了音视频互动场景的主流&#xff0c;而微信在6.5.21版本通过小程序开放了实时音视频能力&#xff0c;开发者们可以使用组件 < live-pusher > 实现基于 RTMP…

计讯物联数字乡村解决方案全力助推三农信息化建设

​2020年&#xff0c;中央网信办等七部门联合印发《关于开展国家数字乡村试点工作的通知》。《通知》提出&#xff0c;做好数字乡村发展整体规划设计&#xff0c;统筹推进乡村的新型基础设施、数字经济、数字农业农村、农村科技创新、乡村数字治理、信息惠民服务等建设和发展。…

类的加载过程(类的生命周期)详解

类的加载过程&#xff08;类的生命周期&#xff09;详解 1. 概述 在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义&#xff0c;引用数据类型则需要进行类的加载。 按照Java虚拟机规范&#xff0c;从class文件到加载到内存中的类&#xff0c;到…

python全局和局部变量以及引用和装饰器

学习笔记 bilibili千峰python global关键字的添加 只有不可变的类型才需要添加global可变的类型不需要添加global不可变类型&#xff1a;当改变变量的值时候&#xff0c;地址发生了改变 类型&#xff1a;int&#xff0c;str&#xff0c;float&#xff0c;bool&#xff0c;tup…

[Spring Boot 6]企业级开发

本节内容主要就几个常用的模块进行解读&#xff0c;在众多企业级开发中常常用得到。 例如邮件发送这一功能其实非常常见&#xff0c;在一般的网站设计中会有对注册邮件的激活功能&#xff0c;此时就需要用到这个功能了&#xff0c;一般来说激活邮件需要设置UUID 来进行验证&…

【Python入门】Python入门必备思维导图,有方向的学习才是最实在的方法

前言 halo&#xff0c;包子们下午好 这篇文章主要是跟大家聊聊我们学习Python该怎么去学习 小编个人认为&#xff0c;学习Python一定要有一个好的学习方向&#xff0c;这样才知道自己该往什么方向去学习 今天小编主要给大家准备了我们学习Python的必备14张思维导图 赶快收藏起…

【SSM整合】SpringMVC + Spring + Mybatis整合详细教程

前言 本文为 SpringMVC Spring Mybatis整合教程 相关详细介绍&#xff0c;从数据库数据准备、相关依赖包添加、创建项目基本结构和配置框架&#xff0c;到Mybatis层的编写、Spring层的编写、SpringMVC层的编写&#xff0c;再到前端页面编写等&#xff0c;最后进行运行与测试&…

新生报到小程序毕业设计,新生报到管理系统设计与实现,毕设作品参考

功能清单 【后台管理员功能】 广告管理&#xff1a;设置小程序首页轮播图广告和链接 留言列表&#xff1a;所有用户留言信息列表&#xff0c;支持删除 录入资讯&#xff1a;录入资讯标题、内容等信息 管理资讯&#xff1a;查看已录入资讯列表&#xff0c;支持删除和修改 学校…

MySQL——表的约束

文章目录表的约束空属性默认值列描述zerofill主键&#x1f60a;自增长唯一键&#x1f60a;外键&#x1f60a;表的约束 真正约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xff0c;需要有一些额外的约束&#xff0c;更好的保证数据的合法性&#xff0c;从业务逻辑…

前端给数字添加横线贯穿

效果 实现方法 1、给这个数字添加css属性&#xff1a;text-decoration: line-through; 2、给这个数字添加标签&#xff1a;del。如&#xff1a;<del>9999</del>。 text-decoration详解&#xff1a; text-decoration : none || underline || blink || overline |…

使用RMI实现RPC

1 RMI简介 RMI(Remote Method Invocation) 远程方法调用。 RMI是从JDK1.2推出的功能&#xff0c;它可以实现在一个Java应用中可以像调用本地方法一样调用另一个服务器中Java应用&#xff08;JVM&#xff09;中的内容。 RMI 是Java语言的远程调用&#xff0c;无法实现跨语言。…

LVGL自定义组件__页面指示器

前言 LVGL对硬件的要求非常低&#xff0c;使用其自带的组件能够搭建出精美的界面&#xff0c;动效也很棒。但是如过移植到Linux平台下&#xff0c;开发稍微复杂的应用项目&#xff0c;那些组件就远远不够用了。为此需要自己自定义一些组件&#xff0c;以方便实用。 效果 为此…