⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmmtrainevalwrtgaussiannum.html

📁 一个关于数据聚类和模式识别的程序,在生物化学,化学中因该都可以用到.希望对大家有用,谢谢支持
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"                "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head>  <title>Description of gmmTrainEvalWrtGaussianNum</title>  <meta name="keywords" content="gmmTrainEvalWrtGaussianNum">  <meta name="description" content="gmmTrainEvalWrtMixNum: GMM training and test, w.r.t. varying number of mixtures">  <meta http-equiv="Content-Type" content="text/html; charset=big5">  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">  <meta name="robots" content="index, follow">  <link type="text/css" rel="stylesheet" href="../m2html.css"></head><body><a name="_top"></a><div><a href="../index.html">Home</a> &gt;  <a href="index.html">dcpr</a> &gt; gmmTrainEvalWrtGaussianNum.m</div><!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td><td align="right"><a href="index.html">Index for dcpr&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>--><h1>gmmTrainEvalWrtGaussianNum</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>gmmTrainEvalWrtMixNum: GMM training and test, w.r.t. varying number of mixtures</strong></div><h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>function [gmmData, recogRate1, recogRate2, validMixNumIndex]=gmmTrainEvalWrtGaussianNum(DS, TS, vecOfMixNum, covType, gmmTrainParam) </strong></div><h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre class="comment"> gmmTrainEvalWrtMixNum: GMM training and test, w.r.t. varying number of mixtures
    Usage: [gmmData, recogRate1, recogRate2, validMixNumIndex]=gmmTrainEvalWrtGaussianNum(DS, TS, vecOfMixNum, trainParam, covType, gmmTrainParam)
        DS: training set
        TS: test set
        vecOfMixNum: vector of numbers of mixtures
        covType: type of covariance matrix, 1: identity times a constant, 2: diagonal, 3: full
        gmmTrainParam: parameter for training GMM
        gmmData: GMM parameters
            gmmData(i): in which each gmm has vecOfMixNum(i) gaussians
            gmmData(i).gmm(j): gmm of class j at case i
            gmmData(i).gmm(j).gmmParam(k): gaussian k of class j at case i
            gmmData(i).gmm(j).gmmParam(k).mu: mean vector
            gmmData(i).gmm(j).gmmParam(k).sigma: covariance matrix
            gmmData(i).gmm(j).gmmParam(k).w: weight
        recogRate1: inside-test recognition rate
        recogRate2: outside-test recognition rate
        validMixNumIndex: Actually valid index for vecOfMixNum. We need to have this output parameters since
            sometimes we are given a large number of mixtures which cannot be used for GMM training at all

    For example:
        [DS, TS]=prData('wine');
        vecOfMixNum=2:30;
        covType=1;
        gmmTrainParam=gmmTrainParamSet;
        gmmTrainParam.plotOpt=1;
        [gmmData, recogRate1, recogRate2, validMixNumIndex]=gmmTrainEvalWrtGaussianNum(DS, TS, vecOfMixNum, covType, gmmTrainParam);</pre></div><!-- crossreference --><h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>This function calls:<ul style="list-style-image:url(../matlabicon.gif)"><li><a href="classSize.html" class="code" title="function [class, count] = classSize(DS, plotOpt)">classSize</a>	classSize: Class sizes for a sample data set</li><li><a href="gmmEval.html" class="code" title="function [logProb, gaussianProb] = gmmEval(data, gmmParam);">gmmEval</a>	gmmEval: Evaluation of a GMM (Gaussian mixture model)</li><li><a href="gmmTrain.html" class="code" title="function [gmmParam, logProb] = gmmTrain(data, gaussianNumCovType, gmmTrainParam)">gmmTrain</a>	gmmTrain: Parameter training for gaussian mixture model (GMM)</li><li><a href="gmmTrainParamSet.html" class="code" title="function gmmTrainParam=gmmTrainParamSet">gmmTrainParamSet</a>	The following parameters are used for gmmTrain()</li><li><a href="prData.html" class="code" title="function [DS, TS]=prData(dataName)">prData</a>	prData: Various data set for PR</li></ul>This function is called by:<ul style="list-style-image:url(../matlabicon.gif)"></ul><!-- crossreference --><h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><ul style="list-style-image:url(../matlabicon.gif)"><li><a href="#_sub1" class="code">function selfdemo</a></li></ul><h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [gmmData, recogRate1, recogRate2, validMixNumIndex]=gmmTrainEvalWrtGaussianNum(DS, TS, vecOfMixNum, covType, gmmTrainParam)</a>0002 <span class="comment">% gmmTrainEvalWrtMixNum: GMM training and test, w.r.t. varying number of mixtures</span>0003 <span class="comment">%    Usage: [gmmData, recogRate1, recogRate2, validMixNumIndex]=gmmTrainEvalWrtGaussianNum(DS, TS, vecOfMixNum, trainParam, covType, gmmTrainParam)</span>0004 <span class="comment">%        DS: training set</span>0005 <span class="comment">%        TS: test set</span>0006 <span class="comment">%        vecOfMixNum: vector of numbers of mixtures</span>0007 <span class="comment">%        covType: type of covariance matrix, 1: identity times a constant, 2: diagonal, 3: full</span>0008 <span class="comment">%        gmmTrainParam: parameter for training GMM</span>0009 <span class="comment">%        gmmData: GMM parameters</span>0010 <span class="comment">%            gmmData(i): in which each gmm has vecOfMixNum(i) gaussians</span>0011 <span class="comment">%            gmmData(i).gmm(j): gmm of class j at case i</span>0012 <span class="comment">%            gmmData(i).gmm(j).gmmParam(k): gaussian k of class j at case i</span>0013 <span class="comment">%            gmmData(i).gmm(j).gmmParam(k).mu: mean vector</span>0014 <span class="comment">%            gmmData(i).gmm(j).gmmParam(k).sigma: covariance matrix</span>0015 <span class="comment">%            gmmData(i).gmm(j).gmmParam(k).w: weight</span>0016 <span class="comment">%        recogRate1: inside-test recognition rate</span>0017 <span class="comment">%        recogRate2: outside-test recognition rate</span>0018 <span class="comment">%        validMixNumIndex: Actually valid index for vecOfMixNum. We need to have this output parameters since</span>0019 <span class="comment">%            sometimes we are given a large number of mixtures which cannot be used for GMM training at all</span>0020 <span class="comment">%</span>0021 <span class="comment">%    For example:</span>0022 <span class="comment">%        [DS, TS]=prData('wine');</span>0023 <span class="comment">%        vecOfMixNum=2:30;</span>0024 <span class="comment">%        covType=1;</span>0025 <span class="comment">%        gmmTrainParam=gmmTrainParamSet;</span>0026 <span class="comment">%        gmmTrainParam.plotOpt=1;</span>0027 <span class="comment">%        [gmmData, recogRate1, recogRate2, validMixNumIndex]=gmmTrainEvalWrtGaussianNum(DS, TS, vecOfMixNum, covType, gmmTrainParam);</span>0028 0029 <span class="comment">%    Roger Jang, 20070516</span>0030 0031 <span class="keyword">if</span> nargin&lt;1, <a href="#_sub1" class="code" title="subfunction selfdemo">selfdemo</a>; <span class="keyword">return</span>; <span class="keyword">end</span>0032 <span class="keyword">if</span> nargin&lt;4, gmmTrainParam=<a href="gmmTrainParamSet.html" class="code" title="function gmmTrainParam=gmmTrainParamSet">gmmTrainParamSet</a>; <span class="keyword">end</span>0033 0034 classLabel=unique(DS.output);0035 classNum=length(classLabel);0036 recogRate1=zeros(length(vecOfMixNum), 1);0037 recogRate2=zeros(length(vecOfMixNum), 1);0038 [dim, dsNum]=size(DS.input);0039 [dim, tsNum]=size(TS.input);0040 fprintf(<span class="string">'DS data count = %d, TS data count = %d\n'</span>, dsNum, tsNum);0041 [classLabel, classSizeDS]=<a href="classSize.html" class="code" title="function [class, count] = classSize(DS, plotOpt)">classSize</a>(DS); fprintf(<span class="string">'DS class data count = %s\n'</span>, mat2str(classSizeDS));0042 [classLabel, classSizeTS]=<a href="classSize.html" class="code" title="function [class, count] = classSize(DS, plotOpt)">classSize</a>(TS); fprintf(<span class="string">'TS class data count = %s\n'</span>, mat2str(classSizeTS));0043 0044 <span class="comment">% ====== Perform training and compute recognition rates</span>0045 errorMixNumIndex=0;0046 errorClassIndex=0;0047 h=waitbar(0, <span class="string">'Please wait...'</span>);0048 <span class="keyword">for</span> j=1:length(vecOfMixNum)0049     fprintf(<span class="string">'%d/%d: No. of Gaussian = %d ===&gt; '</span>, j, length(vecOfMixNum), vecOfMixNum(j));0050     <span class="comment">% ====== Training GMM model for each class</span>0051     <span class="keyword">for</span> i=1:classNum0052     <span class="comment">%    fprintf(' class %d... ', i);</span>0053         index=find(DS.output==classLabel(i));0054         theData=DS.input(:, index);0055         <span class="keyword">try</span>0056     <span class="comment">%        gmmTrainParam.dispOpt=1;</span>0057             [gmmData(j).gmm(i).gmmParam, gmmData(j).gmm(i).logProb] = <a href="gmmTrain.html" class="code" title="function [gmmParam, logProb] = gmmTrain(data, gaussianNumCovType, gmmTrainParam)">gmmTrain</a>(theData, [vecOfMixNum(j), covType], gmmTrainParam);0058         <span class="keyword">catch</span>0059             errorClassIndex=i;0060             <span class="keyword">break</span>;0061         <span class="keyword">end</span>0062     <span class="keyword">end</span>0063     <span class="keyword">if</span> errorClassIndex&gt;00064         errorMixNumIndex=vecOfMixNum(j);0065         fprintf(<span class="string">'Error out on errorMixNumIndex=%d and errorClassIndex=%i\n'</span>, errorMixNumIndex, errorClassIndex);0066         <span class="keyword">break</span>;0067     <span class="keyword">end</span>0068     <span class="comment">% ====== Compute inside-test recognition rate</span>0069     outProb=zeros(classNum, dsNum);0070     <span class="keyword">for</span> i=1:classNum0071         outProb(i,:)=<a href="gmmEval.html" class="code" title="function [logProb, gaussianProb] = gmmEval(data, gmmParam);">gmmEval</a>(DS.input, gmmData(j).gmm(i).gmmParam);0072     <span class="keyword">end</span>0073     [maxValue, computedOutput]=max(outProb);0074     recogRate1(j)=sum(DS.output==computedOutput)/length(DS.output);0075     <span class="comment">% ====== Compute outside-test recognition rate</span>0076     outProb=zeros(classNum, tsNum);;0077     <span class="keyword">for</span> i=1:classNum0078         outProb(i,:)=<a href="gmmEval.html" class="code" title="function [logProb, gaussianProb] = gmmEval(data, gmmParam);">gmmEval</a>(TS.input, gmmData(j).gmm(i).gmmParam);0079     <span class="keyword">end</span>0080     [maxValue, computedOutput]=max(outProb);0081     recogRate2(j)=sum(TS.output==computedOutput)/length(TS.output);0082     fprintf(<span class="string">'inside RR = %g%%, outside RR = %g%%\n'</span>, recogRate1(j)*100, recogRate2(j)*100);0083     waitbar(j/length(vecOfMixNum), h);0084 <span class="keyword">end</span>0085 close(h);0086 0087 <span class="keyword">if</span> errorMixNumIndex&gt;00088     gmmData(errorMixNumIndex:end)=[];0089     recogRate1(errorMixNumIndex:end)=[];0090     recogRate2(errorMixNumIndex:end)=[];0091     vecOfMixNum(errorMixNumIndex:end)=[];0092 <span class="keyword">end</span>0093 validMixNumIndex=errorMixNumIndex-1;0094 0095 <span class="comment">% ====== Plot the result</span>0096 <span class="keyword">if</span> gmmTrainParam.plotOpt0097     plot(vecOfMixNum, recogRate1*100, <span class="string">'o-'</span>, vecOfMixNum, recogRate2*100, <span class="string">'square-'</span>); grid on0098     legend(<span class="string">'Inside test'</span>, <span class="string">'Outside test'</span>, 4);0099     xlabel(<span class="string">'No. of Gaussian mixtures'</span>); ylabel(<span class="string">'Recognition Rates (%)'</span>);0100 <span class="keyword">end</span>0101 0102 <span class="comment">% ====== Self demo</span>0103 <a name="_sub1" href="#_subfunctions" class="code">function selfdemo</a>0104 [DS, TS]=<a href="prData.html" class="code" title="function [DS, TS]=prData(dataName)">prData</a>(<span class="string">'wine'</span>);0105 vecOfMixNum=2:30;0106 covType=1;0107 gmmTrainParam=<a href="gmmTrainParamSet.html" class="code" title="function gmmTrainParam=gmmTrainParamSet">gmmTrainParamSet</a>;0108 gmmTrainParam.plotOpt=1;0109 [gmmData, recogRate1, recogRate2, validMixNumIndex]=feval(mfilename, DS, TS, vecOfMixNum, covType, gmmTrainParam);</pre></div><hr><address>Generated on Thu 30-Oct-2008 12:53:56 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -