前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KNN算法MATLAB实现

KNN算法MATLAB实现

作者头像
里克贝斯
发布2021-05-21 16:35:22
1.2K0
发布2021-05-21 16:35:22
举报
文章被收录于专栏:图灵技术域图灵技术域

一、kNN概念描述

请参考:https://www.omegaxyz.com/2018/01/08/knn/

kNN算法又称为k最近邻(k-nearest neighbor classification)分类算法。所谓的k最近邻,就是指最接近的k个邻居(数据),即每个样本都可以由它的K个邻居来表达。

kNN算法的核心思想是,在一个含未知样本的空间,可以根据离这个样本最邻近的k个样本的数据类型来确定样本的数据类型。

该算法涉及3个主要因素:训练集、距离与相似的衡量、k的大小;

主要考虑因素:距离与相似度的;

二、举例说明

右图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?

如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。

三、MATLAB实现

KNN.m:KNN标签预测,输入测试数据、样本数据、样本标签、K值

输出数据:对单个样本预测的标签值

MATLAB

代码语言:txt
复制
function relustLabel = KNN(inx,data,labels,k)
%% 
 
%   inx 为 输入测试数据,data为样本数据,labels为样本标签
 
%%
 
 
[datarow , datacol] = size(data);
diffMat = repmat(inx,[datarow,1]) - data ;
distanceMat = sqrt(sum(diffMat.^2,2));
[B , IX] = sort(distanceMat,'ascend');
len = min(k,length(B));
relustLabel = mode(labels(IX(1:len)));
 
end

Obj.m 目标函数,返回值为标签预测错误率

MATLAB

代码语言:txt
复制
function [value] = kgetObj2(train_F,train_L,test_F,test_L)
k=4;
numTest=size(test_f,1);
numTrain=size(train_F,1);
    error=0;
    for i=1:numTest
    classifyresult= knnsix(test_f(i,:),train_f(1:numTrain,:),train_L(1:numTrain,:),k);
    if(classifyresult~=test_L(i,:))
        error=error+1;
    end
    end
     value=error/numTest;
end

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、kNN概念描述
  • 二、举例说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档