[pymvpa] RFE + SplitClassifier

Matthias Hampel mhampel at uni-osnabrueck.de
Tue Jul 24 08:56:51 UTC 2012


Am 22.07.2012 10:33, schrieb Michael Hanke:
> Hi,
>
> On Fri, Jul 20, 2012 at 08:35:25AM +0200, mhampel at uni-osnabrueck.de wrote:
>> I'm currently working on my master thesis and using the PyMVPA toolbox for
>> the analysis of my fMRI data. My script for Recursive Feature Elimination
>> (RFE) is working with a CrossValidation but unfortunately not with a
>> SplitClassifier. Could you please give me some advice on that?
>>
>> In my script (see below) I use the RFE example from the documentation. If
>> I add a CrossValidation I get an error value for each validation step. But
>> I'm also interested in the sensitivity maps of each step and I couldn't
>> figure out if that is possible with CrossValidation. Therefore, I tried to
>> use a SplittClassifier but I always get the same error message in
>> self.train(ds).
>>
>> Could someone tell me the difference between SplitClassifier and
>> CrossValidation? I assumed that the SplitClassifier also does a
>> cross-validation internally. What do I have to change in my code to make
>> it work?
> Your assumption is correct and your approach sounds appropriate. Could
> you please provide some more information on your dataset (``print
> ds.summary``) and the actual error message (incl. traceback) that you
> are observing? At first glance, and without this additional information
> I can't see an obvious problem.
>
> Cheers,
>
> Michael
>
>

It's good to know that I wasn't completely wrong. Here is the error 
message and the whole output of ds.summary

Best,
Matthias

*Error message:*

Traceback (most recent call last):
   File "RFE_Splitt1.py", line 114, in <module>
     sens = cv_sensana(dataset)
   File "/usr/lib/pymodules/python2.6/mvpa2/base/learner.py", line 229, 
in __call__
     self.train(ds)
   File "/usr/lib/pymodules/python2.6/mvpa2/base/learner.py", line 119, 
in train
     result = self._train(ds)
   File "/usr/lib/pymodules/python2.6/mvpa2/measures/base.py", line 782, 
in _train
     return clf.train(dataset)
   File "/usr/lib/pymodules/python2.6/mvpa2/base/learner.py", line 119, 
in train
     result = self._train(ds)
   File "/usr/lib/pymodules/python2.6/mvpa2/clfs/meta.py", line 1211, in 
_train
     clf = clf_template.clone()
   File "/usr/lib/pymodules/python2.6/mvpa2/clfs/base.py", line 326, in 
