An example of using feature selection with a classifier

  1. For CoSMoMVPA's copyright information and license terms, #
  2. see the COPYING file distributed with CoSMoMVPA. #
% This example plots classification accuracy as a function of the number of
% features selected using an ANOVA on training set data
config=cosmo_config();
data_path=fullfile(config.tutorial_data_path,'ak6','s01');

data_fn=fullfile(data_path,'glm_T_stats_perrun.nii');
mask_fn=fullfile(data_path,'vt_mask.nii');
ds=cosmo_fmri_dataset(data_fn,'mask',mask_fn,...
                        'targets',repmat(1:6,1,10),...
                        'chunks',floor(((1:60)-1)/6)+1);


% remove constant features
ds=cosmo_remove_useless_data(ds);

opt=struct();
opt.child_classifier=@cosmo_classify_naive_bayes;
opt.feature_selector=@cosmo_anova_feature_selector;

partitions=cosmo_nfold_partitioner(ds);

ratios_to_keep=.05:.05:.95;
nratios=numel(ratios_to_keep);

accs=zeros(nratios,1);

for k=1:nratios
    opt.feature_selection_ratio_to_keep=ratios_to_keep(k);

    [pred, acc]=cosmo_crossvalidate(ds, ...
                                     @cosmo_meta_feature_selection_classifier, ...
                                     partitions, opt);
    accs(k)=acc;
end

plot(ratios_to_keep,accs);
xlabel('ratio of selected feaures');
ylabel('classification accuracy');
Warning: cosmo_meta_feature_selection_classifier is deprecated and will be
removed in the future; use cosmo_classify_meta_feature_selection instead

This warning is shown only once, but the underlying issue may occur multiple
times. To show each warning:
 - every time:   cosmo_warning('on')
 - once:         cosmo_warning('once')
 - never:        cosmo_warning('off')