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

📄 svmdemo.m

📁 支持向量机工具箱
💻 M
📖 第 1 页 / 共 2 页
字号:
      [Alpha,bias] = svm_train( data, trn, ker, arg, C );      % focus on the axes   axes( data.axes );      % Clear axes   clrchild( data.axes);      % get options   options.background = get( data.xb_background, 'Value');       % plot decision function   psvm( trn.X,trn.I,Alpha,bias,ker,arg, options );   %== Handler for Algorithm popup menu ==========================case 'algo_handler'   data=get(hfigure,'UserData');      % which algorithm ?   switch get(data.pu_algo, 'Value' )         case 1   % SMO        set(data.tx_cconst,'Enable','on');        set(data.ed_cconst,'Enable','on');        set(data.tx_param,'Enable','on');        set(data.tx_param,'String',SMO_PARAM);        set(data.ed_param,'Enable','on');        set(data.ed_param,'String',DEF_SMO_PARAM);            case 2    % Matlab toolbox        set(data.tx_cconst,'Enable','on');        set(data.ed_cconst,'Enable','on');        set(data.tx_param,'Enable','off');        set(data.ed_param,'Enable','off');         case 3   % Kernel-SK        set(data.tx_cconst,'Enable','on');        set(data.ed_cconst,'Enable','on');        set(data.tx_param,'Enable','on');        set(data.ed_param,'Enable','on');        set(data.tx_param,'String',KERNELSK_PARAM);        set(data.ed_param,'String',DEF_KERNELSK_PARAM);    case 4    % Matlab toolbox        set(data.tx_cconst,'Enable','on');        set(data.ed_cconst,'Enable','on');        set(data.tx_param,'Enable','off');        set(data.ed_param,'Enable','off');    case 5    % Kernel Perceptron        set(data.tx_cconst,'Enable','off');        set(data.ed_cconst,'Enable','off');        set(data.tx_param,'Enable','on');        set(data.ed_param,'Enable','on');        set(data.tx_param,'String',KPERCEPTR_PARAM);        set(data.ed_param,'String',DEF_KPERCEPTR_PARAM);   end      %== Handler for C-const edit line ===========================case 'cconst_handler'   data=get(hfigure,'UserData');   C = str2num(get(data.ed_cconst,'String'));      if C <= 0,      C = 100;   end   set( data.ed_cconst,'String',num2str(C));   %== Handle for arg edit line ===========================case 'arg_handler'   data=get(hfigure,'UserData');   arg = str2num(get(data.ed_arg,'String'));      if arg < 0,      arg = 1;   end      set( data.ed_arg, 'String',num2str( arg));   %== Handle for kernel pop up menu ===========================case 'kernel_handler'   data=get(hfigure,'UserData');   ker_inx = get( data.pu_kernel,'Value');   if ker_inx >= 2,      set( data.ed_arg,'Enable','on');      set( data.tx_arg,'Enable','on');   else      set( data.ed_arg,'Enable','off');      set( data.tx_arg,'Enable','off');   end%== Calls data creator ==========================================case 'creatdata'   creatset('finite',2,'svmdemo','created',hfigure);% == Loads recently created data ================================case 'created'   % get handler and make this figure active   figure(hfigure);   data = get(hfigure,'UserData');   % get file name   path=varargin{1};   name=varargin{2};   pathname=strcat(path,name);   if checkdat(pathname,DATA_IDENT,2,[0 0])==1,      file.pathname=pathname;      file.path=path;      file.name=name;      set( data.bt_load,'UserData',file);      svmdemo('loadsets',hfigure);      svmdemo('reset',hfigure);   else      errordlg('This file does not contain required data.','Bad file','modal');   end% == Calls standard open file dialog ==========================case 'getfile'      data=get(hfigure,'UserData');   [name,path]=uigetfile('*.mat','Open file');   if name~=0,      file.pathname=strcat(path,name);      file.path=path;      file.name=name;      if checkdat(file.pathname,DATA_IDENT,2,[0 0])==1,         set(data.bt_load,'UserData',file);         svmdemo('loadsets',hfigure);         svmdemo('reset',hfigure);      else         errordlg('This file does not contain required data.','Bad file','modal');      end   endcase 'loadsets'   % == Load data from file ==========================================   data = get( hfigure,'UserData' );   % Clear axes   clrchild( data.axes);      % set x and y axes labels   xlabel('feature x');   ylabel('feature y');   % Get file name with sets   file=get( data.bt_load,'UserData');   % Load sets   trn = load(file.pathname );   % store loaded sets   set( data.axes,'UserData', trn);   % focus on axes   axes( data.axes );   % plots points   ppatterns( trn.X, trn.I, 5);   drawnow     % == Reset ==========================================================case 'reset'   data = get(hfigure,'UserData');                       % Clear axes   clrchild( data.axes);   % get data set   trn = get( data.axes, 'UserData');   % get file   file = get( data.bt_load,'UserData');      % create comment   if isempty( trn ) == 0,     consoletext=sprintf('Data loaded.\nSelect algorithm and press Train SVM button.\n');     titletext=sprintf('File: %s, # of points K = %d', file.name , size(trn.X,2));          set( data.axes, 'XLimMode','auto', 'YLimMode','auto');     ppatterns( trn.X, trn.I, 5 );        else     consoletext=sprintf('No data loaded.\nPress Load data button.\n');     titletext='';     pos=get( data.axes,'Position');     fsize=min(pos(3),pos(4))/10;     setaxis( data.axes,[-1 1 -1 1]);%     axis([-1 1 -1 1]);           builtin('text',0,0,'Press ''Load data'' button.',...        'HorizontalAlignment','center',...        'FontUnits','normalized',...        'Clipping','on',...        'FontSize',fsize);   end   % show comment   set( data.console,'String',consoletext );   % print title   pos=get( data.axes,'Position');   fsize=(1-pos(2)-pos(4))*1;   title(titletext,...      'Parent', data.axes,...      'VerticalAlignment','bottom',...      'HorizontalAlignment','left',...      'FontUnits','normalized',...      'Units','normalized',...      'Position',[0 1 0],...      'FontSize',fsize);% == Calls Matlab`s info box ==================================case 'info'   helpwin(mfilename);endreturn;%===============================================================function [Alpha,bias] = svm_train( data, trn, ker, arg, C )if strcmpi( ker, 'linear'),  strarg = '-';else  strarg = num2str( arg);endparam = str2num( get( data.ed_param,'String'));switch get( data.pu_algo, 'Value' ),  case 1   % Sequential Minimal Optimizer%   if length(param) ~= length( str2num(DEF_SMO_PARAM)),%     param = str2num(DEF_SMO_PARAM);%   end      [Alpha,bias,nsv,kercnt,trn_err,margin]=...         smo(trn.X,trn.I,ker,arg,C, param(1),param(2) );               text = sprintf(...        ['SVM (L1) by Sequential Minimal Optimizer\n',...        'Kernel: %s (%s), C: %.4f\n',...        'Kernel evaluations: %d\n',...        'Number of Support Vectors: %d\n',...        'Margin: %.4f\n',...        'Training error: %.2f%%'],...        ker, strarg, C, kercnt, nsv, margin, 100*trn_err );        case 2   % Matlab Optimization toolbox (L1)     [Alpha,bias,nsv,exitflag,flps,margin,trn_err]=...         svmmot(trn.X,trn.I,ker,arg,C);              text = sprintf(...        ['SVM (L1) by QP from the Matlab Optimization Toolbox\n',...        'Kernel: %s (%s), C: %.4f\n',...        'Optimization: %s\n',...        'Number of Support Vectors: %d\n',...        'Floating point operations: %d\n',...        'Margin: %.4f\n',...        'Training error: %.2f%%'],...        ker, strarg, C, exitflag, nsv, flps, margin,trn_err);     case 3   % Kernel Schlesinger-Kozinec's algorithm (L2)%     if length(param) ~= length( str2num(DEF_KERNELSK_PARAM)),%       param = str2num(DEF_KERNELSK_PARAM);%     end%     [Alpha,bias,sol,t,flps,margin,up,lo,trn_err]=...%         kernelsk(trn.X,trn.I,param(1),ker,arg,param(2),C);%     [Alpha,bias,sol,t,flps,margin,up,lo]=...%         kerskfmat(trn.X,trn.I,param(1),ker,arg,param(2),C);%     inx1=find(trn.I==1);%     inx2=find(trn.I==2);          [Alpha,bias,sol,t,kercnt,margin,trn_err]= ...         kernelskf(trn.X, trn.I,[1 param(1)],ker,arg,param(2),C);    %     Alpha = zeros(1,length(Alpha1)+length(Alpha2));%     Alpha(inx1) = Alpha1;%     Alpha(inx2) = Alpha2;          nsv = length( find( Alpha > 1e-9 ));          if( sol == 1), sol = 'found'; else sol = 'not found'; end          text = sprintf(...        ['SVM (L2) by Kernel Schlesinger-Kozinec`s algorithm\n',...        'Kernel: %s (%s), C: %.4f\n',...        'Solution: %s\n', ...        'Number of Support Vectors: %d\n',...        'Kernel evaluations: %d\n',...        'Margin: %.4f\n',...        'Training error: %.2f%%'],...        ker, strarg, C, sol, nsv, kercnt, margin, trn_err*100 );  case 4   % Matlab Optimization toolbox (L2)     [Alpha,bias,nsv,exitflag,flps,margin,trn_err]=...         svm2mot(trn.X,trn.I,ker,arg,C);     text = sprintf(...        ['SVM (L2) by QP from the Matlab Optimization Toolbox\n',...        'Kernel: %s (%s), C: %.4f\n',...        'Optimization: %s\n',...        'Number of Support Vectors: %d\n',...        'Floating point operations: %d\n',...        'Margin: %.4f\n',...        'Training error: %.2f%%'], ...        ker, strarg, C, exitflag, nsv, flps, margin, trn_err*100);    case 5   % Kernel Perceptron     [Alpha,bias,sol,t,nsv]=kperceptr(trn.X,trn.I,ker,arg,param(1));     if( sol == 1), sol = 'found'; else sol = 'not found'; end     text = sprintf(...        ['Kernel Perceptron\n',...        'Kernel: %s (%s)\n',...        'Solution: %s\n',...        'Number of iterations: %d\n',...        'Number of Support Vectors: %d'], ...        ker, strarg, sol, t, nsv);end% show commentset( data.console,'String', text );return;                        

⌨️ 快捷键说明

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