kNN algorithm(MATLAB)

来源:互联网 发布:memories语言软件 编辑:程序博客网 时间:2024/05/17 00:18

%% kNN algorithmclear;clc;%% 生成随机数据、绘图显示num = 20;mu1 = [0,2]; % 期望sigma1 = [1 0;0,4];  % 协方差矩阵data1 = mvnrnd(mu1,sigma1,num);  label1 = ones(num,1);plot(data1(:,1), data1(:,2), 'r*', 'linewidth', 0.8)hold onmu2 = [1, 2];sigma2 = [1 0;0 3];data2 = mvnrnd(mu2, sigma2, num);label2 = zeros(num,1);plot(data2(:,1), data2(:,2), 'b+', 'linewidth', 0.8)hold onnew_point = [1 1];  % 待分类数据plot(new_point(1), new_point(2),'mo', 'linewidth', 1.5)data = [data1;data2];label = [label1;label2];%% maink = 5;% 计算每个数据点与待分类实例点之间的距离distance = zeros(2*num,1);for i=1:2*num   distance(i) = sqrt((new_point - data(i,:))*(new_point - data(i,:))');    end% 距离排序[dis_sort,idx_sort]=sort(distance);idx = idx_sort(1:k);result = label(idx);% 计算0和1出现的次数count_1 = 0;count_0 = 0;for i=1:length(result)   if result(i)==0       count_0 = count_0 + 1;   else       count_1 = count_1 + 1;   endend% 输出结果if count_0>count_1    fprintf('new_point_label : 0\n');else    fprintf('new_point_label : 1\n');end   


原创粉丝点击