📄 pca.html
字号:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>pca.m</title><link rel="stylesheet" type="text/css" href="../../../m-syntax.css"></head><body><code><span class=defun_kw>function</span> <span class=defun_out>model </span>= <span class=defun_name>pca</span>(<span class=defun_in>X,arg1</span>)<br><span class=h1>% PCA Principal Component Analysis.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% model = pca(X)</span><br><span class=help>% model = pca(X,new_dim)</span><br><span class=help>% model = pca(X,var)</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% It computes Principal Component Analysis, i.e., the</span><br><span class=help>% linear transform which makes data uncorrelated and</span><br><span class=help>% minize the reconstruction error.</span><br><span class=help>%</span><br><span class=help>% model = pca(X,new_dim) use to specify explicitely output</span><br><span class=help>% dimesnion where new_dim >= 1.</span><br><span class=help>%</span><br><span class=help>% model = pca(X,var) use to specify a portion of discarded</span><br><span class=help>% variance in data where 0 <= var < 1. The new_dim is </span><br><span class=help>% selected be as small as possbile and to satisfy </span><br><span class=help>% var >= MsErr(new_dim)/MaxMsErr </span><br><span class=help>% </span><br><span class=help>% where MaxMsErr = sum(sum(X.^2)). </span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Input:</span></span><br><span class=help>% X [dim x num_data] training data stored as columns.</span><br><span class=help>%</span><br><span class=help>% new_dim [1x1] Output dimension; new_dim > 1 (default new_dim = dim);</span><br><span class=help>% var [1x1] Portion of discarded variance in data.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Ouputs:</span></span><br><span class=help>% model [struct] Linear projection:</span><br><span class=help>% .W [dim x new_dim] Projection matrix.</span><br><span class=help>% .b [new_dim x 1] Bias.</span><br><span class=help>% </span><br><span class=help>% .eigval [dim x 1] eigenvalues.</span><br><span class=help>% .mse [real] Mean square representation error.</span><br><span class=help>% .MsErr [dim x 1] Mean-square errors with respect to number </span><br><span class=help>% of basis vectors; mse=MsErr(new_dim).</span><br><span class=help>% .mean_X [dim x 1] mean of training data.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Example:</span></span><br><span class=help>% in_data = load('iris');</span><br><span class=help>% model = pca(in_data.X, 2)</span><br><span class=help>% out_data = linproj(in_data,model);</span><br><span class=help>% figure; ppatterns(out_data);</span><br><span class=help>%</span><br><span class=help>% See also </span><br><span class=help>% LINPROJ, PCAREC, KPCA.</span><br><span class=help>%</span><br><hr><span class=help1>% <span class=help1_field>About:</span> Statistical Pattern Recognition Toolbox</span><br><span class=help1>% (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac</span><br><span class=help1>% <a href="http://www.cvut.cz">Czech Technical University Prague</a></span><br><span class=help1>% <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a></span><br><span class=help1>% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a></span><br><br><span class=help1>% <span class=help1_field>Modifications:</span></span><br><span class=help1>% 20-may-2004, VF</span><br><span class=help1>% 20-june-2003, VF</span><br><span class=help1>% 21-jan-03, VF</span><br><span class=help1>% 20-jan-03, VF</span><br><span class=help1>% 16-Jan-2003, VF, new comments.</span><br><span class=help1>% 26-jun-2002, VF</span><br><br><hr><span class=comment>% get dimensions</span><br>[dim,num_data]=size(X);<br><br><span class=comment>% process input arguments</span><br><span class=keyword>if</span> <span class=stack>nargin</span> < 2, arg1 = 0; <span class=keyword>end</span><br><br><span class=comment>% centering data</span><br>mean_X = mean( X<span class=quotes>' )'</span>;<br>X=X-mean_X*ones(1,num_data);<br><br><span class=comment>% covariance</span><br>S = X*X';<br><br><span class=comment>% eigenvalue decomposition</span><br>[U,D,V]=svd(S);<br><br>model.eigval=diag(D)/num_data;<br>sum_eig = triu(ones(dim,dim),1)*model.eigval;<br>model.MsErr = sum_eig;<br><br><span class=comment>% decide about the new_dimension</span><br><span class=keyword>if</span> arg1 >= 1,<br> new_dim = arg1; <span class=comment>% new_dim enterd explicitely</span><br><span class=keyword>else</span><br> inx = find( sum_eig/sum(model.eigval) <= arg1);<br> <span class=keyword>if</span> isempty(inx), new_dim = dim; <span class=keyword>else</span> new_dim = inx(1); <span class=keyword>end</span><br> model.var = arg1;<br><span class=keyword>end</span><br><br><span class=comment>% take new_dim most important eigenvectors</span><br>model.W=V(:,1:new_dim);<br><br><span class=comment>% compute data translation</span><br>model.b = -model.W'*mean_X;<br>model.new_dim = new_dim;<br>model.mean_X = mean_X;<br>model.mse = model.MsErr(new_dim);<br>model.fun = <span class=quotes>'linproj'</span>;<br><br><span class=jump>return</span>;<br></code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -