📄 classifier_commands.m
字号:
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 + -