matlab knn实现,Matlab之KNN实现

1.     算法流程

1)      通过Matlab产生高斯分布产生两类数据,并标明类别

2)      数据初始化:设置K=某个常数(一般为奇数)

3)      对于每个测试数据,

计算其到两类数据的所有点的距离

对于上述求得的距离,选出K个最小的,

检测这选出的K个值中属于类别1和类别2的个数

If Cnt1>Cnt2

属于类别1;

Else

属于类别2;

2、实验代码:

clear all;

close all;

clc;

%%第一个类数据和标号

mu1=[0 0];  %均值

S1=[0.3 0;0 0.35];  %协方差

data1=mvnrnd(mu1,S1,100);   %产生高斯分布数据

plot(data1(:,1),data1(:,2),'+');

label1=ones(100,1); %产生100行1列的单位矩阵

hold on;

%%第二个类数据和标号

mu2=[1.25 1.25];

S2=[0.3 0;0 0.35];

data2=mvnrnd(mu2,S2,100);

plot(data2(:,1),data2(:,2),'ro');

label2=label1+1; %产生100行1列的全为2的矩阵

data=[data1;data2];%数据合并

label=[label1;label2];

grid on;

K=11;   %两个类,K取奇数才能够区分测试数据属于那个类

%测试数据,KNN算法看这个数属于哪个类

for ii=-3:0.1:3

for jj=-3:0.1:3

test_data=[ii jj];  %测试数据

label=[label1;label2];

%%下面开始KNN算法,显然这里是11NN。

%求测试数据和类中每个数据的距离,欧式距离(或马氏距离)

distance=zeros(200,1); %产生200行1列的零矩阵

for i=1:200

distance(i)=sqrt((test_data(1)-data(i,1)).^2+(test_data(2)-data(i,2)).^2); %(xi-X)2+(yj-Y)2

end

%选择排序法,只找出最小的前K个数据,对数据和标号都进行排序

for i=1:K

ma=distance(i);

for j=i+1:200

if distance(j)

ma=distance(j);

label_ma=label(j);

tmp=j;

end

end

distance(tmp)=distance(i);  %排数据

distance(i)=ma;

label(tmp)=label(i);        %排标号,主要使用标号

label(i)=label_ma;

end

cls1=0; %统计类1中距离测试数据最近的个数

for i=1:K

if label(i)==1

cls1=cls1+1;

end

end

cls2=K-cls1;    %类2中距离测试数据最近的个数

if cls1>cls2

plot(ii,jj);     %属于类1的数据画小黑点

end

end

end

3、结果说明

本算法的测试数据是坐标轴上的点,范围是x[-3,3], y[-3,3];

最终结果一类用黑点表示,一类用空白表示

4、算法结果:

0818b9ca8b590ca3270a3433284dd417.png

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

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

相关文章

matlab 计算 工程,matlab工程计算.doc

您所在位置:网站首页 > 海量文档&nbsp>&nbsp计算机&nbsp>&nbspmatlabmatlab工程计算.doc167页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整性,不预览、不比…

matlab制作打地鼠游戏,scratch编程制作打地鼠的游戏教程

scratch编程制作打地鼠的游戏教程Sk1少儿编程网-https://www.pxcodes.comSk1少儿编程网-https://www.pxcodes.com首先,新建背景和角色,从背景库/角色库中分别选择森林和地鼠、锤子Sk1少儿编程网-https://www.pxcodes.com1.角色:洞Sk1少儿编程…

php中source,PHP中source #N问题的解决方法

最近写PHP里面的查询经常会遇到source #4或者source#5这样的问题,也就是通过mysql_query($sql1)进行一段查询的操作,返回的结果不是想要的字段而是source,去网上查了一些资料都说是什么‘资源的问题,虽然对于出现这种情况的原理还…

php301重定向跳转,php如何设置301重定向跳转

php设置301重定向跳转的方法:在跳转前设置状态码【header( "HTTP/1.1 301 Moved Permanently" );header("Location:your_dest_url")】。本教程操作环境:windows7系统、PHP5.6版,DELL G3电脑,该方法适用于所有…

matlab中instr,MATLAB 串口通信

matlab 串口编程由于项目需要,用matlab 做了一个串口通信工具,也碰到不少坑。这里总结一下。读取串口数据matlab 支持串口通信,因此直接调用串口的结构体serial就可以,在调用之前,需要对串口属性进行设置。delete(inst…

华为发布《大交通时代》:开启未来数字交通宏图

9月24日,在华为全联接2021大会期间,华为携手电子工业出版社及行业专家、共同举办了业内首部交通行业数字化转型系统性专著《大交通时代:行业数字化转型之道》(以下简称《大交通时代》)新书发布媒体沟通会。本书理论结合…

树莓派 摄像头 php,树莓派3 之 USB摄像头安装和使用

需求如果你想在树莓上拍照或者录影,你可以安装树莓派的摄像头(有点贵)。如果你不想要为摄像头模块花费额外的金钱,那有另外一个方法,就是你常见的USB 摄像头。你可能已经在PC上安装过了。我买的如图的这款本篇文章讲解的就是 在树莓派上使用U…

Gartner发布2021年低代码魔力象限,Mendix名列前位

到2025年,企业所开发的新应用中有70%将使用低代码或无代码技术,而2020年的这一比例还不到25%。低代码应用平台在其技术采用曲线上已从"早期采用者"进入到"早期多数人"阶段;而且低代码是“适合主流业务用例的强大的最佳应…

python爬虫入门心得体会,python爬虫入门和实例

爬虫不外乎是为了获取网络上的信息,要取得信息,你就得给给服务器发请求,然后服务器把信息发给你,这一步一般较为简单。服务器发给你的一般是一个html文件,拿到文件后,你可能会觉得这是什么乱七八糟的东西&a…

python的整数类型_Python int 数字整型类型 定义int()范围大小转换

本文主题是讲python数字类型python int整型使用方法及技巧。它是不可变数据类型中的一种,它的一些性质和字符串是一样的,注意是整型不是整形哦。 Python int有多种数字类型:整型int、长整型、布尔型bool、浮点数float、复数complex&#xff0…

Gartner发布2021年人工智能技术成熟度曲线

编辑 | 宋慧 供稿 | Gartner 全球信息技术研究和顾问公司Gartner 2021年人工智能技术成熟度曲线(Hype Cycle for Artificial Intelligence, 2021)中的四个趋势正在推动近期人工智能创新。这四个趋势是:负责任的人工智能、小而宽数据策略、人…

oracle中获取当前时间戳,Oracle 在SQL语句中如何获取系统当前时间并进行操作

select sysdate from dual;select to_char(sysdate,yyyy-mm-dd hh24:mi:ss) from dual;select to_char(sysdate,yyyy-mm-dd hh24:mi) from dual;select to_char(sysdate, yyyy ) from dual; --年select to_char(sysdate, MM ) from dual; --月select to_char(sysdate, dd ) fro…

oracle数据库怎么锁表,oracle数据库表锁住

1、查看数据库锁,诊断锁的来源及类型:select object_id,session_id,locked_mode from v$locked_object;或者用以下命令:select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_idl.object_id2…

“低代码”将干掉 70% 的软件开发工作

作者| Mr.K 编辑| Emma来源| 技术领导力(ID:jishulingdaoli)根据Gartner 预测:到 2025 年,70% 的新应用将由低代码/无代码技术完成开发。也就是说,“低代码”将干掉70%的传统软件开发工作。什么是传统软件开发工作?说…

漫画:什么是 “图灵测试” ?

作者| 小灰来源| 程序员小灰艾伦麦席森图灵(1912-1954)在一间小黑屋里,有这样三个角色:一个人类评审员,两个受试者A和B。其中一个受试者是计算机的人工智能程序,另一个受试者是人类。评审员无法直接看到受试…

oracle导出超链接,Oracle Report中加入下载超链接操作方法

1、在报表页面布局相应的位置加入文本框,一般为Download右键用PL/SQL编辑器编写成超链接,加入以下内容:function B_13FormatTrigger return boolean isbeginIF upper(:P_ACTION) ! DOWNLOAD THENreturn (FALSE);ELSEsrw.set_hyperlink(EXP_FI…

云原生,智慧营销破圈新利器

如今企业数字化转型进入深水区,我们步入全域精细化营销时代,企业增长和营销需求不断变化,MarTech(营销技术)正紧跟其后。据艾瑞咨询《2021年中国MarTech市场研究发展报告》指出,2021年我国 MarTech 各子场景…

oracle10数据库链接失败,oracle 10g Enterprise Manager 无法连接到数据库实例分析

1 问题描述客户端通过IE 浏览器登陆oracle 10g em console时不能显示登陆界面,页面显示“Enterprise Manager 无法连接到数据库实例。下面列出组件状态”[more]2 处理过程1. 检查主机em进程状态,结果正常emctl status dbconsole2. 检查数据库用户&#x…

埃森哲携手阿里云共建基于云原生的消费者运营中台解决方案

简介: 作为全球领先的专业服务公司,埃森哲凭借独特的业内经验与专业技能,以及翘楚全球的卓越技术中心和智能运营中心,此次携手阿里云为零售行业客户提供专业的云原生CDPMA解决方案。 在这个充满变革与颠覆的时代,新技…