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

📄 unsudemo.m

📁 四种SVM工具箱的分类与回归算法别人的
💻 M
📖 第 1 页 / 共 2 页
字号:
function []=unsudemo(action,hfigure,varargin)% UNSUDEMO demo on unsupervised (EM) learning algorithm.%% UNSUDEMO demonstrates the unsupervised (Expectation-Maximization) %   learning algorithm on simple examples in 2D space.%%   The aim is to estimate a statistical model described as the%   weighted mixture of Gaussians from unlabeled data %   (point set/patterns). The input data is supposed to be%   identicaly and independently seleted.%%   The found model is described by ellipsoids (shape of %   covariances) and a croses (mean value vectors). The value%   of the optimized log-likelihood function for given model %   is displayed as well.%% Control:%  Features     - select the model with Independent (diagonal covariance %                 matrix) or Dependent (full cov. matrix) features.%  % of classes - prescribe the number of classes (components of the %                 mixture of Gaussians).%               %  Iterations   - number of iterations in one step.%  Random init  - the initial model is randomly generated and/or it is %                 determined by the first n-patterns (mean values)%                 and sample covarinace matrix (covarinaces matrices).%%  FIG2EPS     - export screen to the PostScript file.%  Save model  - save current model to file.%  Load data   - load input point sets from file.%  Create data - invoke program for creating point sets.%  Reset       - set the tested algorithm to the initial state.%  Play        - run the tested algorithm.%  Stop        - stop the running algorithm.%  Step        - perform only one step.%  Info        - invoke the info box.%  Close       - close the program.%% See also UNSUNI, UNSUND.%% Statistical Pattern Recognition Toolbox, Vojtech Franc, Vaclav Hlavac% (c) Czech Technical University Prague, http://cmp.felk.cvut.cz% Written Vojtech Franc (diploma thesis) 10.11.1999% Modifications% 11-june-2001, V.Franc, comments added.% 27.02.00 V. Franc%  5. 4.00 V. Franc% 23.06.00 V. Hlavac Comments polished. Message when no data loaded.%                    Export of the solution to global variables.% 27-mar-2001, V.Franc, Graph og log-likelihood function added% Used functions: PPOINTS, PNMIX% == Global variables, used to export results from UNSUDEMO ========global UNSU_MI       % K vectors with mean valuesglobal UNSU_SIGMA    % K covariance matricesglobal UNSU_PK       % K apriori probabilities for each distributions.%global UNSU_eI      % Used only by the next iteration, not globalisedglobal UNSU_solution % 1 if alg. finished in stationary point, 0 otherwiseglobal UNSU_t        % Number of iterations the algorithm performed% == Constants =====================================================AXIST_ADD=10;AXISY_ADD=5;BORDER=0.25;           % space betwean window outer and the points
CENTERSIZE=10;         % size of center point
LINE_WIDTH=1;
AXIST_ADD=10;
DATA_IDENT='Finite sets, enumeration';   % file identifier
randinit=1;

if nargin < 1,
   action = 'initialize';
end

% What action is required ?
switch lower(action)

case 'initialize'
   % == Initialize user interface control and figure window ================

   % == Figure   % =============================================================
   left=0.2;   width=0.6;   bottom=0.1;   height=0.8;   hfigure=figure('Name','Unsupervised learning', ...      'Visible','off',...      'NumberTitle','off', ...      'Units','normalized', ...      'Position',[left bottom width height],...      'tag','Unsudemo',...      'doublebuffer','on',...      'backingstore','off');      % == Axes ===============================================================   left=0.1;   width=0.65;   bottom=0.45;   height=0.5;   haxes1=axes(...      'Units','normalized', ...      'NextPlot','add',...      'UserData',[],...      'Position',[left bottom width height]);   xlabel('feature x');   ylabel('feature y');   htitle1=title('No data loaded',...
      'VerticalAlignment','bottom',...
      'Parent',haxes1,...      'HorizontalAlignment','left',...
      'Units','normalized',...
      'Position',[0 1 0]);
   % axes log-Likelihood graph   left=0.1;   width=0.65;   bottom=0.1;   height=0.25;   haxes2=axes(...      'Units','normalized', ...      'NextPlot','add',...      'Position',[left bottom width height]);   ylabel('logL(t)');      htitle2=title('Log-likelihood function',...       'Parent',haxes2,...       'VerticalAlignment','bottom',...       'Units','normalized',...       'HorizontalAlignment','left',...       'Position',[0 1 0]);    htxsteps=xlabel('step number t=0');            % == Comment Window frame ==============================================
