k近邻matlab,模式识别 最近邻法和k近邻法MATLAB实现.doc
模式识别 最近邻法和k近邻法MATLAB实现
最近邻法和k-近邻法
学号 姓名:吴林
一.基本概念:
最近邻法:对于未知样本x,比较x与N个已知类别的样本之间的欧式距离,并决策x与距离它最近的样本同类。
K近邻法:取未知样本x的k个近邻,看这k个近邻中多数属于哪一类,就把x归为哪一类。K取奇数,为了是避免k1=k2的情况。
二.问题分析:
要判别x属于哪一类,关键要求得与x最近的k个样本(当k=1时,即是最近邻法),然后判别这k个样本的多数属于哪一类。
可采用欧式距离公式求得两个样本间的距离s=sqrt((x1-x2)^2+(y1-y2)^2)
三.算法分析:
该算法中任取每类样本的一半作为训练样本,其余作为测试样本。例如iris中取每类样本的25组作为训练样本,剩余25组作为测试样本,依次求得与一测试样本x距离最近的k个样本,并判断k个样本多数属于哪一类,则x就属于哪类。测试10次,取10次分类正确率的平均值来检验算法的性能。
四.MATLAB代码:
最近邻算实现对Iris分类
clc;
totalsum=0;
for ii=1:10
data=load('iris.txt');
data1=data(1:50,1:4);%任取Iris-setosa数据的25组
rbow1=randperm(50);
trainsample1=data1(rbow1(:,1:25),1:4);
rbow1(:,26:50)=sort(rbow1(:,26:50));%
testsample1=data1(rbow1(:,26:50),1:4);
data2=data(51:100,1:4);%任取Iris-versicolor数据的25组
rbow2=randperm(50);
trainsample2=data2(rbow2(:,1:25),1:4);
rbow2(:,26:50)=sort(rbow2(:,26:50));
testsample2=data2(rbow2(:,26:50),1:4);
data3=data(101:150,1:4);%任取Iris-virginica数据的25组
rbow3=randperm(50);
trainsample3=data3(rbow3(:,1:25),1:4);
rbow3(:,26:50)=sort(rbow3(:,26:50));
testsample3=data3(rbow3(:,26:50),1:4);
trainsample=cat(1,trainsample1,trainsample2,trainsample3);%包含75组数据的样本集
testsample=cat(1,testsample1,testsample2,testsample3);
newchar=zeros(1,75);sum=0;
[i,j]=size(trainsample);%i=60,j=4
[u,v]=size(testsample);%u=90,v=4
for x=1:u
for y=1:i
result=sqrt((testsample(x,1)-trainsample(y,1))^2+(testsample(x,2)-trainsample(y,2))^2+(testsample(x,3)-trainsample(y,3))^2+(testsample(x,4)-trainsample(y,4))^2); %欧式距离
newchar(1,y)=result;
end;
[new,Ind]=sort(newchar);
class1=0;
class2=0;
class3=0;
if Ind(1,1)<=25
class1=class1+1;
elseif Ind(1,1)>25&&Ind(1,1)<=50
class2=class2+1;
else
class3=class3+1;
end
if class1>class2&&class1>class3
m=1;
ty='Iris-setosa';
elseif class2>class1&&class2>class3
m=2;
ty='Iris-versicolor';
elseif class3>class1&&class3>class2
m=3;
ty='Iris-virginica';
else
m=0;
ty='none';
end
if x<=25&&m>0
disp(s
k近邻matlab,模式识别 最近邻法和k近邻法MATLAB实现.doc相关推荐
- 【光学】基于matlab GUI矩阵法和等效界面法光学薄膜对反射率影响【含Matlab源码 2102期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab GUI矩阵法和等效界面法光学薄膜对反射率影响[含Matlab源码 2102期] 点击上面蓝色字体,直接付费下载, ...
- 用matlab的编程法和游动鼠标法求二阶传递函数的上升时间、峰值时间、超调量和调节时间 - Gavin_Hall的博客 - CSDN博客
1. 准备 终值:c(∞) 上升时间 tr:响应从峰值的10%上升到峰值的90%所需要的时间:而阶跃响应则是从终值的10%上升到终值的90%所需要的时间:对有振荡的系统,也可以定义为从0到第一次到达终 ...
- matlab使用相关分析法和hankel矩阵法进行系统辨识
待辨识模型: %H = 180.60 / ( 48.96s^2 + 14.00s + 1.0 ) H = tf( [180.60],[ 48.96 14 1.0 ] ) ; b = [ 180.60 ...
- 综合评价分析法:熵权法matlab实现+层次分析法matlab实现
综合评价分析法:熵权法matlab实现+层次分析法matlab实现 层次分析法matlab实现 clc;clear%层次分析法matlab实现A=[1 1/9 1/2 1/4 1/6 9 1 6 5 ...
- parzen窗方法和k近邻方法估计概率密度
机器学习实验四,详情请参考<模式分类>第二版第四章课后上机练习4.3.4.4节 实验环境: Matlab2016a Parzen窗估计方法: 已知测试样本数据x1,x2,-,xn,在不利用 ...
- 【图像处理】图像噪声去除实验 用 matlab 实现KNN(K近邻平滑滤波器)和 SNN(对称近邻平滑滤波器)
实验内容 实现KNN(K近邻平滑滤波器) 算法实现为函数[im]=KNN_denoise (I,K,N),其中I为读入的图像矩阵:K为最近邻个数,N为模板大小参数(N*N). 测试代码 im=imre ...
- python k近邻算法_python中的k最近邻居算法示例
python k近邻算法 K最近邻居(KNN) (K-Nearest Neighbors (KNN)) KNN is a supervised machine learning algorithm t ...
- k近邻算法_机器学习之K近邻分类算法的实现
K近邻算法(k-nearest neighbors, KNN)是最基本的机器学习算法之一.所谓的K,就是距离最近的K个邻居的意思.其实,KNN在我们平常的生活中也会不自主的应用,比如,俗语说的&quo ...
- knn k的选取_KNN - 初窥K近邻算法
1>算法概述 KNN: 全名K-NearestNeighbor,K近邻算法,简单讲就是每个样本都可以用最接近的k个邻居表示,或者说共享同一个标签.KNN是一种分类(classification) ...
- k近邻算法_图穷匕见:K近邻算法与手写数字识别
机器学习算法是从数据中产生模型,也就是进行学习的算法.我们把经验提供给算法,它就能够根据经验数据产生模型.在面对新的情况时,模型就会为我们提供判断(预测)结果.例如,我们根据"个子高.腿长. ...
最新文章
- 猴子请来的逗比项目流水总结
- DFS与BFS的总结
- java的read()_Java Reader read()方法
- WGAN的成功,可能跟Wasserstein距离没啥关系
- Razor Templating Engine
- js/css 检测移动设备方向的变化 判断横竖屏幕
- vue-cli生成项目时你应当知道的
- Redhat7.3安装配置Telnet详细教程
- Ubuntu如何定时清理内存
- 什么是正则表达式 ?
- 幼儿园调查过程怎么写_【调查问卷总结怎么写】幼儿园家长调查问卷总结
- 注册电气工程师发输变电基础考试通过经验分享(转载备份)
- gp数据库主节点故障导致数据库无法重启报错
- (转)宅男程序员福利:来自纽约的28位智慧与美貌并存的IT女神
- NLP入门干货:手把手教你3种中文规则分词方法
- python判断是否回文_Python语言判断输入的是否是回文数的方法
- apache评分条件_APACHE Ⅲ 评分标准.doc
- 在本地写一个以市净率为因子的回测结果
- 低端交换机环路检测专题
- drawio,程序员最好用的在线画图软件!!!