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

📄 classifier_commands.m

📁 数据挖掘matlab源码
💻 M
📖 第 1 页 / 共 2 页
字号:
        evalin('base','h =  findobj(''Tag'', ''TrainSetError'');')
        evalin('base','set(h, ''String'', '''');')
        evalin('base','h = findobj(''Tag'', ''FileNameInput'');')
        evalin('base','set(h, ''String'', [pathname filename]);')
        evalin('base','[features, targets, distribution_parameters] = load_file([pathname, filename], region);')
        evalin('base','clear pathname filename');
        if (evalin('base', 'isempty(distribution_parameters)')),
            evalin('base', 'clear distribution_parameters');
        end
        if (evalin('base', '~isempty(features)'))
            evalin('base','region = calculate_region(features, [zeros(1,4) 100]);')
        end
        
    end
    
case 'EnterManualDist'
    classifier_commands('ClearWorkspace');
    ttl	= 'Manual definition of distribution';
    n0	= str2num(char(inputdlg('Enter the number of Gaussians in class 0:',ttl,1,cellstr(num2str(1)))));
    n1	= str2num(char(inputdlg('Enter the number of Gaussians in class 1:',ttl,1,cellstr(num2str(1)))));
    
    distribution_parameters.p0	= str2num(char(inputdlg('Enter the probability of class 0:',ttl,1,cellstr(num2str(0.5)))));
    
    distribution_parameters.m0	= zeros(n0,2);
    distribution_parameters.m1 	= zeros(n1,2);
    distribution_parameters.s0  	= zeros(n0,2,2);
    distribution_parameters.s1  	= zeros(n1,2,2);
    for i = 1:n0, 
        distribution_parameters.s0(i,:,:) = eye(2); 
    end
    for i = 1:n1, 
        distribution_parameters.s1(i,:,:) = eye(2); 
    end
    distribution_parameters.w0 	= ones(n0,1)/n0;
    distribution_parameters.w1 	= ones(n1,1)/n1;
    save synthetic distribution_parameters
    uiwait(enter_distributions);
    evalin('base','region = [0 0 0 0 500];')
    evalin('base','distribution_parameters = load_file(''synthetic'', region);')
    
case 'ManualGraphData'
    %Graphically enter a data set
    evalin('base','if ~(exist(''region'')), region = [-1 1 -1 1 100];end');
    evalin('base','if (sum(abs(region(1:4))) == 0), region = [-1 1 -1 1 100];end');
    evalin('base','[new_features, new_targets, new_params, region] = click_points(region);');   
    new_features = evalin('base','new_features');
    new_targets  = evalin('base','new_targets');
    new_params   = evalin('base','new_params');

    s = questdlg('Do you want to permute the data (Recommended)?','Graphic input','Yes','No','Yes');
    if strcmp(s,'Yes'),
        i               = randperm(length(new_targets));
        new_targets     = new_targets(i);
        new_features    = new_features(:,i);
    end
        
    if (evalin('base','exist(''features'')')),
        features = evalin('base','features');
        targets  = evalin('base','targets');
    else
        features = [];
        targets  = [];
    end
    if (evalin('base','exist(''distribution_parameters'')')),
        distribution_parameters = evalin('base','distribution_parameters');
    else
        distribution_parameters = [];
    end
    
    if isempty(distribution_parameters),
        %If now features exist on the workspace, this is a new distribution, so take it
        %(Otherwise, we may be saving only pars of the distribution)
        if isempty(features)
            distribution_parameters = new_params;
        end
    else
        distribution_parameters.m0=[distribution_parameters.m0; new_params.m0];
        distribution_parameters.m1=[distribution_parameters.m1; new_params.m1];
        distribution_parameters.s0=[distribution_parameters.s0; new_params.s0];
        distribution_parameters.s1=[distribution_parameters.s1; new_params.s1];
        distribution_parameters.w0=[distribution_parameters.w0; new_params.w0];
        distribution_parameters.w1=[distribution_parameters.w1; new_params.w1];
        distribution_parameters.w0=distribution_parameters.w0/sum(distribution_parameters.w0);
        distribution_parameters.w1=distribution_parameters.w1/sum(distribution_parameters.w1);
        distribution_parameters.p0=length(distribution_parameters.w0)/(length(distribution_parameters.w0)+length(distribution_parameters.w1));
    end
    
    features = [features, new_features];
    targets  = [targets, new_targets];
    
    assignin('base', 'features', features);
    assignin('base', 'targets', targets);
    assignin('base', 'distribution_parameters', distribution_parameters);
    
    evalin('base','region = calculate_region(features, [zeros(1,4) 100]);')
    
case 'Save'
    evalin('base','[filename, pathname] = uiputfile(''*.mat'', ''Save file ...'');')
    if (evalin('base','filename ~= 0')),
        if (evalin('base', 'exist(''features'')')),
            if (evalin('base', 'exist(''distribution_parameters'')')),
                evalin('base','save([pathname filename], ''features'', ''targets'', ''distribution_parameters'');')
            else
                evalin('base','save([pathname filename], ''features'', ''targets'');')
            end
        else
            if (evalin('base', 'exist(''distribution_parameters'')')),
                evalin('base','save([pathname filename], ''distribution_parameters'');')
            else
                error('No data to save!')
            end
        end         
    end
    
case 'GenerateDistData'
    if (evalin('base','~exist(''distribution_parameters'')')),
        error('The parameters needed to generate the data are missing on the workspace!')
    end
    evalin('base','region = [0 0 0 0 100];')
    evalin('base','[features, targets] = generate_data_set  (distribution_parameters, region);')
    evalin('base','region = calculate_region(features, [zeros(1,4) 100]);')
    
case 'Params'
    %Print to mean, cov, main directions to workspace 
    if (evalin('base','~isempty(whos(''features''))'))
        
        %There are features on workspace
        evalin('base','train_one  = find(targets == 1);')
        evalin('base','train_zero = find(targets == 0);')
        
        %Estimate mean and covariance for class 0
        m0 = evalin('base','mean(features(:,train_zero)'')');
        c0 = evalin('base','cov(features(:,train_zero)'',1)');
        p0 = evalin('base','length(train_zero)/length(targets)');
        
        %Estimate mean and covariance for class 1
        m1 = evalin('base','mean(features(:,train_one)'')');
        c1 = evalin('base','cov(features(:,train_one)'',1)');
        
        Chernoff = evalin('base','Chernoff(mean(features(:,train_zero)''), cov(features(:,train_zero)'',1), mean(features(:,train_one)''), cov(features(:,train_one)'',1),length(train_one)/length(targets))');
        Bhattacharyya = evalin('base','Bhattacharyya(mean(features(:,train_zero)''), cov(features(:,train_zero)'',1), mean(features(:,train_one)''), cov(features(:,train_one)'',1),length(train_one)/length(targets))');
        Discriminability = evalin('base','Discriminability(mean(features(:,train_zero)''), cov(features(:,train_zero)'',1), mean(features(:,train_one)''), cov(features(:,train_one)'',1),length(train_one)/length(targets))');
        
        h0 = GaussianParameters;
        set(findobj(h0,'Tag','txtMean00'),'String',num2str(m0(1),3))
        set(findobj(h0,'Tag','txtMean01'),'String',num2str(m0(2),3))
        set(findobj(h0,'Tag','txtMean10'),'String',num2str(m1(1),3))
        set(findobj(h0,'Tag','txtMean11'),'String',num2str(m1(2),3))
        
        set(findobj(h0,'Tag','txtCov000'),'String',num2str(c0(1,1),3))
        set(findobj(h0,'Tag','txtCov001'),'String',num2str(c0(1,2),3))
        set(findobj(h0,'Tag','txtCov010'),'String',num2str(c0(2,1),3))
        set(findobj(h0,'Tag','txtCov011'),'String',num2str(c0(2,2),3))
        set(findobj(h0,'Tag','txtCov100'),'String',num2str(c1(1,1),3))
        set(findobj(h0,'Tag','txtCov101'),'String',num2str(c1(1,2),3))
        set(findobj(h0,'Tag','txtCov110'),'String',num2str(c1(2,1),3))
        set(findobj(h0,'Tag','txtCov111'),'String',num2str(c1(2,2),3))
        
        set(findobj(h0,'Tag','txtBound1'),'String',['The Bhattacharyya bound value is: ' num2str(Bhattacharyya,3)])
        set(findobj(h0,'Tag','txtBound2'),'String',['The Chernoff bound value is: ' num2str(Chernoff,3)])
        set(findobj(h0,'Tag','txtDiscriminability'),'String',['The discriminability value is: ' num2str(Discriminability,3)])
        
        waitfor(h0)
    end
    
case 'MenuZoom'
    evalin('base','umtoggle(findobj(gcbf,''Label'',''&Zoom''));')
    evalin('base','h = findobj(gcbf, ''Label'', ''&Zoom'');')
    evalin('base','v = strcmp(''on'',get(h, ''Checked''));')
    if evalin('base','v'),
        evalin('base','zoom on')
    else                      
        evalin('base','zoom off')
    end
    
case 'MenuGrid'
    evalin('base','umtoggle(findobj(gcbf,''Label'',''&Grid''));')
    evalin('base','h = findobj(gcbf, ''Label'', ''&Grid'');')
    evalin('base','v = strcmp(''on'',get(h, ''Checked''));')
    if evalin('base','v'),
       evalin('base','grid on')
       evalin('base','set(gca,''layer'',''top'')')
    else
       evalin('base','grid off')
    end
    
case 'Copy'
    evalin('base','map=colormap;')
    evalin('base','h = figure;')
    evalin('base','c = copyobj(findobj(''Type'',''axes''),h);')
    evalin('base','set(gca,''Position'',[0.1300    0.1100    0.7750    0.8150])')
    evalin('base','colormap(map)')
    evalin('base','print -dmeta')
    
case 'Print'
    evalin('base','map=colormap;')
    evalin('base','h = figure;')
    evalin('base','c = copyobj(findobj(''Type'',''axes''),h);')
    evalin('base','set(gca,''Position'',[0.1300    0.1100    0.7750    0.8150])')
    evalin('base','colormap(map)')
    evalin('base','printpreview')
    
case 'Exit'
    evalin('base','h = findobj(''Tag'', ''Messages'');')
    evalin('base','set(h,''String'','''');')
    evalin('base','h =  findobj(''Tag'', ''TestSetError'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','h =  findobj(''Tag'', ''TrainSetError'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','h =  findobj(''Tag'', ''FileNameInput'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','h =  findobj(''Tag'', ''PercentTraining'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','h =  findobj(''Tag'', ''Redraws'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','h =  findobj(''Tag'', ''HowMany'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','set(gcf, ''pointer'', ''arrow'');')
    
    evalin('base','close') 
    
case 'SeparatePreprocessing'
    evalin('base','umtoggle(findobj(gcbf,''Label'',''&Perform preprocessing separately for each class''));')
    
case 'ShowPartitions'
    evalin('base','umtoggle(findobj(gcbf,''Label'',''&Show center of partitions during training''));')
    
case 'ShowTrainingPoints'
    evalin('base','umtoggle(findobj(gcbf,''Label'',''Show &Training points''));')
    
case 'ShadeDecisionRegion'
    evalin('base','umtoggle(findobj(gcbf,''Label'',''Shade &Decision Regions''));')
    
case 'ClearBounds'
    %Clear all bounds
    evalin('base','hold off')
    evalin('base','plot_scatter(features, targets, gcbf)')
    evalin('base','drawnow')
    evalin('base','h =  findobj(''Tag'', ''TestSetError'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','h =  findobj(''Tag'', ''TrainSetError'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','h = findobj(gcbf, ''Label'', ''&Grid'');')
    evalin('base','v = strcmp(''on'',get(h, ''Checked''));')
    if evalin('base','v'),
        evalin('base','grid on')
       evalin('base','set(gca,''layer'',''top'')')
    else
        evalin('base','grid off')
    end
    evalin('base','h = findobj(''Tag'', ''Messages'');')
    evalin('base','set(h,''String'','''');')
    
case 'ClearWorkspace'
    %Clear all 
    evalin('base','h =  findobj(''Tag'', ''TestSetError'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','h =  findobj(''Tag'', ''TrainSetError'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','h =  findobj(''Tag'', ''BayesError'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','h =  findobj(''Tag'', ''FileNameInput'');')
    evalin('base','set(h, ''String'', '''');')
    evalin('base','hold off')
    evalin('base','plot(0,0); grid on;')
    evalin('base','h = findobj(''Tag'', ''Messages'');')
    evalin('base','set(h,''String'','''');')
    evalin('base','clear all')
    
case 'MixFeatures'
    %Mix (permute) the features
    if (evalin('base','exist(''features'')') & evalin('base','exist(''targets'')')),
        evalin('base','indexes  = randperm(length(targets));')
        evalin('base','features = features(:,indexes);')
        evalin('base','targets  = targets(indexes);')
        evalin('base','h = findobj(''Tag'', ''Messages'');')
        evalin('base','set(h,''String'',''Features were permuted.'');')
    else
        error('No features or targets in workspace!');
    end
    evalin('base','h = findobj(gcbf, ''Label'', ''&Grid'');')
    evalin('base','v = strcmp(''on'',get(h, ''Checked''));')
    if evalin('base','v'),
        evalin('base','grid on')
       evalin('base','set(gca,''layer'',''top'')')
    else
        evalin('base','grid off')
    end
    
case 'HelpPreprocessing'
    h       = findobj(gcbf, 'Tag', 'Preprocessing');
    chosen  = get(h, 'Value');
    evalin('base', ['help ' Preprocessing_methods(chosen).Name ])
    
case 'HelpClassifier'
    h       = findobj(gcbf, 'Tag', 'Algorithm');
    chosen  = get(h, 'Value');
    evalin('base', ['help ' Algorithms(chosen).Name ])
    
case 'About'
    im = imread('about','bmp');
    plot(0,0)
    h  = image(im);
end

⌨️ 快捷键说明

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