%%   bottom=0.05;
%%   height=0.16;
%%   uicontrol( ...
%%        'Style','frame', ...
%%        'Units','normalized', ...
%%        'Position',[left bottom width height], ...
%%        'BackgroundColor',[0.5 0.5 0.5]);

   % Text label
%   uicontrol( ...
%        'Style','text', ...
%        'Units','normalized', ...
%        'Position',[left height-0.01 width 0.05], ...
%        'BackgroundColor',[0.5 0.5 0.5], ...
%        'ForegroundColor',[1 1 1], ...
%        'String','Comment Window');

   % Edit window
%%   border=0.01;
%%   hconsole=uicontrol( ...
%%        'Style','edit', ...
%%        'HorizontalAlignment','left', ...
%%        'Units','normalized', ...
%%        'Max',10, ...
%%        'BackgroundColor',[1 1 1], ...
%%        'Position',[left+border bottom width-2*border height-0.05], ...
%%      'Enable','inactive',...
%%        'String','');
   % == Buttons ===========================================================
   % -- Export to EPS ---------
   width=0.1;
   left=0.75-width;
   bottom=0.95;
   height=0.04;
   hbtclose = uicontrol(...
    'Units','Normalized', ...
      'Callback','fig2eps(gcf)',...
        'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','FIG2EPS');
   %----------------------------------

   % Close button
   left=0.8;
   bottom=0.05;
   height=0.044;
   width=0.15;
   hbtclose = uicontrol(...
    'Units','Normalized', ...
      'Callback','close(gcf)',...
        'ListboxTop',0, ...
        'Position',[left bottom width height], ...
        'String','Close');

   % Info button: call stanard info box
   bottom=bottom+1.5*height;
   hbtinfo = uicontrol(...
    'Units','Normalized', ...
      'Callback','unsudemo(''info'',gcf)',...
        'ListboxTop',0, ...
        'Position',[left bottom width height], ...
        'String','Info');

   % Step button: perform one adaptation step
   bottom=bottom+1.5*height;
    hbtstep = uicontrol(...
      'Units','Normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Step', ...
      'Interruptible','off',...
      'Callback','unsudemo(''step'',gcf)');

   % Stop button: stop process of adaptation
   bottom=bottom+height;   hbtstop = uicontrol(...
    'Units','Normalized', ...
        'ListboxTop',0, ...
        'Position',[left bottom width height], ...      'String','Stop', ...
      'Callback','set(gcbo,''UserData'',1)',...      'Enable','off');
   % Play button: begin adaptation
   bottom=bottom+height;
   hbtplay = uicontrol(...
    'Units','Normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Play', ...
      'Callback','unsudemo(''play'',gcf)');

   % Reset button: set up t = 0
   bottom=bottom+height;
    hbtreset = uicontrol(...
      'Units','Normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Reset', ...
      'Callback','unsudemo(''reset'',gcf)');

   % Create data
   bottom=bottom+1.5*height;
    hbtcreat = uicontrol(...
      'Units','Normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Create data', ...
      'Callback','unsudemo(''creatdata'',gcf)');

   % Load data
   bottom=bottom+1*height;
    hbtload = uicontrol(...
      'Units','Normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Load data', ...
      'Callback','unsudemo(''getfile'',gcf)');
   % Save model   bottom=bottom+1.5*height;
    hbtSaveModel = uicontrol(...
      'Units','Normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Save model', ...
      'Callback','unsudemo(''savemodel'',gcf)');
   % Load model%   bottom=bottom+1*height;
%    hbtLoadModel = uicontrol(...
%      'Units','Normalized', ...
%      'ListboxTop',0, ...
%        'Position',[left bottom width height], ...
%      'String','Load model', ...
%      'Callback','unsudemo(''loadmodel'',gcf)');

   % == PopUp Menu =====================================================
   bottom=0.95-height;
   htxfeatures=uicontrol( ...
      'Style','text', ...
      'Units','normalized', ...
      'Position',[left bottom width height], ...
      'String','Features');
   % popup menu
   bottom=bottom-height;
   hpufeatures=uicontrol( ...
      'Style','popup', ...
      'Units','normalized', ...
      'Position',[left bottom width height], ...
      'String',['Independent ';'Dependent   ']);

   % == Edit line ==========================================================
   % prior info about number of the classes
   bottom=bottom-1.3*height;
   htxclasses=uicontrol( ...
      'Style','text', ...
      'Units','normalized', ...
      'Position',[left bottom width 0.9*height], ...
      'String','# of classes');
   bottom=bottom-height;
   hedclasses = uicontrol(...
    'Units','normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'Style','edit',...
      'String','2');

   % Iterations
   bottom=bottom-1.3*height;
   htxiter=uicontrol( ...
      'Style','text', ...
      'Units','normalized', ...
      'Position',[left bottom width 0.9*height], ...
      'String','Iterations');
   bottom=bottom-height;
   hediter = uicontrol(...
    'Units','normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'Style','edit',...
      'String','1');

   % == CheckBox =========================================================

   % Should the first algorithm step be random or not ?
   bottom=bottom-height*1.3;
    hxbrandom = uicontrol(...
    'Style','checkbox', ...
       'Units','normalized', ...
    'ListboxTop',0, ...
       'Position',[left bottom width height], ...
    'String','Random init');
   %=====================================================================
   % Store handlers   handlers=struct(...      'ellipse',struct('handler',-1,'mi',[],'sigma',[],'t',0,'Pk',[],...        'solution',0),...      'center',[],...      'graph1',struct('handler',-1,'loglik',[],'axist',0,'time',[]),...      'title1',htitle1,...      'title2',htitle2,...      'btSaveModel',hbtSaveModel,...%      'btLoadModel',hbtLoadModel,...      'btstep',hbtstep,...      'btstop',hbtstop,...       'btclose',hbtclose,...      'btplay',hbtplay,...      'btreset',hbtreset,...      'btinfo',hbtinfo,...      'btload',hbtload,...      'btcreat',hbtcreat,... %%%      'console',hconsole,...      'txsteps',htxsteps,...      'txclasses',htxclasses,...      'txiter',htxiter,...      'txfeatures',htxfeatures,...      'pufeatures',hpufeatures,...      'editer',hediter,...      'xbrandom',hxbrandom,...      'axes1',haxes1,...      'axes2',haxes2,...      'edclasses',hedclasses);   set(hfigure,'UserData',handlers)   % Reset   unsudemo('reset',hfigure);   % Put figure on desktop   set(hfigure,'Visible','on');   drawnow; case 'savemodel'   % == Save model ============================================   h=get(hfigure,'UserData');      if h.ellipse.t == 0,     errordlg('No model has found yet.','No model to save','modal');     return;   end      [name,path]=uiputfile('*.mat','Save model');   if name ~= 0,          MI=h.ellipse.mi;        % mean values     SIGMA=h.ellipse.sigma;  % covariance matrices     Pk=h.ellipse.Pk;        % a-priory probabilities     solution=h.ellipse.solution;     steps=h.ellipse.t;      % number of performed steps          I=[1:size(MI,2)];     N=size(MI,1);     id=dataid(2);     K=ones(1,size(MI,2));          save(strcat(path,name),'id','K','N','I',...         'steps','solution','Pk','SIGMA','MI');        end       case 'loadmodel'   % == Load model ============================================   h=get(hfigure,'UserData');

⌨️ 快捷键说明

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