資源簡介
LLE 作者源代碼,逐語句翻譯以及解釋
代碼片段和文件信息
%?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);???%?將distance從小到大進行排序,得到的是距離各個點的距離,并得到坐標
neighborhood?=?index(2:(1+K):);??%?第一行一定是0,因此從第二行開始,到第K+1行結束
%?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;???%?代表0.001?誤差,正則化保證可逆??%?regul
評論
共有 條評論