关于KNN的算法和Matlab 实现

Definition

k-nearest neighbors algorithm(wikipedia),也称K近邻算法。是一种基于对欧式距离判定的分类算法。

  • 欧式距离

d = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 ) d = \sqrt{(x_1-x_2)^2+(y_1-y_2)^2)} d=(x1x2)2+(y1y2)2)

Algorithm

1、初始化训练集和类别;

2、计算测试集样本与训练集样本的欧氏距离;

3、根据欧氏距离大小对训练集样本进行升序排序;

4、选取欧式距离最小的前K个训练样本,统计其在各类别中的频率;

5、返回频率最大的类别,即测试集样本属于该类别。

CODE

%KNN
clear all
clc

%data
traindata=[1.0,2.0;1.2,0.1;0.1,1.4;0.3,3.5];
trainclass=[1,1,2,2];
testdata=[0.5,2.3];
k=3;

%distance 
[row,col]=size(traindata);
test=repmat(testdata,row,1);
%dis=zeros(1,row);
dis=sqrt((traindata(:,1)-test(1,1)).^2+(traindata(:,2)-test(1,2)).^2);

%sort
disclass=[dis(:,1),trainclass(1,:)'];
sortdis=sortrows(disclass);

%count
count= tabulate(sortdis((1:k),2));
[frequency,location]=max(count(:,3));
label=sortdis(location,2);

%disp
 str = [ '最终分类结果为:', num2str(label)];
 disp(str);

实验输出

最终分类结果为:2
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值