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

📄 unsudemo.m

📁 四种SVM工具箱的分类与回归算法别人的
💻 M
📖 第 1 页 / 共 2 页
字号:
   sets=get(h.axes1,'UserData');   % Are data sets loaded ?   if isempty(sets)==1,
      % no warning is needy because of the huge topic on the screen:))).      return;   end      [name,path]=uigetfile('*.mat','Load model');   if name ~= 0,     fname=strcat(path,name);%     if checkdat(fname,DATA_IDENT,2,0)==1,       unsudemo('reset',hfigure);              model=load(fname);              if exist('model.Pk')==0,         % suppose uniformly distributed Pk         model.Pk=ones(1,sum(model.K))/sum(model.K);       end              h.ellipse.mi = model.MI;       h.ellipse.sigma=model.SIGMA;       h.ellipse.Pk = model.Pk;              h.ellipse.solution=0;       h.ellipse.t=0;       set(h.edclasses,'String',num2str(sum(model.K)));       h.ellipse.classes=sum(model.K);       h.ellipse.features=get(h.pufeatures,'Value');                            set(hfigure,'UserData',h);                              unsudemo('step',hfigure); %    else%      errordlg('This file does not contain required data.','Bad file','modal');%     end   end     case 'play'   % == Play ============================================   h=get(hfigure,'UserData');   % get data set   sets=get(h.axes1,'UserData');   % Are data sets loaded ?   if isempty(sets)==1 | h.ellipse.solution==1,
%%      text=sprintf(...%%        'No action performed. No data to work on. Load or create it!');%%      set(h.console,'String',text);      return;   end   % disable button   set([h.editer,h.btstep,h.btclose,h.btplay,...        h.btreset,h.btinfo,h.btload,h.btcreat,h.txiter],...      'Enable','off');   % enable stop button   set(h.btstop,'Enable','on');   % get # of iterations   iter=str2num(get(h.editer,'String'));   % # of classes   if h.ellipse.t==0,      h.ellipse.classes=str2num(get(h.edclasses,'String'));      h.ellipse.features=get(h.pufeatures,'Value');      set([h.xbrandom,h.edclasses,h.txclasses,h.pufeatures,h.txfeatures],...        'Enable','off');   end   % Shall the init be random, yes or no ?   randinit=get(h.xbrandom,'Value');   % set stop button   set(h.btstop,'UserData',0);   % Play - adaptation process   play=1; % flag 1 - not finished, 1 - finished;   while play==1 & get(h.btstop,'UserData')==0,      % perform one learning step      if h.ellipse.features==2,   % correlated features        [h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk,eI,h.ellipse.solution,...         h.ellipse.t]=unsund(sets.X,h.ellipse.classes,iter,randinit,...         h.ellipse.t,h.ellipse.mi, h.ellipse.sigma,h.ellipse.Pk);      else % independent         [h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk,eI,h.ellipse.solution,...         h.ellipse.t]=unsuni(sets.X,h.ellipse.classes,iter,randinit,...         h.ellipse.t,h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk);      end      text=sprintf('step number t=%d ',h.ellipse.t);      if h.ellipse.solution==1,%%         text=strvcat(text,'Solution was found.');         text=[text ',solution was found'];         play=0;         set(h.txsteps,'String',text);      else         set(h.txsteps,'String',text);         val= mln(sets.X,h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk);         text=sprintf('Log-likelihood, logL(t) = %f',val);         set(h.title2,'String',text);               h.graph1.time=[h.graph1.time,h.ellipse.t];         h.graph1.loglik=[h.graph1.loglik,val];         ylimit=get(h.axes2,'YLim');         if ylimit(2) < val,            set(h.axes2,'YLim',[ylimit(1) val+AXISY_ADD]);         end                       % is axis to be changed ?         if h.ellipse.t > h.graph1.axist,            h.graph1.axist=h.ellipse.t+iter*AXIST_ADD;            set(h.axes2,'XLim',[1 h.graph1.axist]);         end         set(h.graph1.handler,'XData',h.graph1.time,'YData',h.graph1.loglik,...           'Visible','on');                            if h.ellipse.handler==-1,            axes(h.axes1);         end         [h.ellipse.handler,h.center]=...          pnmix(sets.X,h.ellipse.mi,h.ellipse.sigma,eI,h.ellipse.handler,h.center);      end      % comment%%      set(h.console,'String',text);      % store data      set(hfigure,'UserData',h);      % flush it on desktop      drawnow;   end % of while   % dissable button   set([h.editer,h.btstep,h.btclose,h.btplay,...        h.btreset,h.btinfo,h.btload,h.btcreat,h.txiter],...      'Enable','on');   % enable stop button   set(h.btstop,'Enable','off');   % copy the solution to global variables to be visible outside unsudemo   UNSU_MI = h.ellipse.mi;   UNSU_SIGMA = h.ellipse.sigma;   UNSU_PK = h.ellipse.Pk;   UNSU_solution = h.ellipse.solution;   UNSU_t = h.ellipse.t;case 'step'   % == One step of learning ===========================================
   h=get(hfigure,'UserData');

   % get data set
   sets=get(h.axes1,'UserData');

   % are data sets loaded ?
   if isempty(sets)==1 | h.ellipse.solution==1,
