📄 rocplot.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 rocPlot</title> <meta name="keywords" content="rocPlot"> <meta name="description" content="rocPlot: Plot for receiver operating curve"> <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> > rocPlot.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>rocPlot</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>rocPlot: Plot for receiver operating curve</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 [fn, fp]=rocPlot(data1, data2, scaleStr) </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"> rocPlot: Plot for receiver operating curve
Usage: rocPlot(data1, data2)
data1: vector for data of negative set
data2: vector for data of positive set
scaleStr: 'log' or 'linear'
For example:
data1=randn(1,300)-1;
data2=randn(1,300)+1;
subplot(1,2,1);
rocPlot(data1, data2);
subplot(1,2,2);
rocPlot(data1, data2, 'log');</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)"></ul>This function is called by:<ul style="list-style-image:url(../matlabicon.gif)"><li><a href="roc.html" class="code" title="function [threshold, fp, fn, mu1, var1, mu2, var2, a, b]=roc(data1, data2, plotOpt);">roc</a> roc</li></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 [fn, fp]=rocPlot(data1, data2, scaleStr)</a>0002 <span class="comment">% rocPlot: Plot for receiver operating curve</span>0003 <span class="comment">% Usage: rocPlot(data1, data2)</span>0004 <span class="comment">% data1: vector for data of negative set</span>0005 <span class="comment">% data2: vector for data of positive set</span>0006 <span class="comment">% scaleStr: 'log' or 'linear'</span>0007 <span class="comment">%</span>0008 <span class="comment">% For example:</span>0009 <span class="comment">% data1=randn(1,300)-1;</span>0010 <span class="comment">% data2=randn(1,300)+1;</span>0011 <span class="comment">% subplot(1,2,1);</span>0012 <span class="comment">% rocPlot(data1, data2);</span>0013 <span class="comment">% subplot(1,2,2);</span>0014 <span class="comment">% rocPlot(data1, data2, 'log');</span>0015 0016 <span class="comment">% Roger Jang, 20061025</span>0017 0018 <span class="keyword">if</span> nargin<3, scaleStr=<span class="string">'linear'</span>; <span class="keyword">end</span>0019 <span class="keyword">if</span> nargin<1, <a href="#_sub1" class="code" title="subfunction selfdemo">selfdemo</a>; <span class="keyword">return</span>; <span class="keyword">end</span>0020 0021 num1=length(data1);0022 num2=length(data2);0023 allData=[data1(:); data2(:)]';0024 dataNum=num1+num2;0025 minValue=min(allData);0026 maxValue=max(allData);0027 0028 <span class="keyword">if</span> dataNum>2000029 thresholds=linspace(minValue, maxValue);0030 <span class="keyword">else</span>0031 sorted=sort(allData);0032 thresholds=([sorted(1)-1, sorted]+[sorted, sorted(end)+1])/2;0033 <span class="keyword">end</span>0034 0035 <span class="keyword">for</span> i=1:length(thresholds);0036 th=thresholds(i);0037 fp(i)=sum(data1>=th)/dataNum;0038 fn(i)=sum(data2< th)/dataNum;0039 <span class="keyword">end</span>0040 plot(fn*100, fp*100, <span class="string">'.-'</span>);0041 set(gca, <span class="string">'xscale'</span>, scaleStr, <span class="string">'yscale'</span>, scaleStr);0042 xlabel(<span class="string">'False-negative error rate (%)'</span>);0043 ylabel(<span class="string">'False-positive error rate (%)'</span>);0044 0045 [junk, id(1)]=min(abs(fn-fp));0046 [junk, id(2)]=min(abs(5*fn-fp));0047 [junk, id(3)]=min(abs(fn-5*fp));0048 <span class="keyword">for</span> i=1:length(id);0049 index=id(i); 0050 th=thresholds(index);0051 line(fn(index)*100, fp(index)*100, <span class="string">'color'</span>, <span class="string">'r'</span>, <span class="string">'marker'</span>, <span class="string">'o'</span>);0052 text(fn(index)*100, fp(index)*100, sprintf(<span class="string">' \\theta=%.4f (fn=%.4f%%, fp=%.4f%%)'</span>, th, 100*fn(index), 100*fp(index)));0053 <span class="keyword">end</span>0054 axis square, grid on0055 0056 <span class="comment">% ====== Self demo</span>0057 <a name="_sub1" href="#_subfunctions" class="code">function selfdemo</a>0058 data1=randn(1,100)*5;0059 data2=randn(1,200)*2+3;0060 subplot(1,2,1);0061 feval(mfilename, data1, data2);0062 subplot(1,2,2);0063 feval(mfilename, data1, data2, <span class="string">'log'</span>);</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 + -