这里只给出k-最近邻聚类k-Nearest Neighbor的实现过程,算法的原理请自行搜索,代码如下:

k-最近邻聚类算法的主程序:
clc;
clear;
%读取数据文件,生成点矩阵
fileID = fopen('D:\matlabFile\KNN\KNN.txt');C=textscan(fileID,'%f %f');fclose(fileID);%显示数组结果%celldisp(C);%将cell类型转换为矩阵类型,这里只假设原数据为二维属性,且是二维的坐标点CC_init=cat(2,C{1},C{2});%用来保存初始加载的值CC=CC_init;%set key parameter:kk=3;% store all points that satisfy the condition k, construct every two% points to edgeedges_all=zeros(2,2,1);%edges countcount=1;%4-D matrix to store edgesedges=zeros(2,2,k,1);%keep this code safeif size(CC>k+1)for i=1:size(CC,1)%extract one pointp=CC(i,:);CC_temp=CC;CC_temp(i,:)=[];% find the nearest k pointspoints=FindNearNeighbor(k,p,CC_temp);% merge two points to edgeedge_temp=zeros(2,2,1);for j=1:size(points,1)edge=[p;points(j,:)];edge=sortrows(edge);edge_temp(:,:,j)=edge;edges_all(:,:,count)=edge;   count=count+1;end  edges(:,:,:,i)=edge_temp;endend% delete common edgeflag=1;while flagfor i=1:size(edges_all,3)-1%remeber all same edge serial numbersserial_num=zeros(1,1);%extract first edgea=edges_all(:,:,i);% cmopare first edge with the rest edgesfor j=i+1:size(edges_all,3)%extract second edgeb=edges_all(:,:,j);if isequal(a,b)serial_num=cat(1,serial_num,j);endend%delete all common edgesserial_num(1,:)=[];if length(serial_num)>=1edges_all(:,:,serial_num)=[];break;endendif i==size(edges_all,3)-1flag=0;endend%plot all edges
for i=1:size(edges_all,3)edge=edges_all(:,:,i);plot(edge(:,1),edge(:,2));hold on
end
FindNearNeighbor函数的实现如下:
function result=FindNearNeighbor(k,p,points)
%store points that satisfy the k condition, first column store distance
%between p and one of points,second column store the serial number of the
%point
dis_p=zeros(1,2);
for i=1:size(points,1)%extract one pointpoint=points(i,:);%compute the distancedis=sqrt((p(1,1)-point(1,1))^2+(p(1,2)-point(1,2))^2);dis_p(i,:)=[dis,i];
end
% sort dis_p set follow first columndis_p=sortrows(dis_p,1);
dis_satisfy=dis_p(1:k,:);
%return the satisfied points
result=points(dis_satisfy(:,2),:);
end
KNN.txt实验数据如下,请复制后保存为txt格式
32 32
35 43
42 39
31 36
29 49
27 39
46 33
44 40
41 36
37 37
66 66
59 65
57 60
63 59
60 60
55 65
51 67
62 68
61 65
57 64
120 120
115 124
124 119
109 125
104 109
111 117
125 130
123 109
129 110
107 117