%%text=sprintf('No action performed. No data to work on. Load or create it!');%%      set(h.console,'String',text);
%%      set(h.txsteps,'String',text);
      return;
   end

   % get # of iter
   iter=str2num(get(h.editer,'String'));

   % # of classes   if h.ellipse.t==0,      h.ellipse.classes=str2num(get(h.edclasses,'String'));      h.ellipse.features=get(h.pufeatures,'Value');      set([h.xbrandom,h.edclasses,h.txclasses,h.pufeatures,h.txfeatures],'Enable','off');   end   % random init yes or no   randinit=get(h.xbrandom,'Value');   % perform one learning step   if h.ellipse.features==2,   % correlated       [h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk,eI,h.ellipse.solution,...        h.ellipse.t]=unsund(sets.X,h.ellipse.classes,iter,randinit,...        h.ellipse.t,h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk);   else % independent       [h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk,eI,h.ellipse.solution,...         h.ellipse.t]=unsuni(sets.X,h.ellipse.classes,iter,randinit,...         h.ellipse.t,h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk);   end   text=sprintf('step number t=%d ',h.ellipse.t);   if h.ellipse.solution==1,%%      text=strvcat(text,'Solution is found.');        text=[text ',solution was found'];      set(h.txsteps,'String',text);    else      set(h.txsteps,'String',text);      val= mln(sets.X,h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk);      text=sprintf('Log-likelihood, logL(t) = %f',val);      set(h.title2,'String',text);            h.graph1.time=[h.graph1.time,h.ellipse.t];      h.graph1.loglik=[h.graph1.loglik,val];      ylimit=get(h.axes2,'YLim');      if ylimit(2) < val,         set(h.axes2,'YLim',[ylimit(1) val+AXISY_ADD]);      end                    % is axis to be changed ?      if h.ellipse.t > h.graph1.axist,         h.graph1.axist=h.ellipse.t+iter*AXIST_ADD;         set(h.axes2,'XLim',[1 h.graph1.axist]);      end      set(h.graph1.handler,'XData',h.graph1.time,'YData',h.graph1.loglik,...        'Visible','on');                if h.ellipse.handler==-1,         axes(h.axes1);      end                  [h.ellipse.handler,h.center]=...      pnmix(sets.X,h.ellipse.mi,h.ellipse.sigma,eI,h.ellipse.handler,h.center);   end   % comment%%   set(h.console,'String',text);   % flush it on desktop
   drawnow;   set(hfigure,'UserData',h);   % copy the solution to global variables to be visible outside unsudemo
   UNSU_MI = h.ellipse.mi;
   UNSU_SIGMA = h.ellipse.sigma;
   UNSU_PK = h.ellipse.Pk;
   UNSU_solution = h.ellipse.solution;
   UNSU_t = h.ellipse.t;
case 'getfile'   % == Invoke standard open file dialog ====================================   % Opens file and checks if contains apropriate data, if yes than loads data.   h=get(hfigure,'UserData');   % change path to directory
%%   wres=what('unsuper');
%%   cd(wres.path);

   [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)==1,
         set(h.btload,'UserData',file);
         unsudemo('loadsets',hfigure);
      else
         errordlg('This file does not contain required data.','Bad file','modal');
      end
   end


case 'loadsets'
   % == Load sets ==================================================================
   % Get file name from the pop up menu according to menu pointer.

   h=get(hfigure,'UserData');   % Get file name with sets   file=get(h.btload,'UserData');   % Load sets   sets=load(file.pathname);   % store loaded sets   set(h.axes1,'UserData',sets);   % call reset   unsudemo('reset',hfigure);   drawnow;case 'reset'   % == Reset adaptation process, set up t=0 ================   h=get(hfigure,'UserData');                     % get handlers   % get file   file=get(h.btload,'UserData');   % get data set   sets=get(h.axes1,'UserData');   % zeroes parameters of the separation line   h.ellipse.mi=[];   h.ellipse.sigma=[];   h.ellipse.t=0;   h.ellipse.Pk=[];   h.center=-1;   h.ellipse.handler=-1;   h.ellipse.solution=0;   h.graph1.time=[];   h.graph1.axist=0;   h.graph1.loglik=[];   % clear axes prob.   clrchild(h.axes2);   axes(h.axes2);%%   setaxis(h.axes2,[0 1 0 1]);
   axis auto;   h.graph1.handler=plot([0],[0],'b','Parent',h.axes2,...      'EraseMode','background','Visible','off');            % store h
   set(hfigure,'UserData',h);   % enable Edit Line 'classes'   set([h.xbrandom,h.edclasses,h.txclasses,h.pufeatures,h.txfeatures],'Enable','on');   % comment
   text=sprintf('Log-likelihood, logL(t)');   set(h.title2,'String',text);   text=sprintf('step number t=0. ');   set(h.txsteps,'String',text);   % clears axes
   set(get(h.axes1,'Children'),'EraseMode','normal');
   %%%   cla;
   clrchild(h.axes1);
   drawnow;
   % set axes and plot mixture
   axes(h.axes1);
   if isempty(sets)==0,
      win=cmpwin(min(sets.X'),max(sets.X'),BORDER,BORDER);
      %%%      axis(win);
      setaxis(h.axes1,win);
%%      axes(h.axes1);
      ppoints(sets.X,sets.I);   end   %%%%%%%%%%%%%%%%%%%%%%%%%%%%


   % create comment
   if isempty(sets)==0,
      set(h.title1,'String',sprintf('File: %s, # of points K = %d',file.name,sum(sets.K)));
   else
      set(h.title1,'String','No data loaded');

      pos=get(h.axes1,'Position');
      fsize=min(pos(3),pos(4))/7;
      setaxis(h.axes1,[-1 1 -1 1]);
      builtin('text',0,0,'Press ''Load data'' button.',...
         'Parent',h.axes1,...         'HorizontalAlignment','center',...
         'FontUnits','normalized',...
         'Clipping','on',...
         'FontSize',fsize);
   end

   drawnow;

case 'creatdata'
   % == Invoke data set creator ============================================
   creatset('finite',10,'unsudemo','created',hfigure);

case 'created'
   % == Load new created data set ===========================================

   % get handler and make this figure active
   figure(hfigure);
   h=get(hfigure,'UserData');

   % get file name
   path=varargin{1};
   name=varargin{2};
   pathname=strcat(path,name);

   if checkdat(pathname,DATA_IDENT,2,0)==1,
      file.pathname=pathname;
      file.path=path;
      file.name=name;
      set(h.btload,'UserData',file);
      unsudemo('loadsets',hfigure);
   else
      errordlg('This file does not contain required data.','Bad file','modal');
   end

case 'info'
   % == Call standard Matlab`s info box =========================================
   helpwin(mfilename);

end % of switch

⌨️ 快捷键说明

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