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
word linkage 选择合适的聚类个数matlab code的更多相关文章
- 密度峰值聚类算法MATLAB程序
密度峰值聚类算法MATLAB程序 凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 密度峰值聚类算法简介见:[转] 密度峰值聚类算法(DPC) 数据见:MATL ...
- 为你的 Hadoop 集群选择合适的硬件
随着Apache Hadoop的起步,云客户的增多面临的首要问题就是如何为他们新的的Hadoop集群选择合适的硬件. 尽管Hadoop被设计为运行在行业标准的硬件上,提出一个理想的集群配置不想提供硬件 ...
- 为Hadoop集群选择合适的硬件配置
随着Apache Hadoop的起步,云客户的增多面临的首要问题就是如何为他们新的的Hadoop集群选择合适的硬件. 尽管Hadoop被设计为运行在行业标准的硬件上,提出一个理想的集群配置不想提供硬件 ...
- NoSQL系列:选择合适的数据库
NoSQL系列:选择合适的数据库 为什么使用NoSQL数据库? 阻抗失衡 关系模型和内存中的数据结构不匹配 采用更为方便的数据交互方式提升开发效率 待处理的数据量很大 数据量超过关系型数据库的承载能力 ...
- 为MySQL选择合适的备份方式
数据库的备份是极其重要的事情.如果没有备份,遇到下列情况就会抓狂: UPDATE or DELETE whitout where… table was DROPPed accidentally… IN ...
- (转)NoSQL系列:选择合适的数据库
内容目录: 为什么使用NoSQL数据库? 键值数据库 文档数据库 列族数据库 图数据库 附思维导图 参考 NoSQL系列:选择合适的数据库 为什么使用NoSQL数据库? 阻抗失衡 关系模型和内存中的数 ...
- (转载)通过dbgrideh 从数据集中选择合适的记录
通过dbgrideh 从数据集中选择合适的记录 //---------------------------------------------------------// 通过dbgrideh 从数据 ...
- 【转】app后端如何选择合适的数据库产品
转自:http://blog.csdn.net/newjueqi/article/details/44003503 app后端的开发中,经常要面临的一个问题是:数据放在哪里? mysql ?redis ...
- 谈谈数据库中MyISAM与InnoDB区别 针对业务类型选择合适的表
MyISAM:这个是默认类型,它是基于传统的ISAM类型, ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法. ...
随机推荐
- 函数(def)
一.为什么要使用函数: 面向过程的编程在代码里有很多代码是可以重复利用的,如果使用面向过程编程会使代码显得纷繁复杂,不利于他人和自己日后的阅读.而在函数式编程里,则可以把每个可重复利用的功能封装在一个 ...
- python_way day12 RabbitMQ ,pymysql
python_way day12 1.RabbitMQ 2.pymysql RabbitMQ 1.基本用法 """ producer """ ...
- LightOJ::1077 -----奇妙的最大公约数
题目:http://www.lightoj.com/volume_showproblem.php?problem=1077 题意:在平面上, 给出两个点的坐标 例如:(x, y) 其中x, y 都是整 ...
- web工程中各类地址写法的总结
首先打一个"/" //如果地址给服务器用,那么"/"就代表该web应用 , 如果给浏览器用的,那么"/"就代表网站(其下有多个web应用) ...
- JAVA 调用命令并输出
public class test10 { /** * @param args */ public static void main(String[] args) throws Exception { ...
- Maven仓库构建
什么是Maven仓库 在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文件,如log4j.jar,junit.j ...
- 调整UILabel行高间距并返回自定义宽高度
// 获取label文字 NSString *labelString = @"XXXXXXXXXXXXXX"; // 设置自定义宽度或高度 CGSize labelSize = C ...
- 列车时刻表查询 jqm/ajax/xml
<!doctype html><html lang="en"><head> <meta charset="UTF-8" ...
- [css] 垂直居中方法
原文链接:http://www.cnblogs.com/2050/p/3392803.html 一.text-algin:center; 适用于行内元素水平居中,如图片.按钮.文字, 但是在IE67下 ...
- Multipath多路径冗余全解
一.什么是multipath 普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系.而到了有光纤组成的SAN环境,由于主机和存储通过了光纤交换机连接,这样的话,就构成了多对多的关系.也就是说 ...