三九宝宝网宝宝教育学龄段教育

matlab怎么实现有序聚类分析

02月11日 编辑 39baobao.com

[电力系统短路分析]1、潮流计算,研究电力系统稳态运行情况的一种基本电气计算,常规潮流计算的任务是根据给定的运行条件和网路结构确定整个系统的运行状态,如各母线上的电压(幅值及相角)、网络中的...+阅读

本文重点是展示如何用Matlab来进行聚类分析。如果有需要解答的问题请留言,笔者会尽其所能地回答。内容展示如何使用MATLAB进行聚类分析生成随机二维分布图形,三个中心K均值聚类分层聚类重新调用K均值法将分类的结果展示出来运用高斯混合分布模型进行聚类分析通过AIC准则寻找最优的分类数展示如何使用MATLAB进行聚类分析分别运用分层聚类、K均值聚类以及高斯混合模型来进行分析,然后比较三者的结果生成随机二维分布图形,三个中心% 使用高斯分布(正态分布)% 随机生成3个中心以及标准差s = rng(5,'v5normal');mu = round((rand(3,2)-0.5)*19)+1;sigma = round(rand(3,2)*40)/10+1;X = [mvnrnd(mu(1,:),sigma(1,:),200); ... mvnrnd(mu(2,:),sigma(2,:),300); ... mvnrnd(mu(3,:),sigma(3,:),400)];% 作图P1 = figure;clf;scatter(X(:,1),X(:,2),10,'ro');title('研究样本散点分布图') K均值聚类% 距离用传统欧式距离,分成两类[cidx2,cmeans2,sumd2,D2] = kmeans(X,2,'dist','sqEuclidean');P2 = figure;clf;[silh2,h2] = silhouette(X,cidx2,'sqeuclidean'); 从轮廓图上面看,第二类结果比较好,但是第一类有部分数据表现不佳。

有相当部分的点落在0.8以下。分层聚类eucD = pdist(X,'euclidean');clustTreeEuc = linkage(eucD,'average');cophenet(clustTreeEuc,eucD);P3 = figure;clf;[h,nodes] = dendrogram(clustTreeEuc,20);set(gca,'TickDir','out','TickLength',[.002 0],'XTickLabel',[]);可以选择dendrogram显示的结点数目,这里选择20 。结果显示可能可以分成三类重新调用K均值法改为分成三类[cidx3,cmeans3,sumd3,D3] = kmeans(X,3,'dist','sqEuclidean');P4 = figure;clf;[silh3,h3] = silhouette(X,cidx3,'sqeuclidean'); 图上看,比前面的结果略有改善。

将分类的结果展示出来P5 = figure;clfptsymb = {'bo','ro','go',',mo','c+'};MarkFace = {[0 0 1],[.8 0 0],[0 .5 0]};hold onfor i =1:3 clust = find(cidx3 == i); plot(X(clust,1),X(clust,2),ptsymb{i},'MarkerSize',3,'MarkerFace',MarkFace{i},'MarkerEdgeColor','black'); plot(cmeans3(i,1),cmeans3(i,2),ptsymb{i},'MarkerSize',10,'MarkerFace',MarkFace{i});endhold off 运用高斯混合分布模型进行聚类分析分别用分布图、热能图和概率图展示结果 等高线% 等高线options = statset('Display','off');gm = gmdistribution.fit(X,3,'Options',options);P6 = figure;clfscatter(X(:,1),X(:,2),10,'ro');hold onezcontour((x,y) pdf(gm,[x,y]),[-15 15],[-15 10]);hold offP7 = figure;clfscatter(X(:,1),X(:,2),10,'ro');hold onezsurf((x,y) pdf(gm,[x,y]),[-15 15],[-15 10]);hold offview(33,24)热能图cluster1 = (cidx3 == 1);cluster3 = (cidx3 == 2);% 通过观察,K均值方法的第二类是gm的第三类cluster2 = (cidx3 == 3);% 计算分类概率P = posterior(gm,X);P8 = figure;clfplot3(X(cluster1,1),X(cluster1,2),P(cluster1,1),'r.')grid on;hold onplot3(X(cluster2,1),X(cluster2,2),P(cluster2,2),'bo')plot3(X(cluster3,1),X(cluster3,2),P(cluster3,3),'g*')legend('第 1 类','第 2 类','第 3 类','Location','NW')clrmap = jet(80); colormap(clrmap(9:72,:))ylabel(colorbar,'Component 1 Posterior Probability')view(-45,20);% 第三类点部分概率值较低,可能需要其他数据来进行分析。

% 概率图P9 = figure;clf[~,order] = sort(P(:,1));plot(1:size(X,1),P(order,1),'r-',1:size(X,1),P(order,2),'b-',1:size(X,1),P(order,3),'y-');legend({'Cluster 1 Score' 'Cluster 2 Score' 'Cluster 3 Score'},'location','NW');ylabel('Cluster Membership Score');xlabel('Point Ranking'); 通过AIC准则寻找最优的分类数高斯混合模型法的最大好处是给出分类好坏的标准AIC = zeros(1,4);NlogL = AIC;GM = cell(1,4);for k = 1:4 GM{k} = gmdistribution.fit(X,k); AIC(k)= GM{k}.AIC; NlogL(k) = GM{k}.NlogL;end[minAIC,numComponents] = min(AIC); 按AIC准则给出的最优分类数为: 3 对应的AIC值为: 8647.63后记(1)pluskid指出K均值算法的初值对结果很重要,但是在运行时还没有发现类似的结果。

也许Mathworks对该算法进行过优化。有时间会仔细研究下代码,将结果放上来。转载仅供参考,版权属于原作者

以下为关联文档:

电力系统短路故障分析第一问题借用已有答案:不对称故障会产生负序电流和电压。而不对称接地故障或断线故障会产生零序电压,是否产生零序电流取决于系统的接地运行方式。 负序电流流过定子绕组在气...

如何用matlab实现无限大功率电源供电系统的三相短路分析暂态上机计算教学指导书(适用于Matlab) 一、基础知识1. 为完成本次设计,需要掌握的Matlab的基础知识有:数组的创建和计算,循环语句,条件选择语句,条件判断语句,绘制二维图的语句;2....

在混联电路中怎样分析局部短路的原因或整体短路原因以一相对地的短路故障最多,约占全部故障的90%,用导线或开关直接将某电路元件或负载的两端连接起来。(这是因需要并不会导致因电流过大而发生烧毁现象的安全连接。电气线路上,其...

我想请教下小米2是买个工程机好呢还是等正式板的好谁给我分析所谓手机工程机就是新机型在手机下线之前,都要出用于测试用的机器。主要是测试版本和硬件是否符合标准等。主要使用范围在公司内部及一些手机爱好者或是发烧用户,一般情况下是...

如何用excel做回归分析以Excel2010为例。 1、“开发工具”选项卡 中单击“加载项”组中的“加载项”按钮,打开“加载宏”对话框。如下图。勾选 “分析工具库”。 2、“数据”选项卡中“分析”组中...

用excel怎么做数据分析回归方法/步骤 打开Excel.2010,首先输入课本例题7.1的全部数据,2012年各地区农村居民家庭人均纯收入与人均消费支出, 做题之前,我们先为Excel.2010注入回归分析的相关内容,点击【文件...

假如你要开一家奶茶店你会怎么选地址并分析一下需求市场目前,奶茶店的消费市场是比较好的,这成为很多小本创业者的优质项目,对于创业者来说,确定好了合作项目,选址就成为开店的重中之重了,很多人创业者在选址上可谓是煞费苦心,他们不知道...

西数移动硬盘故障求分析如果硬盘原因导致电脑蓝屏,按照“先软后硬”的原则,一般可以采用硬盘修复或更换新硬盘的办法进行解决。 硬盘修复是通过软件对硬盘进行修复。这类修复软件包括:系统自带的硬盘...

页面调度算法的实现分析源码dev c++ #include#include#includetypedef struct mem { int num; int v; }meme; static int process[1024],L,M; void LRU(); void FIFO(); void get(); int menu(); int m...

推荐阅读
图文推荐