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

📄 lg_cluster.m

📁 clustering_code ,Clustering Through Ranking On Manifolds Version 0.2 Copyright by Markus Breit
💻 M
字号:
function model = LG_Cluster(X_in,lrn_par)% function model = LG_Cluster(X_in,lrn_par)%% Build a clustering model%   returns a model% X_in is the unlabeled input data (one case per row)% lrn_par are parameters - see Set_Default_Learning_Paramters% returns a model%%% 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.%USE_C_CODE_FOR_DST = lrn_par.USE_C_CODE_FOR_DST;[n,dim] = size(X_in);% Scalingmodel.DST_TYPE = lrn_par.DST_TYPE;model.SCALE = lrn_par.SCALE;if lrn_par.DST_TYPE == 1 % Euclidean    if model.SCALE == 1        [X, A, B] = Gen_Scale(X_in,0,1);        model.A = A;        model.B = B;    else        X = X_in;    endelse % Dot Product dist    if model.SCALE == 1        model.B = mean(X_in);        X_in_2 = X_in - model.B(ones(n,1),:);        x_row_ln = (sum(X_in_2'.^2).^(-1/2))';        X = X_in_2.*(x_row_ln(:,ones(dim,1)));    else        x_row_ln = (sum(X_in'.^2).^(-1/2))';        X = X_in.*(x_row_ln(:,ones(dim,1)));    end    %     (sum(X'.^2).^(-1/2))'    %     t99 = 1;endclear X_in;% Distance Matrixif lrn_par.DST_SAVED == 1    load dst.mat;else    if lrn_par.DST_TYPE  == 1        if USE_C_CODE_FOR_DST == 1            dst = distance_matrix_mex(dim,n,X');        else            dst = zeros(n,n);            for i=2:n                j=[1:i-1];                t1 = X(i*ones(i-1,1),:) - X(j,:); %% distance function                dst(i+[j-1]*n) = sum(t1.*t1,2);                dst(j+(i-1)*n) = dst(i+[j-1]*n);            end        end    else        dst = 1 - X*X';    end    save dst.mat dstendif lrn_par.DST_TYPE == 1    dim_it = dim;else    dim_it = 1;endfprintf(1,'Now opt_alpha_sigma...\n');if lrn_par.my_alpha ~= 0 & lrn_par.my_sigma ~= 0 & length(lrn_par.Cluster_Search) == 1    my_alpha = lrn_par.my_alpha;    my_sigma = lrn_par.my_sigma;    num_classes = lrn_par.Cluster_Search;else    [my_alpha,my_sigma,num_classes] = Opt_Alpha_Sigma(dst,lrn_par,dim_it,n);endfprintf(1,'sigma %f alpha %f nc %i\n',my_sigma,my_alpha,num_classes);fprintf(1,'Now Calc_Inv...\n');[iaS_inv, norm_iaS_inv, S_norm, F_orig, F_norm, Y, Y_orig, dot_dist, mean_dist, ind_mat_unseen, Dt, ind_clust] =...    Calc_Inv(dst,my_alpha,my_sigma,num_classes,n,lrn_par);num_classes = length(ind_clust);Class_Outlier = [];for i=1:num_classes    ind_t = logical(Y(:,i));    ind_vals = find(Y(:,i) == 1);    t1 = norm_iaS_inv(ind_t,ind_t);    t2 = Gen_Scale(t1,0,1);    len_cols = sum(t2.^2).^(-0.5);    t3 = t2.*(len_cols(ones(sum(Y(:,i)),1),:));    t4 = t3' * t3;    t5 = mean(t4);    Class_Outlier(i).val = t5';    Class_Outlier(i).ind = ind_t;    [s_val,ind_sort] = sort(t5);    Class_Outlier(i).sort_val = s_val;    Class_Outlier(i).ind_sort = ind_vals(ind_sort);    plot_values = zeros(size(Y(:,i)));    plot_values(ind_t) = t5';    Class_Outlier(i).plot_values = plot_values;    %figure;plot(Class_Outlier(i).plot_values,'r*'); %plot the points in each clusterendmodel.Class_Outlier = Class_Outlier;model.F_orig = F_orig;model.F_norm = F_norm;model.Y = Y;model.Y_orig = Y_orig;model.mean_dist = mean_dist;[sort_mean_dist,ind_sort_mean_dist] = sort(mean_dist);model.sort_mean_dist = sort_mean_dist;model.ind_sort_mean_dist = ind_sort_mean_dist;model.S_norm = S_norm;model.ind_mat_unseen = ind_mat_unseen;one_over_2_sigma_sq = 1/(2*my_sigma^2);model.one_over_2_sigma_sq = one_over_2_sigma_sq;model.X = X;model.Dt = Dt;model.num_classes = num_classes;model.norm_iaS_inv = norm_iaS_inv;model.iaS_inv = iaS_inv;model.my_alpha = my_alpha;model.my_sigma = my_sigma;model.ind_clust = ind_clust;t2 = 99;

⌨️ 快捷键说明

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