kmeans聚类算法matlab实现
来源:互联网 发布:如果关羽不失荆州 知乎 编辑:程序博客网 时间:2024/04/28 10:05
运行界面(可以支持任意维数据)
单介绍下kmeans算法流程:
假设要把样本集分为c个类别,算法描述如下:
(1)适当选择c个类的初始中心;
(2)在第k次迭代中,对任意一个样本,求其到c各中心的距离,将该样本归到距离最短的中心所在的类;
(3)利用均值等方法更新该类的中心值;
(4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。
该算法的最大优势在于简洁和快速。算法的关键在于初始中心的选择和距离公式。
matlab实现:
function [ class count]=k_means(data,k);%clear%load testdata.mat%k=2;sum=size(data,1);for i=1:k centroid(i,:)=data(floor(sum/k)*(i-1)+1,:);endticck=0;while 1 temp=zeros(1,2);; count=zeros(1,k); ck=ck+1 for i=1:sum for j=1:k dist(j)=norm(data(i,:)-centroid(j,:)); end [a min_dist]=min(dist); count(min_dist)=count(min_dist)+1; class(min_dist,count(min_dist))=i; end %重新计算类中心 for i=1:k for j=1:count(i) temp=temp+data(class(i,j),:); end temp_centroid(i,:)=temp/(count(i)); temp(1,:)=0; % temp_centroid(i,:)=re_calculate(class(i,:),count(i),tdata); end %计算新的类中心和原类中心距离centr_dist; for i=1:k centr_dist(i)=norm(temp_centroid(i,:)-centroid(i,:)); end if max(centr_dist)<=0 break; else for i=1:k centroid(i,:)=temp_centroid(i,:); %重新进行前俩不 end end endtoc
数据点是鼠标插进去的,通过界面可以很清晰的看到分类过程,功能截图如下:
源码连接:kmeans聚类算法源码
0 0
- kmeans聚类算法matlab实现
- kmeans聚类算法及matlab实现
- MATLAB并行实现Kmeans聚类算法
- matlab实现kmeans算法
- 聚类算法KMeans和KMedoid 的Matlab实现
- matlab下的Kmeans聚类算法
- Kmeans聚类算法及其matlab源码
- kmeans聚类及Matlab实现
- Kmeans算法详解及MATLAB实现
- Kmeans算法详解及MATLAB、Python实现
- 聚类算法之KMeans(Java实现)
- 聚类算法之KMeans(Java实现)
- 聚类算法之KMeans(Java实现)
- 聚类算法之KMeans(Java实现)
- KMeans聚类算法Hadoop实现
- 聚类算法之KMeans(Java实现)
- Kmeans聚类算法及其Python实现
- Kmeans聚类算法及其java实现
- BST
- 关于android开发中涉及到的java知识:集合类(三)
- 编程学习笔记4--字符串处理
- 第15周项目3-在OJ上玩指针-(1)
- js日期比较(yyyy-mm-dd)
- kmeans聚类算法matlab实现
- OSPF过滤的方式
- boolean android.content.SharedPreferences.getBoolean(String key, boolean defValue)
- 第15周项目3-在OJ上玩指针-(2)
- 扬州旅游app(四)
- 2014-Aisa-Shanghai-onsite
- 1、按键实验
- 互联网黑市分析:网络彩票内幕--TOMsInsight 2014.09.09
- zookeeper在单机上伪集群测试时,出现Unable to start AdminServer, exiting abnormally