?? lg_cluster.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 + -