K均值聚类以及matlab实现
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实现相关推荐
- k均值聚类图像分割matlab代码_用K均值聚类法为人类拍摄的首张黑洞照片进行分割...
众所周知,人类最近拍摄了首张黑洞照片.网友们纷纷表示,这明明就是一个甜甜圈嘛!以前以为黑洞是这个世界上最最高冷的存在,而此刻突然现出真身,形象却是如此的人畜无害!不但如此,还勾起了网友的食欲!简直是罪 ...
- K均值聚类关于初始聚类中心的探讨(matlab程序)
对应之前发过的:K均值聚类关于初始聚类中心的探讨,补发MATLAB的程序代码. matlab程序: 1. %利用传统K均值随机选取点聚类 clear all; close all; clc; %生成五 ...
- 聚类分析 | MATLAB实现k-Means(k均值聚类)分析
目录 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k-均值聚类简介 相关描述 程序设计 学习小结 参考资料 致谢 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k ...
- matlab—— K均值聚类算法的步骤和实例
一.K均值聚类法分为如下几个步骤: 1. 初始化聚类中心 (1)凭经验选择.根据具体问题,凭经验从样本集中选出个 K 比较合适的样本作为初始聚类中心. (2)用前 K 个样本作为初始聚类中心. (3) ...
- K均值聚类算法的MATLAB实现
K均值聚类算法的MATLAB实现 1.K-均值聚类法的概述 之前在参加数学建模的过程中用到过这种聚类方法,但是当时只是简单知道了在matlab中如何调用工具箱进行聚类,并不是特别清楚它的原理.最近因为 ...
- matlab传递闭包动态聚类图,用SPSS制作3D散点图全方位动态展示K均值聚类效果
SPSS系统聚类输出的树状图广受用户喜爱,二阶聚类也可以输出一系列美观的可视化图形用来观察聚类效果,但我们发现Kmeans均值聚类没有提供可视化程度高的图形,那怎么办,我们自己来制作. 数据小兵推荐使 ...
- 计算机视觉与深度学习 | 使用K均值聚类实现基于颜色的分割(matlab版)
================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...
- 【模式识别】K均值聚类算法应用实验报告及MATLAB仿真
一. 实验目的 1.掌握K均值聚类算法的原理和实现过程: 2.掌握K均值聚类算法的应用方法. 二. 实验内容 1.彩色图像分割 选择一幅图像,分别按三种颜色数进行彩色图像分割的结果(原图和分割图).步 ...
- matlab调用kmeans_使用 K 均值聚类实现基于颜色的分割
步骤 1:读取图像 在 hestain.png 中读取,这是一个带有苏木精和曙红染色组织 (H&E) 的图像.这种染色方法有助于病理学家区分不同组织类型. he = imread('hesta ...
最新文章
- NYOJ 660 逃离地球
- java自定义异常怎么做
- boost::signals2模块实现为类定义预析构函数的最小示例的测试程序
- C语言实现基数排序Radix sort算法之二(附完整源码)
- 在C#调用C++的DLL简析(二)—— 生成托管dll
- python 只去除英文_如何使用 Python 制作词云(Word Cloud)-英文词云篇
- 18C 也不能避免 SQL 解析的 Bug
- 《C++ Primer Plus》第15章 友元、异常和其他 学习笔记
- bzoj 2442: [Usaco2011 Open]修剪草坪(单调队列)
- mysql8采用caching-sha2-password加密
- ShellExecute的各种用法 [转帖于 2009-05-020 21:15]
- 华为U2000客户端安装过程
- MTK.SP Flash Tool v6.2208 联发科V6版本 线刷工具教程下载
- echarts饼图自动动画_echarts饼图定时自动切换
- UE4_关于Roll,Yaw,Pitch,Rotator的理解
- 列出Excel所有sheet名称
- OCAD应用:双高斯照相物镜系统结构优化设计
- ATmega128 串口使用注意事项
- 360欺骗4亿网民 胡乱解读“超级工厂”病毒 ——卡巴斯基关于360胡乱解读“超级工厂”的声明
- Advanced System Care官方下载(附激活码)