📄 svmlight.html
字号:
<br><span class=comment>% gets data dimensions</span><br>[dim,num_data ] = size(data);<br><br><span class=comment>%--------------------------------</span><br><span class=keyword>switch</span> options.ker<br> <span class=label>case</span> <span class=quotes>'linear'</span><br> ker=<span class=quotes>'-t 0'</span>;<br> <span class=label>case</span> <span class=quotes>'rbf'</span><br> ker=[<span class=quotes>'-t 2 -g '</span> num2str(1/(2*options.arg^2))]; <br> <span class=label>case</span> <span class=quotes>'poly'</span> <br> <span class=keyword>if</span> length(options.arg) == 1,<br> ker=[<span class=quotes>'-t 1 -r 1 -s 1 -d '</span> num2str(options.arg)]; <br> <span class=keyword>else</span><br> ker=[<span class=quotes>'-t 1 -s 1 -r '</span> num2str(options.arg(2)) <span class=quotes>' -d '</span> ...<br> num2str(options.arg(1))]; <br> <span class=keyword>end</span><br><span class=keyword>end</span><br>command=[<span class=quotes>'svm_learn '</span> ...<br> <span class=quotes>'-c '</span> num2str(options.C) <span class=quotes>' '</span>...<br> ker <span class=quotes>' '</span> ...<br> <span class=quotes>'-v 1 '</span> ...<br> <span class=quotes>'-m 40'</span> <span class=quotes>' '</span> ...<br> <span class=quotes>'-j '</span> num2str(options.j) <span class=quotes>' '</span>...<br> <span class=quotes>'-e '</span> num2str(options.eps) <span class=quotes>' '</span>...<br> <span class=quotes>'-a '</span> alpha_file <span class=quotes>' '</span> examples_file <span class=quotes>' '</span> model_file <span class=quotes>' > '</span> verb_file];<br> <br><span class=comment>% converts data to SVM^light format</span><br>xy2svmlight(data,examples_file);<br> <br><span class=comment>% call svm_learn</span><br>[a,b]=unix(command); <br><br><span class=comment>% parses model file</span><br>checkfile(model_file); [lines]=textread(model_file,<span class=quotes>'%s'</span>);<br><span class=keyword>for</span> i=1:size(lines,1)<br> <span class=keyword>if</span> strcmpi( lines(i), <span class=quotes>'threshold'</span> )==1,<br> model.b=-str2num( lines{i-2});<br> <span class=jump>break</span>;<br> <span class=keyword>end</span><br><span class=keyword>end</span><br> <br>checkfile(alpha_file); model.Alpha=textread(alpha_file,<span class=quotes>'%f'</span>);<br>model.Alpha=model.Alpha(:);<br>model.Alpha(find(data.y==2)) = -model.Alpha(find(data.y==2));<br><br>checkfile(verb_file);<br>[lines]=textread(verb_file,<span class=quotes>'%s'</span>,-1,<span class=quotes>'bufsize'</span>,5000000,<span class=quotes>'headerlines'</span>,3);<br><span class=keyword>for</span> i=1:size(lines,1)<br> <span class=keyword>if</span> strcmpi( lines{i}, <span class=quotes>'misclassified,'</span> ),<br> model.trnerr=str2num( lines{i-1}(2:<span class=keyword>end</span>));<br> model.trnerr=model.trnerr/length(model.Alpha);<br> <span class=keyword>end</span><br> <span class=keyword>if</span> strcmpi( lines(i), <span class=quotes>'vector:'</span> ) & strcmpi( lines(i-1), <span class=quotes>'weight'</span> )==1,<br> tmp=str2num( lines{i+1}(5:<span class=keyword>end</span>));<br> <span class=keyword>if</span> tmp~=0, model.margin=1/tmp; <span class=keyword>else</span> model.margin=[]; <span class=keyword>end</span><br> <span class=keyword>end</span><br> <span class=keyword>if</span> strcmpi( lines(i), <span class=quotes>'SV:'</span> )==1,<br> model.nsv=str2num( lines{i+1});<br> <span class=keyword>end</span><br> <span class=keyword>if</span> strcmpi( lines(i), <span class=quotes>'evaluations:'</span> )==1,<br> model.kercnt=str2num( lines{i+1});<br> <span class=keyword>end</span><br><span class=keyword>end</span><br><br>model.nsv = length(find(model.Alpha~=0));<br><br>inx=find(model.Alpha);<br>model.sv.X = data.X(:,inx);<br>model.sv.y = data.y(inx);<br>model.sv.inx = inx;<br>model.Alpha = model.Alpha(inx);<br>model.Alpha(find(model.sv.y==2)) = -model.Alpha(find(model.sv.y==2));<br><br><span class=keyword>if</span> strcmp( options.ker, <span class=quotes>'linear'</span>),<br> model.W = model.sv.X * model.Alpha;<br><span class=keyword>end</span><br><br>model.options = options;<br>model.fun = <span class=quotes>'svmclass'</span>;<br><br><span class=comment>% deletes temporary files</span><br><span class=keyword>if</span> options.keep_files == 0,<br> delete(examples_file);<br> delete(model_file);<br> delete(verb_file);<br> delete(alpha_file);<br><span class=keyword>end</span><br><br>model.cputime=toc;<br><br><span class=jump>return</span>;<br><br><br><span class=defun_kw>function</span> <span class=defun_name>checkfile</span>(<span class=defun_in>fname</span>)<br><span class=comment>% Check if file of given name exists. If not then prints</span><br><span class=comment>% error.</span><br><span class=comment>% </span><br><br>attempts=0;<br>found = <span class=stack>exist</span>(fname);<br><span class=keyword>while</span> attempts < 5 && ~found<br> found = <span class=stack>exist</span>(fname);<br> attempts = attempts+1; <br><span class=keyword>end</span><br><br><span class=keyword>if</span> found == 0,<br> <span class=error>error</span>(<span class=quotes>'File %s not found.\n'</span>, fname);<br><span class=keyword>end</span><br><br><span class=jump>return</span>;<br><br><span class=comment>%EOF</span><br><br><br><br></code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -