msww.net
当前位置:首页 >> 用MATLAB 实现k%mEAns算法数据 DAtA随机产生100个... >>

用MATLAB 实现k%mEAns算法数据 DAtA随机产生100个...

%随机获取100个点X =[randn(100,2)+ones(100,2);randn(100,2)+[ones(100,1),-ones(100,1)]];opts =statset('Display','final');%调用Kmeans函数%X N*P的数据矩阵%Idx N*1的向量,存储的是每个点的聚类标号%Ctrs K*P的矩阵,存储的是K个聚

首先给出原始数据{x1,x2,,xn},这些数据没有被标记的.初始化k个随机数据u1,u2,,uk.这些xn和uk都是向量.根据下面两个公式迭代就能求出最终所有的u,这些u就是最终所有类的中心位置.公式一:意思就是求出所有数据和初始化的随机

首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止.一般都采用均方差作为标准测度函数. k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开.

matlab 自带kmeans是k-均值聚类函数.例如:rng default; X = [randn(100,2)*0.75+ones(100,2); randn(100,2)*0.5-ones(100,2)];opts = statset('Display','final');[idx,C,sumd,D] = kmeans(X,2,'Distance','cityblock','Replicates',5,'Options',opts)

matlab中有Kmean算法查查帮助

matlab本身就有kmeans 默认随机产生初始值,里面可以选择设置一些参数,包括设定初始聚类中心.

直接将k个随机数组组成一个矩阵比较好吧.参考代码如下:k = 100;A=randi([0,1],k,100); %生成k行100列01矩阵这样需要哪个数组直接用A(k,:)表示即可

对 直接对h进行聚类 因为此时h已经是原矩阵提取特征后的矩阵,对他聚类会比原矩阵好很多

1、100*100的矩阵可以通过reshape命令可认为和1*10000的矩阵是等价的;2、也就是说相当于从一排10000个0数组中无重复抽取100个位子,将其数据设为-1;3、上面问题又相当于从数组[0 0 0 0 0]中无重复抽取2个数,将其设置为-1;4、至此原问题已经很简单明了了.

data=input('请输入样本数据矩阵:'); m=size(data,1); n=size(data,2); counter=0; k=input('请输入聚类数目:'); whilek>m disp('您输入的聚类数目过大,请输入正确的 k 值'); k=input('请输入聚类数目:'); end if k==1 disp('聚类数

网站首页 | 网站地图
All rights reserved Powered by www.msww.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com