📄 lda.html
字号:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>lda.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>lda</span>(<span class=defun_in>data,new_dim</span>)<br><span class=h1>% LDA Linear Discriminant Analysis.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% model = lda(data)</span><br><span class=help>% model = lda(data,new_dim)</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% This function is implementation of Linear Discriminant Analysis.</span><br><span class=help>% The goal is to train the linear transform which maximizes ratio </span><br><span class=help>% between between-class and within-class scatter matrix of projected </span><br><span class=help>% data.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Input:</span></span><br><span class=help>% data [struct] Input labeled data:</span><br><span class=help>% .X [dim x num_data] Data sample.</span><br><span class=help>% .y [1 x num_data] Labels (1,2,...,nclass).</span><br><span class=help>%</span><br><span class=help>% new_dim [1x1] Output data dimension (default new_dim = dim).</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Ouput:</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] Biases.</span><br><span class=help>%</span><br><span class=help>% .mean_X [dim x 1] Mean value of data.</span><br><span class=help>% .Sw [dim x dim] Within-class scatter matrix.</span><br><span class=help>% .Sb [dim x dim] Between-class scatter matrix.</span><br><span class=help>% .eigval [dim x 1] Eigenvalues.</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 = lda( in_data, 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, PCA.</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>% 25-may-2004, VF</span><br><span class=help1>% 3-may-2004, VF</span><br><span class=help1>% 20-may-2001, V.Franc, created</span><br><br><hr><span class=comment>% process input arguments</span><br><span class=comment>%----------------------------------------</span><br>data=c2s(data);<br>[dim,num_data] = size(data.X);<br>nclass = max( data.y );<br><br><span class=keyword>if</span> <span class=stack>nargin</span> < 2, new_dim = dim; <span class=keyword>end</span><br><br><span class=comment>% compute within-class scatter matrix</span><br><span class=comment>%--------------------------------------</span><br>mean_X = mean( data.X, 2);<br>Sw=zeros(dim,dim);<br>Sb=zeros(dim,dim);<br><br><span class=keyword>for</span> i = 1:nclass,<br> inx_i = find( data.y==i);<br> X_i = data.X(:,inx_i);<br> <br> mean_Xi = mean(X_i,2);<br> Sw = Sw + cov( X_i', 1);<br> Sb = Sb + length(inx_i)*(mean_Xi-mean_X)*(mean_Xi-mean_X)';<br><span class=keyword>end</span><br><br><span class=comment>% Compute projection matrix</span><br>[U,D,V]=svd( inv( Sw )*Sb );<br><br><span class=comment>% take new_dim biggest eigenvectors</span><br>model.W = V(:,1:new_dim);<br>model.eigval = diag(D);<br><br><span class=comment>% translation</span><br>model.b = -model.W'*mean_X;<br><br>model.Sw = Sw;<br>model.Sb = Sb;<br>model.mean_X = mean_X;<br><br>model.fun = <span class=quotes>'linproj'</span>;<br><br><span class=jump>return</span>;<br><span class=comment>% EOF</span><br></code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -