K均值聚类是最基础的一种聚类方法。K均值聚类,就是把看起来最集中、最不分散的簇标签分配到输入训练样本里。具体而言,通过下式计算簇y的分散情况。

在这里,表示的是满足的y的和。

上式的为簇y的中心,为属于簇y的样本总数。利用上述定义,对于所有的簇的下式和为最小时,决定其所属的簇标签。

然而,上述的最优化过程的计算时间是随着样本数n的增加呈指数级增长的,当n为较大的数值的时候,很难对其进行高精度的求解。因此在实际应用中,一般是将样本逐个分配到距离其最近的聚类中,并重复进行这一操作,直到最终求得其局部最优解。

k-means算法流程如下所示:
1)给各个簇中心以适当的初值。
2)更新样本对应的簇标签

3)更新各个簇中心

上式中,为属于簇y的样本总数。

4)直到簇标签达到收敛精度为止,重复上述2,3步的计算

matlab代码如下所示:

n = 300 ;
c = 3 ;
t = randperm(n) ;
%横坐标 + 纵坐标
x = [randn(1,n/3)-2 randn(1,n/3) randn(1,n/3)+2 ;randn(1,n/3) randn(1,n/3)+4 randn(1,n/3)]' ;%随机种子m = x(t(1:c),:) ;x2 = sum(x.^2,2) ;s0(1:c,1) = inf ;for o = 1 : 100m2 = sum(m.^2,2) ;% (a-b)^2 = a^2 + b^2 - 2 * a * b[d,y] = min(repmat(m2,1,n)+repmat(x2',c,1)-2*m*x') ;for t = 1 : cm(t,:) = mean(x(y==t,:)) ;s(t,1) = mean(d(y==t)) ;end% norm(A) 返回矩阵A的二范数% 矩阵的二范数 : A' * A 的最大特征值开平方% A = [0 1 2 ; 3 4 5 ; 6 7 8] ;% norm(A) = sqrt(max(eig(A'*A))) = 14.2267 if norm(s-s0) < 0.001 break ;ends0 = s ;endfigure(1) ;clf ;hold on ;plot(x(y==1,1),x(y==1,2),'bo') ;plot(x(y==2,1),x(y==2,2),'rx') ;plot(x(y==3,1),x(y==3,2),'gv') ;

生成的图像如图所示。

在这个例子中,K均值聚类算法得到了较好的聚类结果。。。

K均值聚类以及matlab实现相关推荐

  1. k均值聚类图像分割matlab代码_用K均值聚类法为人类拍摄的首张黑洞照片进行分割...

    众所周知,人类最近拍摄了首张黑洞照片.网友们纷纷表示,这明明就是一个甜甜圈嘛!以前以为黑洞是这个世界上最最高冷的存在,而此刻突然现出真身,形象却是如此的人畜无害!不但如此,还勾起了网友的食欲!简直是罪 ...

  2. K均值聚类关于初始聚类中心的探讨(matlab程序)

    对应之前发过的:K均值聚类关于初始聚类中心的探讨,补发MATLAB的程序代码. matlab程序: 1. %利用传统K均值随机选取点聚类 clear all; close all; clc; %生成五 ...

  3. 聚类分析 | MATLAB实现k-Means(k均值聚类)分析

    目录 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k-均值聚类简介 相关描述 程序设计 学习小结 参考资料 致谢 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k ...

  4. matlab—— K均值聚类算法的步骤和实例

    一.K均值聚类法分为如下几个步骤: 1. 初始化聚类中心 (1)凭经验选择.根据具体问题,凭经验从样本集中选出个 K 比较合适的样本作为初始聚类中心. (2)用前 K 个样本作为初始聚类中心. (3) ...

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

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

  6. matlab传递闭包动态聚类图,用SPSS制作3D散点图全方位动态展示K均值聚类效果

    SPSS系统聚类输出的树状图广受用户喜爱,二阶聚类也可以输出一系列美观的可视化图形用来观察聚类效果,但我们发现Kmeans均值聚类没有提供可视化程度高的图形,那怎么办,我们自己来制作. 数据小兵推荐使 ...

  7. 计算机视觉与深度学习 | 使用K均值聚类实现基于颜色的分割(matlab版)

    ================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...

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

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

  9. matlab调用kmeans_使用 K 均值聚类实现基于颜色的分割

    步骤 1:读取图像 在 hestain.png 中读取,这是一个带有苏木精和曙红染色组织 (H&E) 的图像.这种染色方法有助于病理学家区分不同组织类型. he = imread('hesta ...

最新文章

  1. NYOJ 660 逃离地球
  2. java自定义异常怎么做
  3. boost::signals2模块实现为类定义预析构函数的最小示例的测试程序
  4. C语言实现基数排序Radix sort算法之二(附完整源码)
  5. 在C#调用C++的DLL简析(二)—— 生成托管dll
  6. python 只去除英文_如何使用 Python 制作词云(Word Cloud)-英文词云篇
  7. 18C 也不能避免 SQL 解析的 Bug
  8. 《C++ Primer Plus》第15章 友元、异常和其他 学习笔记
  9. bzoj 2442: [Usaco2011 Open]修剪草坪(单调队列)
  10. mysql8采用caching-sha2-password加密
  11. ShellExecute的各种用法 [转帖于 2009-05-020 21:15]
  12. 华为U2000客户端安装过程
  13. MTK.SP Flash Tool v6.2208 联发科V6版本 线刷工具教程下载
  14. echarts饼图自动动画_echarts饼图定时自动切换
  15. UE4_关于Roll,Yaw,Pitch,Rotator的理解
  16. 列出Excel所有sheet名称
  17. OCAD应用:双高斯照相物镜系统结构优化设计
  18. ATmega128 串口使用注意事项
  19. 360欺骗4亿网民 胡乱解读“超级工厂”病毒 ——卡巴斯基关于360胡乱解读“超级工厂”的声明
  20. Advanced System Care官方下载(附激活码)

热门文章

  1. 用户在Eightcap易汇平台可以交易哪些产品?投资选择多吗?
  2. 关于selenium, 你还在因为chromedriver的版本与Chrome的版本不一致,需要手动更新chromedriver而烦恼吗?
  3. QML Repeater
  4. Unity3d游戏制作 建模与蒙皮
  5. 利用matplotlib绘制圆环图的案例
  6. 干货!用神经网络来表达隐式场景流
  7. Ping 请求找不到主机 eeee.dev5.bbbbbbb/eeeeeee/。请检查该名称,然后重试。
  8. Hbase(二)hbase建表
  9. java学习之路之javaSE基础1
  10. CCF CSP 压缩编码