📄 inputselectexhaustive.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 inputSelectExhaustive</title> <meta name="keywords" content="inputSelectExhaustive"> <meta name="description" content="inputSelectExhaustive: Input selection via sequential forward selection using leave-one-out"> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <meta name="generator" content="m2html © 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> > <a href="index.html">dcpr</a> > inputSelectExhaustive.m</div><!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td><td align="right"><a href="index.html">Index for dcpr <img alt=">" border="0" src="../right.png"></a></td></tr></table>--><h1>inputSelectExhaustive</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>inputSelectExhaustive: Input selection via sequential forward selection using leave-one-out</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 [bestSelectedInput, bestRecogRate, allSelectedInput, allRecogRate, elapsedTime] = inputSelectExhaustive(DS, inputNum, classifier, param, plotOpt) </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"> inputSelectExhaustive: Input selection via sequential forward selection using leave-one-out
Usage: [bestSelectedInput, allSelectedInput, allRecogRate, elapsedTime] = inputSelectExhaustive(DS, inputNum, classifier, param, plotOpt)
Input:
DS: design set
inputNum: up to inputNum inputs are selected
classifier: classifier for input selection
param: parameters for classifier
plotOpt: 0 for not plotting (default: 1)
Output:
bestSelectedInput: overall selected input index
bestRecogRate: recognition rate based on the final selected input
allSelectedInput: all selected input during the process
allRecogRate: all recognition rate
elapseTime: elapsed time</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="classConvert.html" class="code" title="function label2 = classConvert(label)">classConvert</a> classConvert: Convert class labels into integers from 1 to n</li><li><a href="inputNameList.html" class="code" title="function str=inputNameList(inputIndex, inputName)">inputNameList</a> </li><li><a href="inputSelectPlot.html" class="code" title="function inputSelectPlot(allRecogRate, allSelectedInput, inputName, callingFunction);">inputSelectPlot</a> inputSelectPlot: Plot for input selection</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 out = combine(obj, n)</a></li><li><a href="#_sub2" 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 [bestSelectedInput, bestRecogRate, allSelectedInput, allRecogRate, elapsedTime] = inputSelectExhaustive(DS, inputNum, classifier, param, plotOpt)</a>0002 <span class="comment">% inputSelectExhaustive: Input selection via sequential forward selection using leave-one-out</span>0003 <span class="comment">% Usage: [bestSelectedInput, allSelectedInput, allRecogRate, elapsedTime] = inputSelectExhaustive(DS, inputNum, classifier, param, plotOpt)</span>0004 <span class="comment">%</span>0005 <span class="comment">% Input:</span>0006 <span class="comment">% DS: design set</span>0007 <span class="comment">% inputNum: up to inputNum inputs are selected</span>0008 <span class="comment">% classifier: classifier for input selection</span>0009 <span class="comment">% param: parameters for classifier</span>0010 <span class="comment">% plotOpt: 0 for not plotting (default: 1)</span>0011 <span class="comment">% Output:</span>0012 <span class="comment">% bestSelectedInput: overall selected input index</span>0013 <span class="comment">% bestRecogRate: recognition rate based on the final selected input</span>0014 <span class="comment">% allSelectedInput: all selected input during the process</span>0015 <span class="comment">% allRecogRate: all recognition rate</span>0016 <span class="comment">% elapseTime: elapsed time</span>0017 0018 <span class="comment">% Roger Jang, 19971227, 20041102</span>0019 0020 <span class="keyword">if</span> nargin<1, <a href="#_sub2" class="code" title="subfunction selfdemo">selfdemo</a>; <span class="keyword">return</span>; <span class="keyword">end</span>0021 [dim, dataNum]=size(DS.input);0022 <span class="keyword">if</span> nargin<2, inputNum=dim; <span class="keyword">end</span>0023 <span class="keyword">if</span> nargin<3, classifier=<span class="string">'knnrLoo'</span>; <span class="keyword">end</span>0024 <span class="keyword">if</span> nargin<4, param=[]; <span class="keyword">end</span>0025 <span class="keyword">if</span> nargin<5, plotOpt=1; <span class="keyword">end</span>0026 0027 DS.output=<a href="classConvert.html" class="code" title="function label2 = classConvert(label)">classConvert</a>(DS.output); <span class="comment">% Convert the output to be intergers from 1 to classNum</span>0028 inputName=DS.inputName;0029 0030 t0=clock;0031 <span class="comment">% Construct all input indices for possible models</span>0032 allSelectedInput={};0033 <span class="keyword">for</span> i=1:inputNum0034 x=<a href="#_sub1" class="code" title="subfunction out = combine(obj, n)">combine</a>(1:dim, i);0035 thisInputIndex=mat2cell(x, ones(1,size(x,1)), size(x,2));0036 allSelectedInput={allSelectedInput{:}, thisInputIndex{:}};0037 <span class="keyword">end</span>0038 0039 modelNum=length(allSelectedInput);0040 fprintf(<span class="string">'\nConstruct %d KNN models, each with up to %d inputs selected from %d candidates...\n'</span>, modelNum, inputNum, dim);0041 <span class="keyword">for</span> i=1:modelNum0042 DS2=DS;0043 DS2.input=DS.input(allSelectedInput{i}, :);0044 allRecogRate(i) = feval(classifier, DS2, param);0045 fprintf(<span class="string">'modelIndex %d/%d: %s --> Recognition rate = %f%%\n'</span>, i, modelNum, <a href="inputNameList.html" class="code" title="function str=inputNameList(inputIndex, inputName)">inputNameList</a>(allSelectedInput{i}, inputName), allRecogRate(i)*100);0046 <span class="keyword">end</span>0047 0048 [bestRecogRate, b] = max(allRecogRate);0049 bestSelectedInput = allSelectedInput{b};0050 fprintf(<span class="string">'\nOverall max recognition rate = %.1f%%.\n'</span>, bestRecogRate*100);0051 fprintf(<span class="string">'Overall selected inputs: %s\n'</span>, <a href="inputNameList.html" class="code" title="function str=inputNameList(inputIndex, inputName)">inputNameList</a>(bestSelectedInput, inputName));0052 elapsedTime=etime(clock, t0);0053 0054 <span class="keyword">if</span> plotOpt0055 <a href="inputSelectPlot.html" class="code" title="function inputSelectPlot(allRecogRate, allSelectedInput, inputName, callingFunction);">inputSelectPlot</a>(allRecogRate*100, allSelectedInput, inputName, mfilename);0056 <span class="keyword">end</span>0057 0058 <span class="comment">% ====== Subfunction</span>0059 <a name="_sub1" href="#_subfunctions" class="code">function out = combine(obj, n)</a>0060 <span class="comment">% out = combine(obj, n) returns combinations of obj with n distinct</span>0061 <span class="comment">% elements.</span>0062 <span class="comment">% For instance: combine([1 2 3 4 5], 2) or combine('abcde', 3).</span>0063 0064 <span class="comment">% Roger Jang, Sept-21-1996</span>0065 0066 <span class="keyword">if</span> n>length(obj)0067 out=[];0068 <span class="keyword">return</span>;0069 <span class="keyword">end</span>0070 <span class="keyword">if</span> n==10071 out = obj(:);0072 <span class="keyword">return</span>;0073 <span class="keyword">end</span>0074 <span class="keyword">if</span> n==length(obj)0075 out = obj(:)';0076 <span class="keyword">return</span>;0077 <span class="keyword">end</span>0078 0079 out = [];0080 <span class="keyword">for</span> i = 1:length(obj)-1,0081 first = obj(i);0082 tail = obj(i+1:end);0083 tail_combinat = <a href="#_sub1" class="code" title="subfunction out = combine(obj, n)">combine</a>(tail, n-1);0084 loop_out = [first*ones(size(tail_combinat,1), 1), tail_combinat]; 0085 out = [out; loop_out];0086 <span class="keyword">end</span>0087 0088 <span class="comment">% ====== Self demo</span>0089 <a name="_sub2" href="#_subfunctions" class="code">function selfdemo</a>0090 DS=<a href="prData.html" class="code" title="function [DS, TS]=prData(dataName)">prData</a>(<span class="string">'random6'</span>);0091 feval(mfilename, DS);</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> © 2003</address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -