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

📄 demo.m

📁 Feature Selection using matlab
💻 M
字号:
function varargout = DEMO(varargin)% Last Modified by GUIDE v2.5 24-Feb-2009 00:28:39gui_Singleton = 1;gui_State = struct('gui_Name',       mfilename, ...                   'gui_Singleton',  gui_Singleton, ...                   'gui_OpeningFcn', @DEMO_OpeningFcn, ...                   'gui_OutputFcn',  @DEMO_OutputFcn, ...                   'gui_LayoutFcn',  [] , ...                   'gui_Callback',   []);if nargin && ischar(varargin{1})    gui_State.gui_Callback = str2func(varargin{1});endif nargout    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else    gui_mainfcn(gui_State, varargin{:});endreturn% --- Executes just before DEMO is made visible.function DEMO_OpeningFcn(hObject, eventdata, handles, varargin)% hObject    handle to figure% varargin   command line arguments to DEMO (see VARARGIN)handles.output = hObject;handles.MahalInfoLossMethod = 'on';handles.ErrorEstimMethod    = 'ProposedAB';handles.FSMethod            = 'SFS';global StopByUserStopByUser = 0;axes(handles.YelLinesAxes); set(gca, 'Visible', 'off');handles.SliderValue = 10;guidata(hObject, handles);% --- Outputs from this function are returned to the command line.function varargout = DEMO_OutputFcn(hObject, eventdata, handles) % varargout  cell array for returning output args (see VARARGOUT);% hObject    handle to figurevarargout{1} = handles.output;% -----------------------------------------------------------------function RunFeatSelection_ClickedCallback(hObject, eventdata, ...                                                           handles)global StopByUserset(findobj(gcf,'Tag','ListSelFeats'), 'String', []);axes(handles.FeatSelCurve); cla reset;axes(handles.YelLinesAxes); cla reset; set(gca,'Visible','off',...                                                'YDir','reverse'); StopByUser = 0;guidata(hObject, handles);                                            if strcmp(handles.FSMethod,'SFS')|| strcmp(handles.FSMethod,'SFFS')[ResultMat, ConfMatOpt, Tlapse, handles.OptimumFeatureSet,...  OptimumCCR]= ForwSel_main(handles.file,...         handles.ErrorEstimMethod,handles.MahalInfoLossMethod,...                                        handles.FSMethod, handles);elseif strcmp(handles.FSMethod,'ReliefF')[FeatureWeightsOrdered, FeaturesIndexOrdered, ...       handles.OptimumFeatureSet] = ReliefF(handles.file,...                                 handles.ErrorEstimMethod,handles);handles.OptimumFeatureSet = sort(OptimumFeatureSet);guidata(hObject, handles);elseif strcmp(handles.FSMethod,'SBS') || ...                                    strcmp(handles.FSMethod,'SFBS')[ResultMat, ConfMatOpt, Tlapse, handles.OptimumFeatureSet,...  OptimumCCR]= BackSel_main(handles.file,...         handles.ErrorEstimMethod,handles.MahalInfoLossMethod,...                                        handles.FSMethod, handles);end                        guidata(hObject, handles);                         return% -----------------------------------------------------------------function StopFeatSelButton_ClickedCallback(hObject, eventdata,...                                                           handles)global StopByUserStopByUser = 1;guidata(hObject, handles);return% -----------------Data Load and View -----------------------------function OpenDataFile_ClickedCallback(hObject, eventdata, handles)handles.file = uigetfile('*.*');global StopByUserif handles.file~=0    % Only for viewing purpose    [Patterns, Targets] = DataLoadAndPreprocess(handles.file);    handles.PatternsToRunFS = Patterns;    handles.TargetsToRunFS  = Targets;    StopByUser = 0;    [NPatterns, KFeatures] = size(Patterns);    axes(handles.FeatSelCurve);cla reset;    axes(handles.ClassResAxes); cla reset;    axes(handles.ClassesLegendAxes); cla reset;    set(gca,'Visible','off');    axes(handles.YelLinesAxes); set(gca, 'Visible', 'off');    axis manual    axes(handles.PatternsFeaturesAxes);cla reset;        if NPatterns>KFeatures        imagesc(1.00001*Patterns');         xlabel('Patterns')        ylabel('Features','Rotation',0,'Position',[0 0]);    else        imagesc(1.00001*Patterns);          xlabel('Features')        ylabel('Patterns','Rotation',0,'Position',[0 0]);    end    title(handles.file);    colorbar;         set(findobj(gcf,'Tag','ListSelFeats'), 'String', ...         'Press Start to select features');    guidata(hObject, handles);endreturn%------------------------------------------------------------------function ListSelFeats_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), ...                         get(0,'defaultUicontrolBackgroundColor'));    set(hObject,'BackgroundColor','white');endset(hObject,'String','None Selected yet');%------------------------------------------------------------------function LoadAndClassifyButton_ClickedCallback(hObject,...                                                eventdata, handles)handles.fileToClassify = uigetfile('*.mat');PatternsToClassify = DataLoadAndPreprocess(handles.fileToClassify);handles.PatternsToClassify = PatternsToClassify(:,...                                        handles.OptimumFeatureSet);NPatternsToClassify = size(PatternsToClassify,1);       if NPatternsToClassify >= 10    set(findobj(gcf,'Tag','ClassResSlider'), ...                 'Max', NPatternsToClassify,...                 'Min', 10, ...                 'Value', 10, ...       'SliderStep',[1 1]/(NPatternsToClassify-10),'Enable', 'on');else                                      set(findobj(gcf,'Tag','ClassResSlider'), 'Enable', 'off');end  handles.SliderValue = 10;guidata(hObject, handles);                                    DEMO('ClassifyAndPlot',guidata(gcbo));guidata(hObject, handles);%------------------------------------------------------------------function ClassResSlider_Callback(hObject, eventdata, handles)handles.SliderValue = get(hObject,'Value');guidata(hObject, handles);DEMO('ClassifyAndPlot',guidata(gcbo));guidata(hObject, handles);%------------------------------------------------------------------function ClassResSlider_CreateFcn(hObject, eventdata, handles)if isequal(get(hObject,'BackgroundColor'), ...                          get(0,'defaultUicontrolBackgroundColor'))    set(hObject,'BackgroundColor',[.9 .9 .9]);end%------------------------------------------------------------------function ClassifyAndPlot(handles)PatternsToRunFS = handles.PatternsToRunFS(:,...                                        handles.OptimumFeatureSet);ProbsClass = BayesClassValidationSet(PatternsToRunFS,...               handles.TargetsToRunFS, handles.PatternsToClassify);NPatternsToClassify = size(ProbsClass,1);            SumProbsClass       = sum(ProbsClass,2);                   for IndexPatterns = 1:NPatternsToClassify    ProbsClass(IndexPatterns,:) = ProbsClass(IndexPatterns, :) ...                                     /SumProbsClass(IndexPatterns);end[Dummy, PredictionClass] = max(ProbsClass, [], 2);[NPatterns, CClasses]    = size(ProbsClass);axes(handles.ClassResAxes); cla reset; set(gca,'YDir','reverse','Color',[.925 .914 .847]);axis([-0.5 1.5 0.5 10.5]);CumProbsClass = [zeros(NPatterns,1) cumsum(ProbsClass,2)];ColorsToUse   = 'rgbycmk';YLocat        = 0;handles.SliderValue = 10 + NPatterns - ceil(handles.SliderValue);for IndexPattern = (handles.SliderValue-9):handles.SliderValue    YLocat = YLocat + 1;    if IndexPattern <= NPatterns        for IndexClass = 1:CClasses            hold on            text(-0.15, YLocat, num2str(IndexPattern),...                                   'HorizontalAlignment', 'right');            plot(CumProbsClass(IndexPattern, ...                IndexClass:(IndexClass+1)), ...                YLocat*ones(1,2), ...                ColorsToUse(IndexClass), 'LineWidth', 5);        end        text(1.2, YLocat, num2str(PredictionClass(IndexPattern)));    endendtext(-0.9  ,0.5,'Pattern #');text(0.2   ,0.5,'P(x|\Omega_i)');text(1     ,0.5,'Predict');axis([-0.5 1.5 0.5 10.5]);set(gca,'Visible','off');drawnowaxes(handles.ClassesLegendAxes);for IndexClass = 1:CClasses    text(0.1, IndexClass*0.5, ['Class ' num2str(IndexClass)],...                          'Color', ColorsToUse(IndexClass));endaxis([0 1.5 0.5 5])    % ------------- Menu Functions ------------------------------------function OpenDataMenu_Callback(hObject, eventdata, handles)DEMO('OpenDataFile_ClickedCallback',gcbo,[],guidata(gcbo));function RunFsMenu_Callback(hObject, eventdata, handles)DEMO('RunFeatSelection_ClickedCallback',gcbo,[],guidata(gcbo));function StopFSMenu_Callback(hObject, eventdata, handles)DEMO('StopFeatSelButton_ClickedCallback',gcbo,[],guidata(gcbo));function StandardCrossMenu_Callback(hObject, eventdata, handles)handles.ErrorEstimMethod = 'Standard';set(hObject,'Checked','on');set(findobj(gcf,'Tag','ResubMenu'),'Checked','off');set(findobj(gcf,'Tag','ProposedACrossMenu'),'Checked','off');set(findobj(gcf,'Tag','ProposedABCrossMenu'),'Checked','off');guidata(hObject, handles);function ProposedACrossMenu_Callback(hObject, eventdata, handles)handles.ErrorEstimMethod = 'ProposedA';set(hObject,'Checked','on');set(findobj(gcf,'Tag','ResubMenu'),'Checked','off');set(findobj(gcf,'Tag','ProposedABCrossMenu'),'Checked','off');set(findobj(gcf,'Tag','StandardCrossMenu'),'Checked','off');guidata(hObject, handles);function ProposedABCrossMenu_Callback(hObject, eventdata, handles)handles.ErrorEstimMethod = 'ProposedAB';set(hObject,'Checked','on');set(findobj(gcf,'Tag','ResubMenu'),'Checked','off');set(findobj(gcf,'Tag','ProposedACrossMenu'),'Checked','off');set(findobj(gcf,'Tag','StandardCrossMenu'),'Checked','off');guidata(hObject, handles);function ResubMenu_Callback(hObject, eventdata, handles)handles.ErrorEstimMethod = 'Resubstitution';set(hObject,'Checked','on');set(findobj(gcf,'Tag','ProposedABCrossMenu'),'Checked','off');set(findobj(gcf,'Tag','ProposedACrossMenu'),'Checked','off');set(findobj(gcf,'Tag','StandardCrossMenu'),'Checked','off');guidata(hObject, handles);function MahalOnMenu_Callback(hObject, eventdata, handles)handles.MahalInfoLossMethod = 'on';set(hObject,'Checked','on');set(findobj(gcf,'Tag','MahalOffMenu'),'Checked','off');guidata(hObject, handles);function MahalOffMenu_Callback(hObject, eventdata, handles)handles.MahalInfoLossMethod = 'off';set(hObject,'Checked','on');set(findobj(gcf,'Tag','MahalOnMenu'),'Checked','off');guidata(hObject, handles);%---------------- FS Menu Functions -------------------------------function SFS_Callback(hObject, eventdata, handles)handles.FSMethod  =  'SFS';FS_Method_ClearAllChecks(hObject, handles)set(hObject,'Checked','on');guidata(hObject, handles);function SFFS_Callback(hObject, eventdata, handles)handles.FSMethod  = 'SFFS';FS_Method_ClearAllChecks(hObject, handles)set(hObject,'Checked','on');guidata(hObject, handles);function ReliefF_Callback(hObject, eventdata, handles)handles.FSMethod  = 'ReliefF';           FS_Method_ClearAllChecks(hObject, handles)set(hObject,'Checked','on');guidata(hObject, handles);function SBS_Callback(hObject, eventdata, handles)handles.FSMethod  =  'SBS';FS_Method_ClearAllChecks(hObject, handles)set(hObject,'Checked','on');guidata(hObject, handles);function SFBS_Callback(hObject, eventdata, handles)handles.FSMethod  = 'SFBS'; FS_Method_ClearAllChecks(hObject, handles)set(hObject,'Checked','on');guidata(hObject, handles);function FS_Method_ClearAllChecks(hObject, handles)set(findobj(gcf,'Tag','ReliefF'),'Checked','off');set(findobj(gcf,'Tag','SFFS'),'Checked','off');set(findobj(gcf,'Tag','SFS'),'Checked','off');set(findobj(gcf,'Tag','SFBS'),'Checked','off');set(findobj(gcf,'Tag','SBS'),'Checked','off');guidata(hObject, handles);function HelpMenu_Callback(hObject, eventdata, handles)open('Help\Verver_ElsSigPro_08.pdf')

⌨️ 快捷键说明

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