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

📄 linctrainwidro.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 lincTrainWidro</title>  <meta name="keywords" content="lincTrainWidro">  <meta name="description" content="lincTrainWidro: Linear classifier (Perceptron) training using (revised) Widro-Hoff method">  <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; lincTrainWidro.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>lincTrainWidro</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>lincTrainWidro: Linear classifier (Perceptron) training using (revised) Widro-Hoff method</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 [recogRate, coef, allRecogRate, allCoef]=lincTrainWidro(DS, trainParam, 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"> lincTrainWidro: Linear classifier (Perceptron) training using (revised) Widro-Hoff method 
    Usage: [recogRate, coef, allRecogRate, allCoef] = lincTrainWidro(DS, trainParam, plotOpt)

    Type &quot;lincTrainWidro&quot; for a demo.</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="dcprDataPlot.html" class="code" title="function dcprDataPlot(DS, plotTitle, displayAnnotation)">dcprDataPlot</a>	dcprDataPlot: Plot of 2D data for data clustering or pattern recognition</li><li><a href="lincEval.html" class="code" title="function [lincOutput, recogRate, errorIndex1, errorIndex2, regOutput, regError]=lincEval(DS, coef)">lincEval</a>	lincEval: Evaluation of linear classifier</li><li><a href="lincTrainMre.html" class="code" title="function [recogRate, coef, regError]=lincTrainMre(DS, CParam, plotOpt)">lincTrainMre</a>	lincTrainMre: Linear classifier training for min. regression error</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 coef=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 [recogRate, coef, allRecogRate, allCoef]=lincTrainWidro(DS, trainParam, plotOpt)</a>0002 <span class="comment">% lincTrainWidro: Linear classifier (Perceptron) training using (revised) Widro-Hoff method</span>0003 <span class="comment">%    Usage: [recogRate, coef, allRecogRate, allCoef] = lincTrainWidro(DS, trainParam, plotOpt)</span>0004 <span class="comment">%</span>0005 <span class="comment">%    Type &quot;lincTrainWidro&quot; for a demo.</span>0006 0007 <span class="comment">% Roger Jang, 20040910</span>0008 0009 <span class="keyword">if</span> nargin&lt;1, <a href="#_sub1" class="code" title="subfunction coef=selfdemo">selfdemo</a>; <span class="keyword">return</span>; <span class="keyword">end</span>0010 [dim, dataNum]=size(DS.input);0011 <span class="keyword">if</span> nargin&lt;2 | isempty(trainParam),0012     trainParam.eta=0.001;0013     trainParam.maxIter=500;0014     trainParam.useMre=1;0015 <span class="keyword">end</span>0016 <span class="keyword">if</span> nargin&lt;3, plotOpt=0; <span class="keyword">end</span>0017 0018 <span class="keyword">if</span> plotOpt==1 &amp; dim==2,0019     <a href="dcprDataPlot.html" class="code" title="function dcprDataPlot(DS, plotTitle, displayAnnotation)">dcprDataPlot</a>(DS);0020     axis image0021     limit=axis;0022     lineH = line(limit(1:2), limit(3:4), <span class="string">'linewidth'</span>, 2, <span class="string">'erase'</span>, <span class="string">'xor'</span>, <span class="string">'color'</span>, <span class="string">'k'</span>);0023 <span class="keyword">end</span>0024 0025 uniqueOutput=unique(DS.output);0026 <span class="keyword">if</span> length(uniqueOutput)~=2, error(<span class="string">'Must be 2-class problem!'</span>); <span class="keyword">end</span>0027 <span class="comment">% ∮N DS.output ”??? -1 ?? 1</span>0028 index=find(DS.output==max(uniqueOutput));0029 DS.output=-ones(1, size(DS.output,2));0030 DS.output(index)=1;0031 0032 allRecogRate=-ones(1, trainParam.maxIter);0033 allCoef=cell(1, trainParam.maxIter);0034 0035 <span class="keyword">if</span> trainParam.useMre==10036     [allRecogRate(1), coef]=<a href="lincTrainMre.html" class="code" title="function [recogRate, coef, regError]=lincTrainMre(DS, CParam, plotOpt)">lincTrainMre</a>(DS);    <span class="comment">% Initial parameters via mrecTrain</span>0037 <span class="keyword">else</span>0038     coef=randn(dim+1,1);            <span class="comment">% Initial parameters via random number</span>0039 <span class="keyword">end</span>0040 0041 <span class="comment">% The main loop</span>0042 <span class="keyword">for</span> i=1:trainParam.maxIter0043     computed = <a href="lincEval.html" class="code" title="function [lincOutput, recogRate, errorIndex1, errorIndex2, regOutput, regError]=lincEval(DS, coef)">lincEval</a>(DS, coef);0044     allCoef{i}=coef;0045     allRecogRate(i)=sum(DS.output==computed)/dataNum;0046     fprintf(<span class="string">'%d/%d: %g%%\n'</span>, i, trainParam.maxIter, allRecogRate(i)*100);0047     <span class="comment">% Vectorized version, suitable for small data set</span>0048 <span class="comment">%    coef=coef+trainParam.eta*sum([DS.input; ones(1,dataNum)]*diag(DS.output-computed), 2);</span>0049     <span class="comment">% For-loop version, suitable for big data set</span>0050     grad=0*coef;0051     <span class="keyword">for</span> j=1:dataNum0052         grad=grad+(computed(j)-DS.output(j))*[DS.input(:,j); 1];0053     <span class="keyword">end</span>0054     gradLength=norm(grad);0055     <span class="keyword">if</span> gradLength==0, <span class="keyword">break</span>; <span class="keyword">end</span>0056     coef=coef-trainParam.eta*grad/norm(grad);        <span class="comment">% Normalized version of steepest descent</span>0057     <span class="keyword">if</span> plotOpt==1 &amp; dim==2,0058         set(lineH, <span class="string">'ydata'</span>, (-coef(3)-coef(1)*limit(1:2))/coef(2));0059         drawnow0060     <span class="keyword">end</span>0061     <span class="comment">% ====== Update step size</span>0062     <span class="keyword">if</span> i&gt;=50063         <span class="keyword">if</span> all(diff(allRecogRate(i-4:i))&gt;0)0064             trainParam.eta = 1.1*trainParam.eta;0065             fprintf(<span class="string">'Increase trainParam.eta to %f\n'</span>, trainParam.eta);0066         <span class="keyword">end</span>0067         <span class="keyword">if</span> all(sign(diff(allRecogRate(i-4:i)))==[-1 1 -1 1]) | all(sign(diff(allRecogRate(i-4:i)))==[1 -1 1 -1])0068             trainParam.eta = 0.9*trainParam.eta;0069             fprintf(<span class="string">'Decrease trainParam.eta to %f\n'</span>, trainParam.eta);0070         <span class="keyword">end</span>0071     <span class="keyword">end</span>0072 <span class="keyword">end</span>0073 0074 index=find(allRecogRate&lt;0);0075 allRecogRate(index)=[];0076 allCoef(index)=[];0077 0078 [recogRate, index]=max(allRecogRate);0079 coef=allCoef{index};0080 0081 <span class="keyword">if</span> plotOpt0082     figure0083     plot(1:length(allRecogRate), allRecogRate*100, 1:length(allRecogRate), allRecogRate*100, <span class="string">'.'</span>);0084     xlabel(<span class="string">'No. of iteration'</span>);0085     ylabel(<span class="string">'Recognition rate (%)'</span>);0086     grid on0087     line(index, allRecogRate(index)*100, <span class="string">'marker'</span>, <span class="string">'o'</span>, <span class="string">'color'</span>, <span class="string">'r'</span>);0088     fprintf(<span class="string">'Max. recog. rate = %.2f at %d iteration.\n'</span>, allRecogRate(index)*100, index);0089 <span class="keyword">end</span>0090 0091 <span class="comment">% ====== Self demo</span>0092 <a name="_sub1" href="#_subfunctions" class="code">function coef=selfdemo</a>0093 dataNum = 2000;0094 DS.input = rand(2, dataNum)*2-1;0095 DS.output = -ones(1, dataNum);0096 index = find(DS.input(1, :)+DS.input(2, :)&gt;0);0097 DS.output(index)=1;0098 plotOpt=1;0099 coef=feval(mfilename, DS, [], plotOpt);</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 + -