⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kd_recurse.m

📁 greedy em 混和模型训练算法
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%% Build recursevily the leaf nodes of tree             %%%%%
%%%%%%                                                      %%%%%
%%%%%% Kostas Blekas, 19 Dec. 2001                          %%%%%
%%%%%% please contact at kblekas@cc.uoi.gr in case of problems %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [C,CP,InC] = kd_recurse(X,I,C,CP,InC,b,alpha,L,W,thres)

XI = X(I,:);
ni = size(XI,1);

bgen = zeros(L,W);

for i = 1:W
    ll = zeros(L,1);
    for j = 1:L
        ll(j) = size(find(XI(:,i)==alpha(j)),1);
        if (ll(j)==0)
            ll(j) = 0.000001;
        end
    end
    bgen(:,i) = ll ./ sum(ll);
end

[max1,t1]=max(bgen);

cr1 = size(find(max1>0.5),2);

if (ni > 0 & ni <= b)
    [r,deg] = bestpos(XI,ni,W,thres);
end

if ( (ni > 0 & ni <= b) & (deg==1) )

   C = [C; XI(r,:)];
   
   x1 = -1 * ones(1,b);
   x1(1:ni) = I;
   InC = [InC; x1];
   
   bgen = bgen + 0.0001;
   for i=1:W
       bgen(:,i) = bgen(:,i) ./ sum(bgen(:,i));
   end
   
   CP = [CP; bgen];
else 
    k1 = repmat(max(bgen),L,1); % creates a LxW matrix with the maximum values at each column
    [m1,pos]=min(sum((bgen - k1).^2)); % position of largest scatter
    [b1,inds] = sort(bgen(:,pos)); % sorting by frequency

    part1 = zeros(ni,1);
    part2 = zeros(ni,1);

    for i=L:-2:2
        part1(find(XI(:,pos)==alpha(inds(i))))=1;
        part2(find(XI(:,pos)==alpha(inds(i-1))))=1;
    end

    Ileft = I(find(part1==1));
    Iright = I(find(part2==1));

    % recursively call kd-tree on subpartitions
    [C,CP,InC] = kd_recurse(X,Ileft,C,CP,InC,b,alpha,L,W,thres);
    [C,CP,InC] = kd_recurse(X,Iright,C,CP,InC,b,alpha,L,W,thres);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -