请选择 进入手机版 | 继续访问电脑版

Hello Mat

 找回密码
 立即注册
查看: 6373|回复: 1

KNN近邻分类器

[复制链接]

1288

主题

1514

帖子

90

金钱

管理员

Rank: 9Rank: 9Rank: 9

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

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

KNN近邻分类器,机器学习的敲门砖,最简单的代码如下:
  1. clc,clear,close all
  2. % k of k-nearest neighbors
  3. Knn = 4 ;
  4. % 测试样本
  5. testsamplesX = [0 20 30, 20 10 30, 20 10 30]';

  6. % 训练样本
  7. samplesX = [10 0 30,0 10 0, 20 0 30]';
  8. % 训练样本标签
  9. samplesY = [1 0 3,0 1 0, 2 0 3]';

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

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

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





算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

0

主题

11

帖子

16

金钱

新手上路

Rank: 1

积分
27
发表于 2018-3-14 21:28:57 | 显示全部楼层
很棒的,感谢博主
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-3-29 21:46 , Processed in 0.208455 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表