一、数据源
1、iris_dataset下载链接:
https://pan.baidu.com/s/1g9RkyN2TfQG0YjIhoNAC6g
提取码:7tdx
2、KNN函数来源:链接
二、效果
三、代码
1、mian
%%
%数据导入
iris_data=csvread("iris_dataset.csv");
%%
%数据分割
nums_train=120;
nums_test=30;
Dimension=5;
k=4;
[training_set,testing_set]=data_split(iris_data, nums_train, nums_test);
%%
%模型验证
accuracy=training(training_set, testing_set, nums_test, Dimension, k);
disp("The accurary is: "+accuracy);
2、data_split
function [training,testing] = data_split(data,nums_train,nums_test)
training=data(1:nums_train,:);
testing=data(1:nums_test,:);
end
3、training
function [accuracy] = training(training, testing, nums_test, Dimension, k)
accuracy=0;
for i=1:nums_test
[Neighbors, Classify]=KNN(training, testing(i,1:Dimension-1),k);
if (testing(i, Dimension)==mode(Classify))
accuracy=accuracy+1;
end
end
accuracy=accuracy/nums_test;
end
4、KNN
function [Neighbors, Classify] = KNN(A,B,k)
size_A=size(A);
Temp_A=A(:,1:size_A(2)-1);
Dis_A_B=zeros(size_A(1),2);
Dis_A_B(:,1)=1:size_A(1);
Dis_A_B(:,2)=sqrt(sum((Temp_A-B).^2,2));
Sorted_Dis_A_B=sortrows(Dis_A_B,2);
Neighbors=Sorted_Dis_A_B(1:k,1);
Classify=A(Neighbors,size_A(2));
end