📄 mlcgmm.html
字号:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>mlcgmm.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>mlcgmm</span>(<span class=defun_in>data,cov_type</span>)<br><span class=h1>% MLCGMM Maximal Likelihood estimation of Gaussian mixture model.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% model = mlcgmm(X)</span><br><span class=help>% model = mlcgmm(X,cov_type)</span><br><span class=help>% model = mlcgmm(data)</span><br><span class=help>% model = mlcgmm(data,cov_type)</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% It computes Maximum Likelihood estimation of parameters</span><br><span class=help>% of Gaussian mixture model for given labeled data sample</span><br><span class=help>% (complete data).</span><br><span class=help>%</span><br><span class=help>% model = mlcgmm(X) computes parameters (model.Mean,model.Cov)</span><br><span class=help>% of a single Gaussian distribution for given sample of column </span><br><span class=help>% vectors X (all labels are assumed to be 1).</span><br><span class=help>%</span><br><span class=help>% model = mlcgmm(X,cov_type) specifies shape of covariance matrix:</span><br><span class=help>% cov_type = 'full' full covariance matrix (default)</span><br><span class=help>% cov_type = 'diag' diagonal covarinace matrix</span><br><span class=help>% cov_type = 'spherical' spherical covariance matrix</span><br><span class=help>%</span><br><span class=help>% model = mlcgmm(data) computes parameters of a Gaussian mixture model</span><br><span class=help>% from a given labeled data sample</span><br><span class=help>% data.X ... samples,</span><br><span class=help>% data.y .. labels.</span><br><span class=help>% It estimates parameters of ncomp=max(data.y) Gaussians and</span><br><span class=help>% a priory probabilities Prior [1 x ncomp] using Maximum-Likelihood </span><br><span class=help>% principle.</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] Data sample.</span><br><span class=help>% data.X [dim x num_data] Data sample.</span><br><span class=help>% data.y [1 x num_data] Data labels.</span><br><span class=help>% cov_type [string] Type of covariacne matrix (see above).</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Output:</span></span><br><span class=help>% model [struct] Estimated Gaussian mixture model:</span><br><span class=help>% .Mean [dim x ncomp] Mean vectors.</span><br><span class=help>% .Cov [dim x dim x ncomp] Covariance matrices.</span><br><span class=help>% .Prior [1 x ncomp] Estimated a priory probabilities.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Example:</span></span><br><span class=help>% data = load('riply_trn');</span><br><span class=help>% model = mlcgmm( data );</span><br><span class=help>% figure; hold on; ppatterns(data); pgauss( model );</span><br><span class=help>% figure; hold on; ppatterns(data); pgmm( model );</span><br><span class=help>%</span><br><span class=help>% See also </span><br><span class=help>% EMGMM, MMGAUSS, PDFGMM.</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>% 17-aug-2004, VF, labels y do not have to form a sequence 1,2,...,max_y</span><br><span class=help1>% 2-may-2004, VF</span><br><span class=help1>% 29-apr-2004, VF</span><br><span class=help1>% 19-sep-2003, VF</span><br><span class=help1>% 27-feb-2003, VF</span><br><br><hr><span class=comment>% processing of inputs</span><br>data=c2s(data);<br><br><span class=keyword>if</span> ~isstruct(data),<br> data.X = data;<br> data.y = ones(1,size(data.X,2));<br><span class=keyword>end</span><br> <br><span class=keyword>if</span> <span class=stack>nargin</span> < 2, cov_type = <span class=quotes>'full'</span>; <span class=keyword>end</span><br><br>[dim,num_data] = size(data.X);<br><br>labels = unique(data.y);<br>model.Mean = zeros(dim,length(labels));<br>model.Cov = zeros(dim,dim,length(labels));<br><span class=keyword>for</span> i=1:length(labels),<br> <br> inx = find(data.y==labels(i));<br> n = length(inx);<br><br> model.Mean(:,i) = sum(data.X(:,inx),2)/n;<br><br> XC=data.X(:,inx)-model.Mean(:,i)*ones(1,n);<br><br> <span class=keyword>switch</span> cov_type,<br> <span class=label>case</span> <span class=quotes>'full'</span>, <br> model.Cov(:,:,i) = XC*XC'/n;<br> <span class=label>case</span> <span class=quotes>'diag'</span>, <br> model.Cov(:,:,i) = diag(sum(XC.^2,2)/n);<br> <span class=label>case</span> <span class=quotes>'spherical'</span><br> model.Cov(:,:,i) = eye(dim,dim)*sum(sum(XC.^2))/(n*dim);<br> <span class=label>otherwise</span><br> <span class=error>error</span>(<span class=quotes>'Wrong cov_type.'</span>);<br> <span class=keyword>end</span><br> <br> model.Prior(i) = n/num_data;<br> model.y(i) = labels(i);<br><span class=keyword>end</span><br><br>model.cov_type = cov_type;<br>model.fun = <span class=quotes>'pdfgmm'</span>;<br><br><span class=jump>return</span>; <br></code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -