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

本文通过MATLAB代码实现对Iris数据集进行层次聚类分析,并使用距离矩阵来创建二叉树形聚类,同时展示了评估聚类数量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  

转载于:https://www.cnblogs.com/huadongw/p/4619770.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值