<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Am 22.07.2012 10:33, schrieb Michael Hanke:
    <blockquote cite="mid:20120722083352.GC6864@meiner" type="cite">
      <pre wrap="">Hi,

On Fri, Jul 20, 2012 at 08:35:25AM +0200, <a class="moz-txt-link-abbreviated" href="mailto:mhampel@uni-osnabrueck.de">mhampel@uni-osnabrueck.de</a> wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">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?
</pre>
      </blockquote>
      <pre wrap="">
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


</pre>
    </blockquote>
    <br>
    It's good to know that I wasn't completely wrong. Here is the error
    message and the whole output of ds.summary<br>
    <br>
    Best,<br>
    Matthias<br>
    <br>
    <b>Error message:</b><br>
    <br>
    Traceback (most recent call last):<br>
      File "RFE_Splitt1.py", line 114, in <module><br>
        sens = cv_sensana(dataset)<br>
      File "/usr/lib/pymodules/python2.6/mvpa2/base/learner.py", line
    229, in __call__<br>
        self.train(ds)<br>
      File "/usr/lib/pymodules/python2.6/mvpa2/base/learner.py", line
    119, in train<br>
        result = self._train(ds)<br>
      File "/usr/lib/pymodules/python2.6/mvpa2/measures/base.py", line
    782, in _train<br>
        return clf.train(dataset)<br>
      File "/usr/lib/pymodules/python2.6/mvpa2/base/learner.py", line
    119, in train<br>
        result = self._train(ds)<br>
      File "/usr/lib/pymodules/python2.6/mvpa2/clfs/meta.py", line 1211,
    in _train<br>
        clf = clf_template.clone()<br>
      File "/usr/lib/pymodules/python2.6/mvpa2/clfs/base.py", line 326,
    in clone<br>
        return deepcopy(self)<br>
      File "/usr/lib/python2.6/copy.py", line 189, in deepcopy<br>
        y = _reconstruct(x, rv, 1, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 338, in _reconstruct<br>
        state = deepcopy(state, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 162, in deepcopy<br>
        y = copier(x, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 255, in _deepcopy_dict<br>
        y[deepcopy(key, memo)] = deepcopy(value, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 189, in deepcopy<br>
        y = _reconstruct(x, rv, 1, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 338, in _reconstruct<br>
        state = deepcopy(state, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 162, in deepcopy<br>
        y = copier(x, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 255, in _deepcopy_dict<br>
        y[deepcopy(key, memo)] = deepcopy(value, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 189, in deepcopy<br>
        y = _reconstruct(x, rv, 1, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 338, in _reconstruct<br>
        state = deepcopy(state, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 162, in deepcopy<br>
        y = copier(x, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 255, in _deepcopy_dict<br>
        y[deepcopy(key, memo)] = deepcopy(value, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 189, in deepcopy<br>
        y = _reconstruct(x, rv, 1, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 338, in _reconstruct<br>
        state = deepcopy(state, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 162, in deepcopy<br>
        y = copier(x, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 255, in _deepcopy_dict<br>
        y[deepcopy(key, memo)] = deepcopy(value, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 162, in deepcopy<br>
        y = copier(x, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 228, in _deepcopy_list<br>
        y.append(deepcopy(a, memo))<br>
      File "/usr/lib/python2.6/copy.py", line 189, in deepcopy<br>
        y = _reconstruct(x, rv, 1, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 338, in _reconstruct<br>
        state = deepcopy(state, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 162, in deepcopy<br>
        y = copier(x, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 255, in _deepcopy_dict<br>
        y[deepcopy(key, memo)] = deepcopy(value, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 189, in deepcopy<br>
        y = _reconstruct(x, rv, 1, memo)<br>
      File "/usr/lib/python2.6/copy.py", line 323, in _reconstruct<br>
        y = callable(*args)<br>
      File "/usr/lib/python2.6/copy_reg.py", line 93, in __newobj__<br>
        return cls.__new__(cls, *args)<br>
    TypeError: object.__new__(numpy.ufunc) is not safe, use
    numpy.ufunc.__new__()<br>
    <br>
    <b><br>
      ds.summary:</b><br>
    <br>
    <bound method Dataset.summary of Dataset(array([[ 1.66507124, 
    0.98552763,  0.99950778, ..., -0.80142293,<br>
            -1.55295612, -0.11781561],<br>
           [-1.2762681 ,  1.06889722, -0.76036066, ..., -0.21888896,<br>
            -1.43887115, -0.54421524],<br>
           [ 0.06450247,  0.27004099, -0.85426304, ...,  0.79609439,<br>
             0.36335411,  0.14502004],<br>
           ..., <br>
           [-0.12649097,  0.53453771,  0.45816722, ..., -0.11964775,<br>
             0.12668331,  0.10950945],<br>
           [-1.07348862, -0.89344273, -0.7004796 , ...,  0.08824224,<br>
            -1.11599424,  1.2118099 ],<br>
           [ 0.75494889,  1.20532665,  1.58585258, ..., -0.63245843,<br>
             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.,<br>
            1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1., 
    1.,<br>
            1.,  1.,  1.,  1.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2., 
    2.,<br>
            2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2., 
    2.,<br>
            2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  3.,  3.,  3.,  3., 
    3.,<br>
            3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3., 
    3.,<br>
            3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3., 
    4.,<br>
            4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4., 
    4.,<br>
            4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4., 
    4.,<br>
            4.,  4.,  4.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5., 
    5.,<br>
            5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5., 
    5.,<br>
            5.,  5.,  5.,  5.,  5.,  5.,  5.,  6.,  6.,  6.,  6.,  6., 
    6.,<br>
            6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6., 
    6.,<br>
            6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  7., 
    7.,<br>
            7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7., 
    7.,<br>
            7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7., 
    7.,<br>
            7.,  7.]), length=210),
    ArrayCollectable(name='time_indices', doc=None, value=array([   7,  
    12,   16,   20,   24,   29,   33,   38,   43,   48,   52,<br>
             57,   62,   66,   70,   75,   80,   85,   89,   94,   98, 
    103,<br>
            108,  112,  118,  123,  127,  132,  136,  141,  157,  162, 
    166,<br>
            171,  175,  180,  185,  189,  194,  199,  204,  209,  213, 
    218,<br>
            223,  228,  233,  238,  243,  248,  252,  257,  261,  266, 
    270,<br>
            275,  279,  284,  289,  294,  309,  314,  319,  324,  329, 
    333,<br>
            338,  342,  347,  351,  355,  360,  364,  369,  374,  378, 
    383,<br>
            387,  392,  397,  401,  406,  411,  415,  420,  425,  429, 
    433,<br>
            438,  443,  462,  467,  472,  476,  481,  485,  490,  495, 
    500,<br>
            505,  510,  514,  519,  524,  528,  532,  538,  542,  547, 
    552,<br>
            556,  561,  566,  571,  575,  580,  585,  589,  595,  599, 
    612,<br>
            616,  621,  625,  630,  635,  640,  644,  649,  653,  658, 
    663,<br>
            668,  672,  677,  682,  686,  691,  696,  700,  705,  710, 
    715,<br>
            720,  725,  729,  734,  738,  742,  746,  759,  764,  769, 
    774,<br>
            779,  783,  788,  793,  798,  802,  807,  812,  817,  821, 
    826,<br>
            831,  836,  840,  846,  850,  855,  859,  865,  870,  874, 
    878,<br>
            883,  888,  892,  897,  908,  913,  918,  922,  927,  931, 
    936,<br>
            941,  946,  950,  955,  959,  965,  970,  974,  979,  984, 
    989,<br>
            994,  998, 1003, 1008, 1012, 1017, 1022, 1026, 1031, 1036,
    1041,<br>
           1046]), length=210), ArrayCollectable(name='targets',
    doc=None, value=array(['onsetNP', 'onsetNP', 'onsetNP', 'onsetP',
    'onsetP', 'onsetNP',<br>
           'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetP', 'onsetP',<br>
           'onsetP', 'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetNP',<br>
           'onsetP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetP',
    'onsetNP',<br>
           'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetP',
    'onsetNP',<br>
           'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetNP',
    'onsetP',<br>
           'onsetNP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetNP',
    'onsetNP',<br>
           'onsetP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetNP',
    'onsetP',<br>
           'onsetP', 'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetNP',<br>
           'onsetP', 'onsetP', 'onsetP', 'onsetNP', 'onsetNP', 'onsetP',<br>
           'onsetNP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP', 'onsetP',<br>
           'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetP',
    'onsetNP',<br>
           'onsetP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetP',
    'onsetP',<br>
           'onsetP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetP',
    'onsetP',<br>
           'onsetP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetP',
    'onsetNP',<br>
           'onsetNP', 'onsetP', 'onsetNP', 'onsetP', 'onsetP',
    'onsetNP',<br>
           'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetP',
    'onsetNP',<br>
           'onsetP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP', 'onsetNP',<br>
           'onsetNP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetP',
    'onsetP',<br>
           'onsetNP', 'onsetP', 'onsetNP', 'onsetNP', 'onsetP',
    'onsetNP',<br>
           'onsetNP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetNP',
    'onsetP',<br>
           'onsetP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP', 'onsetP',<br>
           'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetP', 'onsetP',<br>
           'onsetNP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetNP',
    'onsetNP',<br>
           'onsetP', 'onsetNP', 'onsetNP', 'onsetP', 'onsetNP',
    'onsetP',<br>
           'onsetP', 'onsetNP', 'onsetP', 'onsetNP', 'onsetNP',
    'onsetP',<br>
           'onsetNP', 'onsetP', 'onsetNP', 'onsetP', 'onsetNP',
    'onsetP',<br>
           'onsetNP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP',
    'onsetNP',<br>
           'onsetNP', 'onsetP', 'onsetNP', 'onsetNP', 'onsetNP',
    'onsetP',<br>
           'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP',<br>
           'onsetP', 'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetNP',<br>
           'onsetP', 'onsetNP', 'onsetP', 'onsetP', 'onsetP', 'onsetP',<br>
           'onsetP', 'onsetP', 'onsetNP', 'onsetP', 'onsetNP',
    'onsetNP',<br>
           'onsetNP', 'onsetNP', 'onsetNP', 'onsetNP', 'onsetNP',
    'onsetNP',<br>
           'onsetNP', 'onsetP', 'onsetP', 'onsetNP', 'onsetP',
    'onsetNP'], <br>
          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.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
    0.,<br>
            0.,  0.]), length=210)]),
    fa=FeatureAttributesCollection(items=[ArrayCollectable(name='voxel_indices',


    doc=None, value=array([[ 8, 29,  7],<br>
           [ 8, 31, 11],<br>
           [ 9, 23,  9],<br>
           ..., <br>
           [54, 35,  9],<br>
           [54, 35, 10],<br>
           [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>)]))><br>
  </body>
</html>