我的 kmeans matlab 代码
2015-01-24 14:14
218 查看
最近,接触了一下聚类算法。其中最简单最经典的莫过于 kmeans 算法。我了解了算法之后,着手编写了 matlab 代码。我的代码只有20几行,比起网上的很多代码都要简洁。
function [cls,ctr]=kmeans(data,K,tol) % Kmeans % input: data K tol % output: cls: clusters, ctr: centroids % example: % data=rand(100,2); % K=4;tol=0.01; % [cls,ctr]=kmeans(data,K,tol); % clr=['r','k','g','b']; % for k=1:K % plot(cls{k}(:,1),cls{k}(:,2),[clr(k),'o']);hold on; % plot(ctr(k,1),ctr(k,2),[clr(k),'+']);hold on; % end if nargin<=2,tol=0; end ctr=data(1:K,:); N=size(data,1); while 1 % Assignment step cls=cell(1,K); % K clusters for l=1:N dl=data(l,:); d=norm(dl-ctr(1,:));ind=1; for k=2:K if norm(dl-ctr(k,:))<d, ind=k;d=norm(dl-ctr(k,:)); end end cls{ind}=[cls{ind};dl]; % data l is in ind-th cluster end % Update step S=0; for k=1:K % calculate new centroids newctr(k,:)=mean(cls{k}); S=S+norm(newctr(k,:)-ctr(k,:)); end ctr=newctr; % update the centroids if S<=tol, break; end end
相关文章推荐
- matlab kmeans 代码
- K-MEANS的研究及matlab代码
- K-means 聚类算法MATLAB代码
- 图像细化matlab代码实现
- 嵌入式小波零树(EZW)算法的过程详解和Matlab代码(4)运行示例
- matlab 通用神经网络代码
- matlab 水印代码1转载lilizong
- 嵌入式小波零树(EZW)算法的过程详解和Matlab代码(3)解码过程
- 生成集合[n]的所有k-子集MATLAB代码
- 简单的MATLAB代码
- HMM matlab代码实现+分析
- 转帖](译)MATLAB代码矢量化指南-1
- matlab kmeans out of memory
- MATLAB Java builder的使用——在JAVA中调用MATLAB代码
- 光栅图形学之直线段扫描算法(中点画线法之matlab代码)
- 到底怎样才能把下面的Matlab代码变成VBA形式啊
- [读书笔记]Matlab代码优化
- 嵌入式小波零树(EZW)算法的过程详解和Matlab代码(2)编码过程(081227-补充quantifier程序)
- Matlab代码:为图像添加信噪比为SNR db的高斯噪声
- 傅里叶变换的Matlab代码与注释