k-最近邻聚类k-Nearest Neighbor相关推荐

  1. python机器学习库sklearn——K最近邻、K最近邻分类、K最近邻回归

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 KNN即K最近邻,相关的知识内容可以参考 http://blog.csdn.net/luanpeng825485697/article ...

  2. 最近邻插值(nearest neighbor)-----python

    图像内插是在诸如放大.收缩.旋转和几何校正等任务中广泛应用的基本工具.从根本上来看,内插是用已知数据来估计未知位置的数值的处理. 最近邻内插法(nearest neighbor):假设一幅大小为500 ...

  3. 【机器学习】机器学习算法之——K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解...

    k-最近邻算法是基于实例的学习方法中最基本的,先介绍基于实例学习的相关概念. 01 基于实例的学习 已知一系列的训练样例,很多学习方法为目标函数建立起明确的一般化描述:但与此不同,基于实例的学习方法只 ...

  4. 最近邻分类器(Nearest Neighbor Classifier)

    先从简单的方法开始说,先提一提最近邻分类器/Nearest Neighbor Classifier,不过事先申明,它和深度学习中的卷积神经网/Convolutional Neural Networks ...

  5. K近邻分类器(李飞飞CS231n学习笔记---lecture2:K最近邻算法)

    在讲解K近邻分类器之前,我们先来看一下最近邻分类器(Nearest Neighbor Classifier),它也是K = 1时的K近邻分类器. 目录 最近邻分类器 定义 存在问题 K近邻分类器(KN ...

  6. python机器学习案例系列教程——K最近邻算法(KNN)、kd树

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 K最近邻简介 K最近邻属于一种估值或分类算法,他的解释很容易. 我们假设一个人的优秀成为设定为1.2.3.4.5.6.7.8.9.10 ...

  7. 机器学习(五)常用分类模型(K最近邻、朴素贝叶斯、决策树)和分类评价指标

    机器学习(五)常用分类模型(K最近邻.朴素贝叶斯.决策树)和分类评价指标 文章目录 机器学习(五)常用分类模型(K最近邻.朴素贝叶斯.决策树)和分类评价指标 综述 常用分类模型 K最近邻模型 朴素贝叶 ...

  8. 非监督学习: K 均值聚类(原理、步骤、优缺点、调优)

    支持向量机.逻辑回归.决策树等经典的机器学习算法主要用于分类问题,即根据一些己给定类别的样本, 训练某种分类器,使得它能够对类别未知的样本进行分类.与分类问题不同,聚类是在事先并不知道任何样本类别标签 ...

  9. 机器学习——K近邻算法(KNN)(K Nearest Neighbor)

    参考视频与文献: python与人工智能-KNN算法实现_哔哩哔哩_bilibili 机器学习--K近邻算法(KNN)及其python实现_清泉_流响的博客-CSDN博客_python实现knn 机器 ...

  10. K Nearest Neighbor 算法

    K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法.其中的K表示最接近自己的K个数据样本.KNN算法和K-M ...

最新文章

  1. java中正则表达式 ?=_Java中的正则表达式
  2. C++运行程序出现的一些问题
  3. 【Linux】一步一步学Linux——login命令(210)
  4. java类与对象实验报告心得体会_第四周课程总结与实验报告(Java简单类与对象)...
  5. 树莓派安装ftp服务器
  6. goto 语句和标号
  7. react随笔-1(为什么在react使用jq无法正确渲染组件位置)
  8. python计算器_python_计算器
  9. 图片格式转换 png,jpg,gif等格式 的python小程序
  10. .lib不是有效的Win32应用程序
  11. 奥维 最新 图源2023
  12. iphone麦克风_如何从iPhone或iPad上的蓝牙麦克风录制音频
  13. sql怎么与oracle连接,sql怎么连接oracle数据库
  14. 手动标记用例状态_界面测试用例.doc
  15. Spring Boot框架入门到进阶教程(自学版)
  16. PMP考试的5A好考吗?
  17. 11个“高能”网站,学编程和赚钱两不误!
  18. AI视频增强 -- Topaz 视频超分 | Topaz Video Enhance AI | 【软件试用】
  19. mybatis jar下载
  20. 零基础学习CANoe Panel(16)—— Clock Control/Panel Control/Start Stop Control/Tab Control

热门文章

  1. 高中数学基础-对数2.2.2对数函数图象及其性质(上)
  2. 华为Nova7Pro和华为mate30 哪个好
  3. 【VUE】2、VUE-CREATE创建第一个VUE项目
  4. 权限管理系统设计——入门(一)
  5. 打破校史!「双非」高校,首发 Science
  6. mysql 幻读理解_Mysql 幻读 的一些个人理解
  7. Python绘制点线
  8. array_diff()和array_diff_assoc()
  9. 蔚来智驾功能大更新:与其叫NOP+,不如叫NAD-
  10. 第一个Flutter demo——实现无限循环列表