Halcom 发表于 2017-5-26 22:29:35

KNN近邻分类器

百度网盘视频链接:
视频链接:http://pan.baidu.com/s/1bp1qTX1
录制的视频是算法底层原理讲解,底层代码实现,方便大家真正掌握算法实质,开发出更加出色的算法。录制视频的初衷是:避免读者朋友利用大把时间学习已有常见算法,本系列视频旨在让读者朋友快速深入了解这些常见算法原理,有更多的时间去研究更加高大上算法(价值)。

具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,并提交给我,我来设置视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1

KNN近邻分类器,机器学习的敲门砖,最简单的代码如下:clc,clear,close all
% k of k-nearest neighbors
Knn = 4 ;
% 测试样本
testsamplesX = ';

% 训练样本
samplesX = ';
% 训练样本标签
samplesY = ';

L = length(samplesY);   % 训练样本数量
Uc = unique(samplesY);% 类别

N = size(testsamplesX, 1);% 测试样本数量
result = zeros(N,1);      % 初始化结果

for i=1:N   % 分类每一个测试样本
    testdata = testsamplesX(i,:);% 取出当前待分类的样本
    for j=1:L
      dist(j) = norm( testdata-samplesX(j,:) , 2 );
    end
    = sort(dist,'ascend');% 升序
    indices = samplesY( index(1:Knn) );
    nn = hist(indices, Uc);
    = max(nn);
    result(i) = Uc(best);
end
具体的流程如下:
【1】构建训练样本、训练样本标签、测试样本
【2】参数初始化Knn
【3】训练样本和测试样本归一化处理
【4】主循环
【5】取测试样本
【6】计算测试样本与所有训练样本的欧式距离
【7】依次选取Knn个最小距离值
【8】统计Knn个距离值对应的标签频数
【9】将频数最大的标签作为当前测试样本的分类标签
【10】输出最终结果





huwust 发表于 2018-3-14 21:28:57

很棒的,感谢博主
页: [1]
查看完整版本: KNN近邻分类器