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

📄 demo_svm.m

📁 很好的matlab模式识别工具箱
💻 M
📖 第 1 页 / 共 2 页
字号:
    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    case 2   % 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    case 3    % 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'   createdata('finite',2,'demo_svm','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 check2ddata(pathname),                                                          file.pathname=pathname;                                                         file.path=path;                                                                 file.name=name;                                                                 set(data.bt_load,'UserData',file);      demo_svm('loadsets',hfigure);       demo_svm('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,      if check2ddata( file.pathname ),         set(data.bt_load,'UserData',file);         demo_svm('loadsets',hfigure);         demo_svm('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 );   trn.I=trn.y;   trn.N= 2;   trn.K = [length( find(trn.y==1)),length(find(trn.y==2))];   % store loaded sets   set( data.axes,'UserData', trn);   % focus on axes   axes( data.axes );   % plots points   ppatterns( trn );   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);        else     consoletext=sprintf(['No data loaded.\n' ...           'Press Create data button to create your own data.\n'...
           'Press Load data button to load data.\n' ...
           'Load sample data from ../data/binary/']);     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) );     options.ker = ker;     options.arg = arg;     options.C = C;     options.eps = param(1);     options.tol = param(2);          model = smo( trn, options);          Alpha = zeros(1,size(trn.X,2));     Alpha(model.sv.inx) = model.Alpha(:)';     bias = model.b;     nsv = model.nsv;     kercnt=model.kercnt;     trn_err = model.trnerr;     margin = model.margin;               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)%     model=svmmot(trn, {'ker',ker,'arg',arg,'C',C,'norm',1});%%     Alpha = zeros(1,size(trn.X,2));%     Alpha(model.sv.inx) = model.Alpha;%     bias = model.b;%     nsv = model.nsv;%     kercnt=model.kercnt;%     trn_err = model.trnerr;%     margin = model.margin;%     exitflag=model.exitflag;%     %     text = sprintf(...%        ['SVM (L1) using QUADPROG of the Optimization Toolbox\n',...%        'Kernel: %s (%s), C: %.4f\n',...%        'Exitflag: %d\n',...%        'Kernel evaluations: %d\n',...%        'Number of Support Vectors: %d\n',...%        'Margin: %.4f\n',...%        'Training error: %.2f%%'],...%        ker, strarg, C, exitflag, kercnt, nsv, margin,100*trn_err);%% case 3 % Kernel Schlesinger-Kozinec's algorithm (L2)  case 2   % Kernel Schlesinger-Kozinec's algorithm (L2)      model=svmquadprog(trn, {'ker',ker,'arg',arg,'C',C,...          'tolabs',param(1),'tolrel',0,'tmax',param(2) });     Alpha = zeros(1,size(trn.X,2));     Alpha(model.sv.inx) = model.Alpha(:)';     bias = model.b;     nsv = model.nsv;     kercnt=model.kercnt;     trn_err = model.trnerr;     margin = model.margin;     exitflag=model.exitflag;         if( exitflag == 1), exitflag = 'found'; else exitflag = '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, exitflag, 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);%%     model=svmmot(trn, {'ker',ker,'arg',arg,'C',C,'norm',2});%%     Alpha = zeros(1,size(trn.X,2));%     Alpha(model.sv.inx) = model.Alpha;%     bias = model.b;%     nsv = model.nsv;%     kercnt=model.kercnt;%     trn_err = model.trnerr;%     margin = model.margin;%     exitflag=model.exitflag;%%     text = sprintf(...%        ['SVM (L2) using QUADPROG of the Optimization Toolbox\n',...%        'Kernel: %s (%s), C: %.4f\n',...%        'Exitflag: %d\n',...%        'Kernel evaluations: %d\n',...%        'Number of Support Vectors: %d\n',...%        'Margin: %.4f\n',...%        'Training error: %.2f%%'],...%        ker, strarg, C, exitflag, kercnt, nsv, margin,100*trn_err);  %  case 5   % Kernel Perceptron  case 3   % Kernel Perceptron     model=kperceptr(trn, {'ker',ker,'arg',arg,'tmax',param(1)});     Alpha = zeros(1,size(trn.X,2));     Alpha(model.sv.inx) = model.Alpha;     bias = model.b;     nsv = model.nsv;     kercnt=model.kercnt;     trn_err = model.trnerr;     exitflag=model.exitflag;     text = sprintf(...        ['Kernel Perceptron\n',...        'Kernel: %s (%s)\n',...        'Exitflag: %d\n',...        'Kernel evaluations: %d\n',...        'Number of Support Vectors: %d\n',...        'Training error: %.2f%%'],...        ker, strarg, exitflag, kercnt, nsv, 100*trn_err);end% show commentset( data.console,'String', text );return;     function []=clrchild(handle)% function []=clraxis(handle)%% CLRCHILD clears children of an object with the given handle.delete(get(handle,'Children'));return;function []=setaxis(handle,rect)% function []=setaxis(handle,rect)%set(handle,'XLim',rect(1:2));set(handle,'YLim',rect(3:4));if size(rect,2)>=6,   set(handle,'ZLim',rect(5:6));endreturn;

⌨️ 快捷键说明

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