word linkage 选择合适的聚类个数matlab code

clear
load fisheriris
X = meas;
m  = size(X,2);
 % load machine
%  load census
% % X = meas;
% X=X(1:2000,:);
d = pdist(X,‘euclidean‘);

Z = linkage(d,‘ward‘);%Create a hierarchical binary cluster tree using linkage
% [Hr,Tr]=dendrogram(Z, 0);  %generates a dendrogram plot of the hierarchical binary cluster tree
% h_gca = gca;
% h_gca.TickDir = ‘out‘;
% h_gca.TickLength = [.002 0];
% h_gca.XTickLabel = [];
% c = cluster

val0=eval(vpa(Z(:,3),5));

t=1; n(1)=0; val=val0(1); f(1)=val;
for i=1:length(val0)
    if val0(i)==val
        n(t)=n(t)+1;
        continue
    else
        t=t+1;
        val=val0(i);
        n(t)=1;
        f(t)=val;
        continue
    end
end
figure(2)
fsum=cumsum(n);
x= length(val0)-fsum;
plot(x, f, ‘o-‘,‘LineWidth‘, 2)
xlabel(‘Number of Clusters‘)
ylabel(‘Merge Distance‘)
title(‘A sample evalution graph‘)

% for i = 1: length(x)
%     y= cluster(Z, x(i));
%     B = Amean(X, y)
% end

x =x(end:-1:1);
f=f(end:-1:1);

i=0;
flag = 1;  b =  length(x); minerror_c_old = b-1;
while flag ~=0 & b>=20
    RMSE = [];
    for c = 2: (b-2)
        x1 = x(1:c); y1 = f(1 : c);
        x2 = x(c:b); y2 = f(c : b);
        [~, s1] = polyfit(x1, y1,1);
        [~, s2] = polyfit(x2, y2,1);
        RMSE(c-1) = ((c-1)/(b-1))*s1.normr + ( (b-c)/(b-1))*s2.normr;
    end
     [~, minerror_c ]= min(RMSE);
     minerror_c= minerror_c+1;
     if  minerror_c >= minerror_c_old
         break
     else
         minerror_c_old = minerror_c;
%           b = b -1;
          b = 2*minerror_c ;
     end
     i=i+1
end

hold on
plot(x( minerror_c), f( minerror_c),‘ro‘)
c =x( minerror_c)

labels = cluster(Z, c);

labs = unique(labels);
CORR = zeros();
for i = 1:length(labs)
    corri = cov(X(labels == i, :));
    CORR = CORR +  corri;
end

  

时间: 2024-10-26 10:34:30

word linkage 选择合适的聚类个数matlab code的相关文章

MATLAB中选择合适的数据类型以节约内存

在做大矩阵的运算,发现占用太多内存,于是在好友jcyao的提醒下,将double类型改为uint8类型内存是原来的1/8.(我的问题可以使用整形,其他问题不一定使用).在网上搜到一篇如何选择变量类型的文章,写的很清楚,先摘下来.其网站matlabtips.com 上面有很多好的建议和优化方法. Choose your variables wisely- Posted on March 21, 2012 by Jerome I am stuck home with a big fever so I

谱聚类方法-MATLAB

Matlab提供了两种方法进行聚类分析. 一种是利用 clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法: 另一种是分步聚类:(1)找到数据集合中变量两两之间的相似性和非相似性,用pdist函数计算变量之间的距离:(2)用 linkage函数定义变量之间的连接:(3)用 cophenetic函数评价聚类信息:(4)用cluster函数创建聚类. 1.Matlab中相关函数介绍 1.1  pdist函数 调用格式:Y=pdist(X,'metri

Hadoop集群选择合适的硬件配置

为Hadoop集群选择合适的硬件配置 随着Apache Hadoop的起步,云客户的增多面临的首要问题就是如何为他们新的的Hadoop集群选择合适的硬件. 尽管Hadoop被设计为运行在行业标准的硬件上,提出一个理想的集群配置不想提供硬件规格列表那么简单. 选择硬件,为给定的负载在性能和经济性提供最佳平衡是需要测试和验证其有效性.(比如,IO密集型工作负载的用户将会为每个核心主轴投资更多). 在这个博客帖子中,你将会学到一些工作负载评估的原则和它在硬件选择中起着至关重要的作用.在这个过程中,你也

如何在程序开发项目中选择合适的 JavaScript 框架,节省时间和成本的9款极佳的JavaScript框架介绍

从技术上来看,iOS,Android 和 Windows Phone 上的移动应用是使用不同的程序语言开发的,iOS 应用使用 Objective-C,Android 应用使用 Java,而 Windows Phone 应用使用 .NET. .随着 JavaScript,CSS 和 HTML 知识技能的提升,相信你也可以构建一个超赞的移动应用.在这篇博客里,我们将会介绍一些极好的 JavaScript 移动应用程序开发框架. 说到网络开发,就不得不说 JavaScript,这是一款很有前途的程序

设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。

收集购物信息  iOS项目 倒计时:588 步骤 /.panel-heading 项目需求 设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话.并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击. #import "TableViewController.h" @interface TableViewController ()<UIAlertViewDelegate> @property (nonatomic, strong)

为MySQL选择合适的备份方式

数据库的备份是极其重要的事情.如果没有备份,遇到下列情况就会抓狂: UPDATE or DELETE whitout where- table was DROPPed accidentally- INNODB was corrupt- entire datacenter loses power- 从数据安全的角度来说,服务器磁盘都会做raid,MySQL本身也有主从.drbd等容灾机制,但它们都无法完全取代备份.容灾和高可用能帮我们 有效的应对物理的.硬件的.机械的故障,而对我们犯下的逻辑错误却

程序猿告诉你怎么选择合适自己的APP制作软件?

近几年,APP大火,创业人士都想做个APP出来一下估值上千万,传统企业都想做个APP出来进入移动化道路.然而APP制作不是一时半会就能完成的,甚至是非常有技术含量的事情.一个完全不懂APP制作技术的人士很难做出高质量的APP.那么,市面上有许多APP制作软件可选,帮助大家快速制作APP.可是,如何选择合适自己的APP制作软件呢?这件事还是程序猿最有话语权. 首先,APP制作软件分为两种,一种是傻瓜式软件,一种是简化技术软件. 傻瓜式软件,顾名思义,就是利用固定的APP模板,套用不同的UI设计从而

安装ESXI 5.5卡在LSI_MR3.V00解决方案以及 选择合适网卡驱动方案

安装esxi5.5 时,卡在一个环节lsi_mr3.v00 这里就不动了,这里查阅资料,是因为新上的服务器新装的sas 固态硬盘,这里是esxi5.5 自定义的系统没有加载合适的驱动.解决方案如下: 1.1 下载驱动,选择合适的操作系统类型,地址如下: https://my.vmware.com/web/vmware/details?downloadGroup=DT-ESXI55-LSI-LSI-MR3-66110500-1OEM&productId=353 1.2 运用工具进行重新封装系统,将

10月学习总结:选择合适的框架进行快速开发

前言: 9月没有写学习总结,9月份事情有点多,平时学习时间也太少,工作中也只是重复造了一些轮子,没啥可记录的,就没有总结了,直接大跃进,进行10月总结,如果10月再不总结,那就是大大跃进到11月了,哈哈哈. 一.选择合适的框架进行快速开发 任务简介: 10月份接了一项任务,做一个宝宝风采大赛,参数人员上传照片,拉亲朋好友进行投票,依据名次有各种奖励. 过程描述: 我作为主负责开发,一个前端做html辅助我.看了一下设计图,我们两个人,评估了一下项目,大概一周之内可以完成.想法总是很美好,现实实在