whos;
iris_original=importdata('iris.data');
iris_testset=zeros(50:5);
iris_trainingset=zeros(100:5);
distance=zeros(50:1);
class1=0; class2=0; class3=0;
tmpnum=0;
j=1;
i=1;
testcases=50;
trainingcases=100;
nbofmatch=0; nbofnomatch=0;
matchpercentage=0; nomatchpercentage=0;
matcharray=zeros(99,1);
comfusion_matrix=zeros(3:3);
nboftmp1=0; nboftmp2=0; nboftmp3=0;
l=1;
k=1;
% Choose the training data from the original data
for i=1:150
if (i <=34 | i > 50 & i <= 83 | i > 100 & i <= 133)
iris_trainingset(j,1:5)=iris_original(i,1:5);
j=j+1;
elseif (i > 34 & i <= 50 | i > 83 & i <= 100 | i > 133 & i <= 150)
iris_testset(l,1:5)=iris_original(i,1:5);
l=l+1;
end
end
% Choose the test data from the original data
for k=1:99
for j=1:testcases
for i=1:100
distance(i,1) = sqrt((iris_testset(j,1) - iris_trainingset(i,1))^2 + (iris_testset(j,2) - iris_trainingset(i,2))^2 + (iris_testset(j,3) - iris_trainingset(i,3))^2 + (iris_testset(j,4) - iris_trainingset(i,4))^2);
distance(i,2) = iris_trainingset(i,5);
end
% Bobble sort distance with their label
for m=1:100
for n=1:99
if (distance(n+1,1) < distance(n,1))
tmp=distance(n+1,1);
label_tmp=distance(n+1,2);
distance(n+1,1)=distance(n,1);
distance(n+1,2)=distance(n,2);
distance(n,1)=tmp;
distance(n,2)=label_tmp;
end
end
end
% Calculate number of class1, class2, class3
for s=1:k
if (distance(s,2) == 1)
class1=class1+1;
elseif (distance(s,2) == 2)
class2=class2+1;
elseif (distance(s,2) == 3)
class3=class3+1;
end
end
% calculate which class have the majority number and assign a label
if (class1 > class2 & class1 > class3)
label=1;
elseif (class2 > class3 & class2 > class1)
label=2;
elseif (class3 > class2 & class3 > class1)
label=3;
elseif (class1 > class2 & class1 == class3)
label=distance(1,2);
elseif (class2 > class3 & class2 == class1)
label=distance(1,2);
elseif (class3 > class1 & class2 == class3)
label=distance(1,2);
elseif (class1 == class2 & class1 == class3)
label=distance(1,2);
end
% calculate number of match label and number of nomatch label
if (iris_testset(j,5) == label)
nbofmatch=nbofmatch+1;
else
nbofnomatch=nbofnomatch+1;
end
class1=0; class2=0; class3=0;
% comfusion_matrix
if (label == 1)
if (iris_testset(j,5) == 1)
comfusion_matrix(1,1) = comfusion_matrix(1,1) + 1;
elseif (iris_testset(j,5) == 2)
comfusion_matrix(1,2) = comfusion_matrix(1,2) + 1;
elseif (iris_testset(j,5) == 3)
comfusion_matrix(1,3) = comfusion_matrix(1,3) + 1;
end
elseif (label == 2)
if (iris_testset(j,5) == 1)
comfusion_matrix(2,1) = comfusion_matrix(2,1) + 1;
elseif (iris_testset(j,5) == 2)
comfusion_matrix(2,2) = comfusion_matrix(2,2) + 1;
elseif (iris_testset(j,5) == 3)
comfusion_matrix(2,3) = comfusion_matrix(2,3) + 1;
end
elseif (label == 3)
if (iris_testset(j,5) == 1)
comfusion_matrix(3,1) = comfusion_matrix(3,1) + 1;
elseif (iris_testset(j,5) == 2)
comfusion_matrix(3,2) = comfusion_matrix(3,2) + 1;
elseif (iris_testset(j,5) == 3)
comfusion_matrix(3,3) = comfusion_matrix(3,3) + 1;
end
end
end % end of j
comfusion_matrix
comfusion_matrix=zeros(3:3);
matchpercentage = (nbofmatch/testcases)*100;
matcharray(k,1)=matchpercentage;
matchpercentage=0; nomatchpercentage=0;
nbofmatch=0; nbofnomatch=0;
end % end of k
% Plot the graph
x=linspace(1,99,99);
title('iris for KNN');
xlabel('Number of K');
ylabel('Match Percentage %');
grid on;
plot(x,matcharray);
KNN.rar_K._K近邻算法_Nearest neighbour _knn_k近邻matlab实现
版权申诉
127 浏览量
2022-09-14
17:44:05
上传
评论
收藏 1KB RAR 举报
御道御小黑
- 粉丝: 58
- 资源: 1万+
最新资源
- 双H桥电机驱动L298N芯片AD集成库ALTIUM库(原理图库+PCB封装库)文件.zip
- 555springboot + vue 线上教学平台.zip(可运行源码+数据库文件+文档)
- 554springcloud + vue 房产销售平台.zip(可运行源码+数据库文件+文档)
- 小霸王坦克游戏源码.7z
- 蓝桥杯单片机基础学习项目(LED,数码管,蜂鸣器,继电器,按键控制)
- 553springboot + vue 某银行OA系统.zip(可运行源码+数据库文件+文档)
- DatabaseWatermarkingBasedonTextFormat
- yolov8常用二维码检测检测+数据集
- -移动通信-网络课程设计与研究
- 基于Python的PCA人脸识别算法的原理及实现代码+文档详解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0