• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: Matlab
  • 标签: LLE  matlab  流形学习  

资源简介

LLE(MATLAB) 官方源码,附带有案例

资源截图

代码片段和文件信息

% LLE ALGORITHM (using K nearest neighbors)
%
% [Y] = lle(XKdmax)
%
% X = data as D x N matrix (D = dimensionality N = #points)
% K = number of neighbors
% dmax = max embedding dimensionality
% Y = embedding as dmax x N matrix

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [Y] = lle(XKd)

[DN] = size(X);
fprintf(1‘LLE running on %d points in %d dimensions\n‘ND);


% STEP1: COMPUTE PAIRWISE DISTANCES & FIND NEIGHBORS 
fprintf(1‘-->Finding %d nearest neighbours.\n‘K);

X2 = sum(X.^21);
distance = repmat(X2N1)+repmat(X2‘1N)-2*X‘*X;

[sortedindex] = sort(distance);
neighborhood = index(2:(1+K):);



% STEP2: SOLVE FOR RECONSTRUCTION WEIGHTS
fprintf(1‘-->Solving for reconstruction weights.\n‘);

if(K>D) 
  fprintf(1‘   [note: K>D; regularization will be used]\n‘); 
  tol=1e-3; % regularlizer in case constrained fits are ill conditioned
else
  tol=0;
end

W = zeros(KN);
for ii=1:N
   z = X(:neighborhood(:ii))-repmat(X(:ii)1K); % shift ith pt to origin
   C = z‘*z;                                        % local covariance
   C = C + eye(KK)*tol*trace(C);                   % regularlization (K>D)
   W(:ii) = C\ones(K1);                           % solve Cw=1
   W(:ii) = W(:ii)/sum(W(:ii));                  % enforce sum(w)=1
end;


% STEP 3: COMPUTE embedDING FROM EIGENVECTS OF COST MATRIX M=(I-W)‘(I-W)
fprintf(1‘-->Computing embedding.\n‘);

% M=eye(NN); % use a sparse matrix with storage for 4KN nonzero elements
M = sparse(1:N1:Nones(1N)NN4*K*N); 
for ii=1:N
   w = W(:ii);
   jj = neighborhood(:ii);
   M(iijj) = M(iijj) - w‘;
   M(jjii) = M(jjii) - w;
   M(jjjj) = M(jjjj) + w*w‘;
end;

% CALCULATION OF embedDING
options.disp = 0; options.isreal = 1; options.issym = 1; 
[Yeigenvals] = eigs(Md+10options);
Y = Y(:2:d+1)‘*sqrt(N); % bottom evect is [1111...] with eval 0


fprintf(1‘Done.\n‘);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


% other possible regularizers for K>D
%   C = C + tol*diag(diag(C));                       % regularlization
%   C = C + eye(KK)*tol*trace(C)*K;                 % regularlization

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2140  2014-02-03 10:09  LLE\lle.m

     文件       1305  2014-02-03 10:09  LLE\scurve.m

     文件       1213  2014-02-03 10:09  LLE\swissroll.m

     目录          0  2014-02-03 10:11  LLE

----------- ---------  ---------- -----  ----

                 4658                    4


评论

共有 条评论