clone
     return deepcopy(self)
   File "/usr/lib/python2.6/copy.py", line 189, in deepcopy
     y = _reconstruct(x, rv, 1, memo)
   File "/usr/lib/python2.6/copy.py", line 338, in _reconstruct
     state = deepcopy(state, memo)
   File "/usr/lib/python2.6/copy.py", line 162, in deepcopy
     y = copier(x, memo)
   File "/usr/lib/python2.6/copy.py", line 255, in _deepcopy_dict
     y[deepcopy(key, memo)] = deepcopy(value, memo)
   File "/usr/lib/python2.6/copy.py", line 189, in deepcopy
     y = _reconstruct(x, rv, 1, memo)
   File "/usr/lib/python2.6/copy.py", line 338, in _reconstruct
     state = deepcopy(state, memo)
   File "/usr/lib/python2.6/copy.py", line 162, in deepcopy
     y = copier(x, memo)
   File "/usr/lib/python2.6/copy.py", line 255, in _deepcopy_dict
     y[deepcopy(key, memo)] = deepcopy(value, memo)
   File "/usr/lib/python2.6/copy.py", line 189, in deepcopy
     y = _reconstruct(x, rv, 1, memo)
   File "/usr/lib/python2.6/copy.py", line 338, in _reconstruct
     state = deepcopy(state, memo)
   File "/usr/lib/python2.6/copy.py", line 162, in deepcopy
     y = copier(x, memo)
   File "/usr/lib/python2.6/copy.py", line 255, in _deepcopy_dict
     y[deepcopy(key, memo)] = deepcopy(value, memo)
   File "/usr/lib/python2.6/copy.py", line 189, in deepcopy
     y = _reconstruct(x, rv, 1, memo)
   File "/usr/lib/python2.6/copy.py", line 338, in _reconstruct
     state = deepcopy(state, memo)
   File "/usr/lib/python2.6/copy.py", line 162, in deepcopy
     y = copier(x, memo)
   File "/usr/lib/python2.6/copy.py", line 255, in _deepcopy_dict
     y[deepcopy(key, memo)] = deepcopy(value, memo)
   File "/usr/lib/python2.6/copy.py", line 162, in deepcopy
     y = copier(x, memo)
   File "/usr/lib/python2.6/copy.py", line 228, in _deepcopy_list
     y.append(deepcopy(a, memo))
   File "/usr/lib/python2.6/copy.py", line 189, in deepcopy
     y = _reconstruct(x, rv, 1, memo)
   File "/usr/lib/python2.6/copy.py", line 338, in _reconstruct
     state = deepcopy(state, memo)
   File "/usr/lib/python2.6/copy.py", line 162, in deepcopy
     y = copier(x, memo)
   File "/usr/lib/python2.6/copy.py", line 255, in _deepcopy_dict
     y[deepcopy(key, memo)] = deepcopy(value, memo)
   File "/usr/lib/python2.6/copy.py", line 189, in deepcopy
     y = _reconstruct(x, rv, 1, memo)
   File "/usr/lib/python2.6/copy.py", line 323, in _reconstruct
     y = callable(*args)
   File "/usr/lib/python2.6/copy_reg.py", line 93, in __newobj__
     return cls.__new__(cls, *args)
TypeError: object.__new__(numpy.ufunc) is not safe, use 
numpy.ufunc.__new__()

*
ds.summary:*

