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

📄 classify_new_data.m

📁 clustering_code ,Clustering Through Ranking On Manifolds Version 0.2 Copyright by Markus Breit
💻 M
字号:
function [us_class] = Classify_New_Data(X_in,model)% [us_class] = Classify_New_Data(X_in,model)% Classify unseen examples - X_in is the input data (one case per row)%% Clustering Through Ranking On Manifolds% Version 0.2%% Copyright by Markus Breitenbach and Gregory Z. Grudic% This code is for your personal and research use only.%% http://www.cs.colorado.edu/~grudic/% http://ucsu.colorado.edu/~breitenm/%% This software is provided "as is," without warranty of any kind, express% or implied.  In no event shall the authors be held liable% for any direct, indirect, incidental, special or consequential damages% arising out of the use of or inability to use this software.%[num_data,d] = size(X_in);if model.DST_TYPE == 1    if model.SCALE == 1        A = model.A';        B = model.B';        X =  X_in.*A(ones(num_data,1),:) + B(ones(num_data,1),:);        X(X>1) = 1;        X(X<0) = 0;    else        X = X_in;    endelse    if model.SCALE == 1        model.B = mean(X_in);        X_in_2 = X_in - model.B(ones(num_data,1),:);        x_row_ln = (sum(X_in_2'.^2).^(-1/2))';        X = X_in_2.*(x_row_ln(:,ones(d,1)));    else        x_row_ln = (sum(X_in'.^2).^(-1/2))';        X = X_in.*(x_row_ln(:,ones(d,1)));        t77 = 77;    endendData_X = model.X;one_over_2_sigma_sq = model.one_over_2_sigma_sq;S_norm = model.S_norm;ind_mat_unseen = model.ind_mat_unseen;Dt = model.Dt;% model.ind_clust = ind_clust;% model.num_models = num_models;% model.Dt = Dt;[n,dim] = size(Data_X);ind_diag = find(eye(n,n) == 1);coeff_unseen = zeros(num_data,n);iaS_inv_un_seen = zeros(n,num_data);outlier_est_unseen = zeros(n,1);% model.S_norm = S_norm(ind_clust,:);% model.ind_mat_unseen = ind_mat_unseen(ind_clust,:);% model.one_over_2_sigma_sq = one_over_2_sigma_sq;% model.X_clust = X(ind_clust,:);UNS_one_over_2_sigma_sq = 1/(2*0.05^2);for pt = 1:num_data        %    dst_us = zeros(1,n);    %     for i=1:n    %         t1 = Data_X(i,:) - X(pt,:);    %         dst_us(i) = t1*t1';    %     end    if model.DST_TYPE == 1        %t1 = Data_X - X(pt*ones(n,1),:);        %dst_us = sum(t1.*t1,2);        if pt==1            ncentres = size(Data_X,1);            ndata    = size(X,1);            all_my_distances= (ones(ncentres, 1) * sum((X.^2)', 1))' + ones(ndata, 1) * sum((Data_X.^2)',1) - 2.*(X*(Data_X'));        end;        dst_us = all_my_distances(pt,:);    else        dst_us = 1 - Data_X*X(pt*ones(n,1),:)';        t99 = 0;    end        c_us = exp(-dst_us.*one_over_2_sigma_sq);        W_us = c_us(ind_mat_unseen);    W_us(ind_diag) = 0;           Dt_us = sum(W_us').^(-1/2);    %S_us = diag(Dt_us) * W_us * diag(Dt);    S_us = (W_us.*Dt_us(ones(n,1),:)').*((Dt(ones(n,1),:)));        len_rows = sum(S_us'.^2).^(-0.5);    S_norm_us = S_us.*(len_rows(ones(n,1),:))';        t2 = sum((S_norm_us.*S_norm)');    t22 = (t2/(sum(t2)));    %     t_d = 1-t2;    %     t_d_s = Gen_Scale(t_d',0,1);    %     t_scale = 1-t_d_s;    %     t22 = (t2.*t_scale').^2;    %t22 = exp(-(1-t2).*UNS_one_over_2_sigma_sq);    coeff_unseen(pt,:) = t22;    t3 = model.norm_iaS_inv.*t22(ones(n,1),:);    iaS_inv_un_seen(:,pt) = sum(t3')';    t99 = 8;endlen_cols = sum(iaS_inv_un_seen.^2).^(-0.5);norm_iaS_inv_un_seen = iaS_inv_un_seen.*(len_cols(ones(n,1),:));dot_dist = norm_iaS_inv_un_seen' * model.norm_iaS_inv;us_class.outlier_est_unseen = mean(dot_dist');F_us_nn = norm_iaS_inv_un_seen' * model.Y;len_cols_F_us_nn = sum(F_us_nn.^2).^(-0.5);F_us = F_us_nn.*(len_cols_F_us_nn(ones(num_data,1),:));% Fnorm_us = model.norm_iaS_inv * model.Y;% len_rows_F = sum(Fnorm_us.^2).^(-0.5);% Fnorm_us_norm = Fnorm_us.*(len_rows_F(ones(n,1),:));% % len_rows = sum(coeff_unseen').^(-1);% coeff_unseen = coeff_unseen.*(len_rows(ones(n,1),:))';% % % F_us_nn = coeff_unseen * Fnorm_us_norm;% len_cols_F_us_nn = sum(F_us_nn.^2).^(-0.5);% F_us = F_us_nn.*(len_cols_F_us_nn(ones(n,1),:));% % % dot_dist = coeff_unseen * model.norm_iaS_inv;% us_class.outlier_est_unseen = mean(dot_dist);Y = zeros(size(F_us));for i=1:num_data    ind_t = find(max(F_us(i,:)) == F_us(i,:));    Y(i,ind_t) = 1;endClass_Outlier = [];for i=1:model.num_classes    ind_t = logical(Y(:,i));    ind_vals = find(Y(:,i) == 1);    scale_mat = coeff_unseen(ind_t,model.Class_Outlier(i).ind);    %len_rows4 = sum(scale_mat'.^2).^(-0.5);    len_rows4 = sum(scale_mat').^(-1);    scale_mat_norm = scale_mat.*(len_rows4(ones(sum(model.Class_Outlier(i).ind),1),:))';        t1 = scale_mat_norm * model.Class_Outlier(i).val;    Class_Outlier(i).val = t1;    plot_values = zeros(size(F_us(:,i)));    plot_values(ind_t) = t1;    Class_Outlier(i).plot_values = plot_values;    figure;plot(Class_Outlier(i).plot_values,'b^'); %plot the points in each clusterendus_class.F = F_us;us_class.Y = Y;us_class.Class_Outlier = Class_Outlier;us_class.Fs= Gen_Scale(F_us,0.1,1);t99 = 7;

⌨️ 快捷键说明

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