K-means自己写的代码,简单易懂,但是貌似效率有点低,没怎么优化
来源:互联网 发布:linux dhcp client 编辑:程序博客网 时间:2024/04/29 12:28
%N是数据一共分多少类%data是输入的不带分类标号的数据%u是每一类的中心%re是返回的带分类标号的数据%我们只需要得到聚类中心即可,所以只返回一个矩阵变量function [u]=k_means(data,N) [m n]=size(data); %m是数据个数,n是数据维数 ma=zeros(n); %每一维最大的数 mi=zeros(n); %每一维最小的数 u=zeros(N,n); %随机初始化,最终迭代到每一类的中心位置 N中心个数 index=zeros(m); %m个数据的类别 for i=1:n ma(i)=max(data(:,i)); %每一维最大的数 mi(i)=min(data(:,i)); %每一维最小的数 for j=1:N u(j,i)=ma(i)+(mi(i)-ma(i))*rand(); %随机初始化,不过还是在每一维[min max]中初始化好些 end end for iteration =1:5 %我们就迭代5次就够了 %更新index矩阵,也就是标记矩阵 for i=1:m %更新每个数据点标记 min1=Inf; for j=1:N dist=0;%计算欧式距离,此处为简便不加sqrt了 for k=1:n dist=dist+(data(i,k)-u(j,k))*(data(i,k)-u(j,k)); end if(dist<min1) min1=dist; min_num=j; end end index(i)= min_num;%最后一次更新的min_num end %更新聚类中心 for i=1:N %更新每个聚类中心 index_num=0; index_sum=zeros(1,n); for j=1:m if(i==index(j)) %这个点属于第i个类 index_num=index_num+1; index_sum=index_sum+data(index(j),:); end end if(index_num~=0) u(i,:)=index_sum/index_num; end end end end
0 0
- K-means自己写的代码,简单易懂,但是貌似效率有点低,没怎么优化
- K-Means++的代码
- 简单的K-means算法C语言实现代码
- K-Means的简单实现
- K-means的简单实现
- Bag-Of-Words中K-Means聚类的效率优化
- 低耦合,简单易懂
- 简单的QT绘图程序(把全部的点都记录下来,然后在paintEvent里使用drawLine函数进行绘制,貌似效率很低。。。)
- HDU 1056 叠木块 程序效率低,怎么优化?
- sql优化, sql怎么写效率高
- K-means优化
- K-means基于的简单实现
- K-MEANS的研究及matlab代码
- 基于python3的k-means代码实现
- 自己写的HTML5 canvas动画制作函数,非常简单易懂
- k-means优化 & k-means距离的选择 &k-medoids对比
- k-means 简单实现
- 自己写 的trim有点问题
- D2014_4_19
- 维数灾难
- 软考死锁计算题设系统中有R类资源m个,现有n个进程互斥使用
- Python PIL模块整理
- <c:if>
- K-means自己写的代码,简单易懂,但是貌似效率有点低,没怎么优化
- 菜根谭
- N皇后问题
- PHP扩展安装之PECL
- java收发邮件
- 笔记21--ExpandableListView
- 项目实战之中小网站数据缓存的设计与实现
- Apache OFbiz entity engine源码解读
- ajax提交中文乱码