<bound method Dataset.summary of Dataset(array([[ 1.66507124,  
0.98552763,  0.99950778, ..., -0.80142293,
         -1.55295612, -0.11781561],
        [-1.2762681 ,  1.06889722, -0.76036066, ..., -0.21888896,
         -1.43887115, -0.54421524],
        [ 0.06450247,  0.27004099, -0.85426304, ...,  0.79609439,
          0.36335411,  0.14502004],
        ...,
        [-0.12649097,  0.53453771,  0.45816722, ..., -0.11964775,
          0.12668331,  0.10950945],
        [-1.07348862, -0.89344273, -0.7004796 , ...,  0.08824224,
         -1.11599424,  1.2118099 ],
        [ 0.75494889,  1.20532665,  1.58585258, ..., -0.63245843,
          0.89628655, -0.26900842]]), 
sa=SampleAttributesCollection(items=[ArrayCollectable(name='chunks', 
doc=None, value=array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  
1.,  1.,  1.,  1.,
         1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
         1.,  1.,  1.,  1.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,
         2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,
         2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  3.,  3.,  3.,  3.,  3.,
         3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,
         3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  4.,
         4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,
         4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,
         4.,  4.,  4.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,
         5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,
         5.,  5.,  5.,  5.,  5.,  5.,  5.,  6.,  6.,  6.,  6.,  6.,  6.,
         6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,
         6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  7.,  7.,
         7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,
         7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,
         7.,  7.]), length=210), ArrayCollectable(name='time_indices', 
doc=None, value=array([   7,   12,   16,   20,   24,   29,   33,   38,   
43,   48,   52,
          57,   62,   66,   70,   75,   80,   85,   89,   94,   98,  103,
         108,  112,  118,  123,  127,  132,  136,  141,  157,  162,  166,
         171,  175,  180,  185,  189,  194,  199,  204,  209,  213,  218,
         223,  228,  233,  238,  243,  248,  252,  257,  261,  266,  270,
         275,  279,  284,  289,  294,  309,  314,  319,  324,  329,  333,
         338,  342,  347,  351,  355,  360,  364,  369,  374,  378,  383,
         387,  392,  397,  401,  406,  411,  415,  420,  425,  429,  433,
         438,  443,  462,  467,  472,  476,  481,  485,  490,  495,  500,
         505,  510,  514,  519,  524,  528,  532,  538,  542,  547,  552,
         556,  561,  566,  571,  575,  580,  585,  589,  595,  599,  612,
         616,  621,  625,  630,  635,  640,  644,  649,  653,  658,  663,
         668,  672,  677,  682,  686,  691,  696,  700,  705,  710,  715,
         720,  725,  729,  734,  738,  742,  746,  759,  764,  769,  774,
         779,  783,  788,  793,  798,  802,  807,  812,  817,  821,  826,
         831,  836,  840,  846,  850,  855,  859,  865,  870,  874,  878,
         883,  888,  892,  897,  908,  913,  918,  922,  927,  931,  936,
         941,  946,  950,  955,  959,  965,  970,  974,  979,  984,  989,
         994,  998, 1003, 1008, 1012, 1017, 1022, 1026, 1031, 1036, 1041,
        1046]), length=210), ArrayCollectable(name='targets', doc=None, 
value=array(['onsetNP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetP', 'onsetNP',
        'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetP', 'onsetP',
        'onsetP', 'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetNP',
        'onsetP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetNP',
        'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetP', 'onsetNP',
        'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetP',
        'onsetNP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetNP', 'onsetNP',
        'onsetP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetNP', 'onsetP',
        'onsetP', 'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetNP',
        'onsetP', 'onsetP', 'onsetP', 'onsetNP', 'onsetNP', 'onsetP',
        'onsetNP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP', 'onsetP',
        'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetP', 'onsetNP',
        'onsetP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetP',
        'onsetP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetP',
        'onsetP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetNP',
        'onsetNP', 'onsetP', 'onsetNP', 'onsetP', 'onsetP', 'onsetNP',
        'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetP', 'onsetNP',
        'onsetP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP', 'onsetNP',
        'onsetNP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetP', 'onsetP',
        'onsetNP', 'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetNP',
        'onsetNP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetP',
        'onsetP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP', 'onsetP',
        'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetP', 'onsetP',
        'onsetNP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetNP',
        'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetP',
        'onsetP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetNP', 'onsetP',
        'onsetNP', 'onsetP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetP',
        'onsetNP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP', 'onsetNP',
        'onsetNP', 'onsetP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetP',
        'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP',
        'onsetP', 'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetNP',
        'onsetP', 'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetP',
        'onsetP', 'onsetP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetNP',
        'onsetNP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetNP',
        'onsetNP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP', 'onsetNP'],
       dtype='|S7'), length=210), ArrayCollectable(name='time_coords', 
doc=None, value=array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  
0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.]), length=210)]), 
fa=FeatureAttributesCollection(items=[ArrayCollectable(name='voxel_indices', 
doc=None, value=array([[ 8, 29,  7],
        [ 8, 31, 11],
        [ 9, 23,  9],
        ...,
        [54, 35,  9],
        [54, 35, 10],
        [54, 36,  9]]), length=39978)]), 
a=DatasetAttributesCollection(items=[Collectable(name='mapper', 
doc=None, value=ChainMapper(nodes=[FlattenMapper(shape=(64, 64, 37), 
auto_train=True, space='voxel_indices'), 
StaticFeatureSelection(dshape=(151552,), slicearg=array([False, False, 
False, ..., False, False, False], dtype=bool)), 
PolyDetrendMapper(polyord=1, chunks_attr='chunks', opt_regs=None, ), 
ZScoreMapper(param_est=('targets', ['junk']), chunks_attr='chunks', 
dtype='float32')])), Collectable(name='imgtype', doc=None, value=<class 
'nibabel.nifti1.Nifti1Image'>), Collectable(name='voxel_eldim', 
doc=None, value=(3.0, 3.0, 3.3)), Collectable(name='voxel_dim', 
doc=None, value=(64, 64, 37)), Collectable(name='imghdr', doc=None, 
value=<nibabel.nifti1.Nifti1Header object at 0x4c48890>)]))>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/pkg-exppsy-pymvpa/attachments/20120724/53ce5a4c/attachment-0001.html>


More information about the Pkg-ExpPsy-PyMVPA mailing list