请教高手:用matlab做聚类分析,节点数多于30个怎么画聚类图啊?
问题补充:请教高手:用matlab做聚类分析,节点数多于30个怎么画聚类图啊?十分感谢。
●x=[数据]; %n行p列(n不宜大于80,否则系统聚类的线条密集,不易区分)x=pdist(x); %计算成对比较的(欧氏)距离z=linkage(y,’average’); % 用类平均法(‘average’)和/或最小组内平方和法(‘ward’)系统聚类(两种用得较多的方法)dendrgram(z,0) , %画出系统聚类图 查看原帖>>
遗传算法改进的模糊C-均值聚类MATLAB源码范例
问题补充:十万火急:此改进的模糊C-在MATLAB上运行有问题,请教高手在此源代码基础上作下修改,将K.N.LB.UB等变量赋值,写出一个示范程序,要直接能在MATLAB上运行的,最好再加些注释,不胜感激!可以的话继续加分!
●function [BESTX,BESTY,ALLX,ALLY]=GAFCM(K,N,Pm,LB,UB,D,c,m)%% 此函数实现遗传算法,用于模糊C-均值聚类%% 输入参数列表% K 迭代次数% N 种群规模,要求是偶数% Pm 变异概率% LB 决策变量的下界,M×1的向量% UB 决策变量的上界,M×1的向量% D 原始样本数据,n×p的矩阵% c 分类个数% m 模糊C均值聚类数学模型中的指数%% 输出参数列表% BESTX K×1细胞结构,每一个元素是M×1向量,记录每一代的最优个体% BESTY K×1矩阵,记录每一代的最优个体的评价函数值% ALLX K×1细胞结构,每一个元素是M×N矩阵,记录全部个体% ALLY K×N矩阵,记录全部个体的评价函数值%% 第一步:M=length(LB);%决策变量的个数%种群初始化,每一列是一个样本farm=zeros(M,N);for i=1:M x=unifrnd(LB(i),UB(i),1,N); farm(i,:)=x;end%输出变量初始化ALLX=cell(K,1);%细胞结构,每一个元素是M×N矩阵,记录每一代的个体ALLY=zeros(K,N);%K×N矩阵,记录每一代评价函数值BESTX=cell(K,1);%细胞结构,每一个元素是M×1向量,记录每一代的最优个体BESTY=zeros(K,1);%K×1矩阵,记录每一代的最优个体的评价函数值k=1;%迭代计数器初始化%% 第二步:迭代过程while k<=K%% 以下是交叉过程 newfarm=zeros(M,2*N); Ser=randperm(N);%两两随机配对的配对表 A=farm(:,Ser(1)); B=farm(:,Ser(2)); P0=unidrnd(M-1); a=[A(1:P0,:);B((P0+1):end,:)];%产生子代a b=[B(1:P0,:);A((P0+1):end,:)];%产生子代b newfarm(:,2*N-1)=a;%加入子代种群 newfarm(:,2*N)=b;??? for i=1:(N-1) A=farm(:,Ser(i)); B=farm(:,Ser(i+1)); P0=unidrnd(M-1); a=[A(1:P0,:);B((P0+1):end,:)]; b=[B(1:P0,:);A((P0+1):end,:)]; newfarm(:,2*i-1)=a; newfarm(:,2*i)=b; end FARM=[farm,newfarm]; %% 选择复制 SER=randperm(3*N); FITNESS=zeros(1,3*N); fitness=zeros(1,N); for i=1:(3*N) Beta=FARM(:,i); FITNESS(i)=FIT(Beta,D,c,m); end for i=1:N f1=FITNESS(SER(3*i-2)); f2=FITNESS(SER(3*i-1)); f3=FITNESS(SER(3*i)); if f1<=f2&&f1<=f3 farm(:,i)=FARM(:,SER(3*i-2)); fitness(:,i)=FITNESS(:,SER(3*i-2)); elseif f2<=f1&&f2<=f3 farm(:,i)=FARM(:,SER(3*i-1)); fitness(:,i)=FITNESS(:,SER(3*i-1)); else farm(:,i)=FARM(:,SER(3*i)); fitness(:,i)=FITNESS(:,SER(3*i)); end end %% 记录最佳个体和收敛曲线 X=farm; Y=fitness; ALLX{k}=X; ALLY(k,:)=Y; minY=min(Y); pos=find(Y==minY); BESTX{k}=X(:,pos(1)); BESTY(k)=minY;???%% 变异 for i=1:N if Pm>rand&&pos(1)~=i AA=farm(:,i); BB=GaussMutation(AA,LB,UB); farm(:,i)=BB; end end disp(k); k=k+1;end%% 绘图BESTY2=BESTY;BESTX2=BESTX;for k=1:K TempY=BESTY(1:k); minTempY=min(TempY); posY=find(TempY==minTempY); BESTY2(k)=minTempY; BESTX2{k}=BESTX{posY(1)};endBESTY=BESTY2;BESTX=BESTX2;plot(BESTY,’-ko’,’MarkerEdgeColor’,’k’,’MarkerFaceColor’,’k’,’MarkerSize’,2)ylabel(‘函数值’)xlabel(‘迭代次数’)grid on忘记写了,这个是源代码!谢谢谢谢!
在matlab中做模糊C均值聚类(fcm)算法如何体现初始隶属度?
问题补充:如题
●我贴部分FCM的Matlab代码: expo = options(1); % Exponent for U max_iter = options(2); % Max. iteration min_impro = options(3); % Min. improvement display = options(4); % Display info or not obj_fcn = zeros(max_iter, 1); % Array for objective function U = initfcm(cluster_n, data_n); % Initial fuzzy partition % Main loop for i = 1:max_iter, [U, center, obj_fcn(i)] = stepfcm(data, U, cluster_n, expo); if display, fprintf(‘Iteration count = %d, obj. fcn = %f\n’, i, obj_fcn(i)); end % check termination condition if i > 1, if abs(obj_fcn(i) – obj_fcn(i-1)) < min_impro, break; end, end end 其中 U = initfcm(cluster_n, data_n); % Initial fuzzy partition 这个就是初始化划分矩阵,随机产生一个隶属度矩阵, 代码如下: U = rand(cluster_n, data_n); col_sum = sum(U); U = U./col_sum(ones(cluster_n, 1), :); 上面就是它初始化的一个隶属度矩阵, cluster_n行,data_n列。 即一列中从上到下表示每个样本隶属与每一类的隶属度。 然后在算法中不断迭代, 最后得到的还是如此大的一个矩阵,代表每个样本隶属与每一类的隶属度 然后选择最大的那个就是,它就属于那一类。
模糊c均值聚类算法matlab程序,谁有能运行的,急求
问题补充:2314436609
●我有这样的一个程序,不知你满意否?我的qq2674716548
k-means聚类分析对于层次聚类分析有什么特点
问题补充:k-means聚类分析对于层次聚类分析有什么特点
●K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。 k个初始类聚类中心点的选取对聚类结果具有较大的 公式 影响,因为在该算法第一步中是随机的选取任意k个对象作为初始聚类的中心,初始地代表一个簇。该算法在每次迭代中对数据集中剩余的每个对象,根据其与各个簇中心的距离将每个对象重新赋给最近的簇。当考察完所有数据对象后,一次迭代运算完成,新的聚类中心被计算出来。如果在一次迭代前后,J的值没有发生变化,说明算法已经收敛。 算法过程如下: 1)从N个文档随机选取K个文档作为质心 2)对剩余的每个文档测量其到每个质心的距离,并把它归到最近的质心的类 3)重新计算已经得到的各个类的质心 4)迭代2~3步直至新的质心与原质心相等或小于指定阈值,算法结束 具体如下: 输入:k, data[n]; (1) 选择k个初始中心点,例如c[0]=data[0],…c[k-1]=data[k-1]; (2) 对于data[0]….data[n],分别与c[0]…c[k-1]比较,假定与c[i]差值最少,就标记为i; (3) 对于所有标记为i点,重新计算c[i]={ 所有标记为i的data[j]之和}/标记为i的个数; (4) 重复(2)(3),直到所有c[i]值的变化小于给定阈值。 工作原理 K-MEANS算法的工作原理及流程 K-MEANS算法 输入:聚类个数k,以及包含 n个数据对象的数据库。 输出:满足方差最小标准的k个聚类。 处理流程 (1) 从 n个数据对象任意选择 k 个对象作为初始聚类中心; (2) 根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分; (3) 重新计算每个(有变化)聚类的均值(中心对象) (4) 循环(2)到(3)直到每个聚类不再发生变化为止 k-means 算法接受输入量 k ;然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。 工作过程k-means 算法的工作过程 说明如下:首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然 后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。一般都采用均方差作为标准测度函数。k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。
今天的文章matlab根据数值大小聚类,[matlab聚类分析]请教高手:用matlab做聚类分析,节点数多于30个怎么画聚类图啊?…分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/32854.html