定义

k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是,预将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。

算法

先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是以下任何一个:
1)没有(或最小数目)对象被重新分配给不同的聚类。
2)没有(或最小数目)聚类中心再发生变化。
3)误差平方和局部最小。

代码是白嫖的大佬的,

data=[];
N=3;%设置聚类数目
[m,n]=size(data);
re=zeros(m,n+1);
center=zeros(N,n);%初始化聚类中心
re(:,1:n)=data(:,:);
for x=1:Ncenter(x,:)=data( randi(300,1),:);%第一次随机产生聚类中心
end
while 1
distence=zeros(1,N);
num=zeros(1,N);
new_center=zeros(N,n);for x=1:mfor y=1:Ndistence(y)=norm(data(x,:)-center(y,:));%计算到每个类的距离end[~, temp]=min(distence);%求最小的距离re(x,n+1)=temp;
end
k=0;
for y=1:Nfor x=1:mif re(x,n+1)==ynew_center(y,:)=new_center(y,:)+re(x,1:n);num(y)=num(y)+1;endendnew_center(y,:)=new_center(y,:)/num(y);if norm(new_center(y,:)-center(y,:))<0.1k=k+1;end
end
if k==Nbreak;
elsecenter=new_center;
end
end
[m, n]=size(re);%最后显示聚类后的数据
figure;
hold on;
for i=1:mif re(i,n)==1 plot(re(i,1),re(i,2),'r+');plot(center(1,1),center(1,2),'ko');elseif re(i,n)==2plot(re(i,1),re(i,2),'b*');plot(center(2,1),center(2,2),'ko');elseif re(i,n)==3plot(re(i,1),re(i,2),'go');plot(center(3,1),center(3,2),'ko');elseplot(re(i,1),re(i,2),'m*');plot(center(4,1),center(4,2),'ko');end
end
grid on

K-Means聚类算法(matlab)相关推荐

  1. k means聚类算法_一文读懂K-means聚类算法

    1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...

  2. k means聚类算法_K-Means 聚类算法 20210108

    说到聚类,应先理解聚类和分类的区别 聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来. K-Means 聚类算法有很多种 ...

  3. OpenCV官方文档 理解k - means聚类

    理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...

  4. matlab中的聚类算法,kmeans聚类算法matlab matlab 聚类算法silhouette

    怎样用matlab实现多维K-means聚类算法小编觉得一个好的周末应该是这样的:睡到中午醒来,在床上躺着玩两个小时手机,起床随便吃点东西,下午去超市买一大堆零食,五六点的时候去约小伙伴们吃火锅烧烤, ...

  5. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  6. K均值聚类算法的MATLAB实现

    K均值聚类算法的MATLAB实现 1.K-均值聚类法的概述 之前在参加数学建模的过程中用到过这种聚类方法,但是当时只是简单知道了在matlab中如何调用工具箱进行聚类,并不是特别清楚它的原理.最近因为 ...

  7. 【模式识别】K均值聚类算法应用实验报告及MATLAB仿真

    一. 实验目的 1.掌握K均值聚类算法的原理和实现过程: 2.掌握K均值聚类算法的应用方法. 二. 实验内容 1.彩色图像分割 选择一幅图像,分别按三种颜色数进行彩色图像分割的结果(原图和分割图).步 ...

  8. OpenCV的k - means聚类 -对图片进行颜色量化

    OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...

  9. K-Means(K均值聚类算法)

    K-Means(K均值聚类算法) 1.前言 要学习聚类算法就要知道聚类学习算法是什么,为什么要学习聚类学习聚类学习算法,有什么用途,下面就简单的做一下介绍,并且详细的说明k-means均值聚类学习算法 ...

  10. K均值聚类以及matlab实现

    K均值聚类是最基础的一种聚类方法.K均值聚类,就是把看起来最集中.最不分散的簇标签分配到输入训练样本里.具体而言,通过下式计算簇y的分散情况. 在这里,表示的是满足的y的和. 上式的为簇y的中心,为属 ...

最新文章

  1. TechED 2005 博客园兄弟合影
  2. 国内自动驾驶战局如何?我对比了下华为大疆特斯拉百度等公司
  3. java将文件输到GUI窗口,将log4j的日志输出到GUI界面
  4. 途家网获3亿美元融资,PMCAFF放送100元途家优惠券(途家内部员工专用)
  5. 简单的面试题简解思路(搜集)
  6. 我如何使用Python帮助我选择了Google Summer of Code '19的组织
  7. 微软签署最大规模风电购买协议 打造“无碳”数据中心
  8. 聚奎中学2021高考成绩查询,江津2017全体高考考生的喜报
  9. badboy的脚本录制教程
  10. mysql 1236_MySQL 1236错误解决方法
  11. 自学英语最有效的方法
  12. office办公软件之ppt视频录制
  13. Typo: In word 问题解决。
  14. ti8148 dvrrdk开发小结
  15. HTML||从一个页面跳转至另一个html页面的子页面(超链接)
  16. 关于移动硬盘变成CD驱动器的非正常修复方法
  17. vmware_无法连接虚拟机vmx提前退出
  18. 在线接口Mock工具fastmock详解
  19. [LLVM教程]LLVM之第一个语言前端
  20. String类中的trim()方法实现

热门文章

  1. 使用Java实现简单的监控系统
  2. Android官方文档之DataBinding库
  3. github前端插件大全
  4. 香港五个遊客不常到的本地拍攝熱門地點
  5. Kali Linux - 嗅探和欺骗及密码破解工具
  6. Java基础算法题(02):古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  7. qq客服不需要加好友的html方法
  8. java实现录屏软件
  9. Zabbix探索:关于网络设备SysUpTime监控的问题
  10. 上帝的思想?神化斯蒂芬·霍金之症结