Hi all,<div><br></div><div>I'm trying to get a very "basic" script working that implements RFE. I'm not a coder, but I've read the tutorial and am trying to follow others' scripts as best as possible. Generally, I hope to do small modifications of standard scripts (changing my 4d bold data, my mask, attributes.txt file, and label names). </div>
<div><br></div><div>I tried using the code at <a href="http://www.pymvpa.org/featsel.html">http://www.pymvpa.org/featsel.html</a>, but got the errors mentioned here (<a href="http://lists.alioth.debian.org/pipermail/pkg-exppsy-pymvpa/2011q2/001747.html">http://lists.alioth.debian.org/pipermail/pkg-exppsy-pymvpa/2011q2/001747.html</a>), as I'm running v0.6. (I must also mention that the 0.4, 0.6 (with multiple RCs), and coming 2.0 naming has been fairly difficult to navigate.)</div>
<div><br></div><div>Anyway, I followed that thread's advice and changed the method from camelCase naming to incorporate underscores: that line of code now reads "sensitivity_analyzer=rfesvm_split.get_sensitivity_analyzer(" </div>
<div><br></div><div>Python is now reporting a long TypeError which I've pasted below. I've also attached my script. I've gotten simpler scripts (that incorporate no feature selection) to work, so the problem should not be with my nifti or attribute files. </div>
<div><br></div><div>Thanks again for any and all help: I only have the manual, google, and this listserv to rely upon when problems arise! </div><div><br></div><div>Best,</div><div>Mike</div><div><br></div><div><br></div>
<div><div>In [24]: FtSelClf = FeatureSelectionClassifier(</div><div> ....: # use a linear SVM classifier:</div><div> ....: clf = LinearCSVMC(),</div><div> ....: # on features selected via RFE</div><div> ....: feature_selection = RFE(</div>
<div> ....: # based on sensitivity of a clf which does splitting internally</div><div> ....: sensitivity_analyzer=rfesvm_split.get_sensitivity_analyzer(</div><div> ....: transformer=Absolute,combiner=lambda x: N.sum(x,axis=0)),</div>
<div> ....: transfer_error=ConfusionBasedError(</div><div> ....: rfesvm_split,</div><div> ....: confusion_state="confusion"),</div><div> ....: # and whose internal error we use</div>
<div> ....: feature_selector=FractionTailSelector(</div><div> ....: 0.3, mode='discard', tail='lower'),</div><div> ....: # remove 20% of features at each step</div><div> ....: #enable_states=['feature_ids'],</div>
<div> ....: # update sensitivity at each step</div><div> ....: update_sensitivity=True),</div><div> ....: enable_states=['feature_ids'],</div><div> ....: descr='LinSVM+RFE(splits_avg)')</div>
<div>---------------------------------------------------------------------------</div><div>TypeError Traceback (most recent call last)</div><div>/Users/mike/Documents/fMRI_analysis/PyMVPA-analysis/subjects/0-pemberton/<ipython-input-24-85837272a049> in <module>()</div>
<div> 6 # based on sensitivity of a clf which does splitting internally</div><div><br></div><div> 7 sensitivity_analyzer=rfesvm_split.get_sensitivity_analyzer(</div><div>----> 8 transformer=Absolute,combiner=lambda x: N.sum(x,axis=0)),</div>
<div> 9 transfer_error=ConfusionBasedError(</div><div> 10 rfesvm_split,</div><div><br></div><div>/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/mvpa/misc/args.pyc in do_group_kwargs(self, *args_, **kwargs_)</div>
<div> 71 if passthrough: kwargs__[k] = skwargs</div><div> 72 if assign: setattr(self, '_%s' % k, skwargs)</div><div>---> 73 return method(self, *args_, **kwargs__)</div>
<div> 74 do_group_kwargs.func_name = method.func_name</div><div> 75 return do_group_kwargs</div><div><br></div><div>/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/mvpa/clfs/meta.pyc in get_sensitivity_analyzer(self, slave_kwargs, **kwargs)</div>
<div> 1270 self, sa_attr='splits',</div><div> 1271 analyzer=self.__clf.get_sensitivity_analyzer(**slave_kwargs),</div><div>-> 1272 **kwargs)</div><div> 1273 </div>
<div> 1274 partitioner = property(fget=lambda x:x.__partitioner,</div><div><br></div><div>/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/mvpa/misc/args.pyc in do_group_kwargs(self, *args_, **kwargs_)</div>
<div> 71 if passthrough: kwargs__[k] = skwargs</div><div> 72 if assign: setattr(self, '_%s' % k, skwargs)</div><div>---> 73 return method(self, *args_, **kwargs__)</div>
<div> 74 do_group_kwargs.func_name = method.func_name</div><div> 75 return do_group_kwargs</div><div><br></div><div>/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/mvpa/measures/base.pyc in __init__(self, clf, analyzer, combined_analyzer, sa_attr, slave_kwargs, **kwargs)</div>
<div> 962 Arguments to pass to created analyzer if analyzer is None</div><div> 963 """</div><div>--> 964 Sensitivity.__init__(self, clf, **kwargs)</div><div> 965 if combined_analyzer is None:</div>
<div> 966 # sanitarize kwargs</div><div><br></div><div><br></div><div>/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/mvpa/measures/base.pyc in __init__(self, clf, force_train, **kwargs)</div>
<div> 756 # by default auto train</div><div><br></div><div> 757 kwargs['auto_train'] = kwargs.get('auto_train', True)</div><div>--> 758 FeaturewiseMeasure.__init__(self, force_train=force_train, **kwargs)</div>
<div> 759 </div><div> 760 _LEGAL_CLFS = self._LEGAL_CLFS</div><div><br></div><div>/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/mvpa/measures/base.pyc in __init__(self, **kwargs)</div>
<div> 615 </div><div> 616 def __init__(self, **kwargs):</div><div>--> 617 Measure.__init__(self, **kwargs)</div><div> 618 </div><div> 619 </div><div><br></div><div>/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/mvpa/measures/base.pyc in __init__(self, null_dist, **kwargs)</div>
<div> 85 certain value of the computed measure.</div><div> 86 """</div><div>---> 87 Learner.__init__(self, **kwargs)</div><div> 88 </div><div> 89 null_dist_ = auto_null_dist(null_dist)</div>
<div><br></div><div>/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/mvpa/base/learner.pyc in __init__(self, auto_train, force_train, **kwargs)</div><div> 76 All arguments are passed to the baseclass.</div>
<div> 77 """</div><div>---> 78 Node.__init__(self, **kwargs)</div><div> 79 self.__is_trained = False</div><div> 80 self.__auto_train = auto_train</div><div><br>
</div><div>/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/mvpa/base/node.pyc in __init__(self, space, postproc, **kwargs)</div><div> 52 result dataset. If None, nothing is done.</div>
<div> 53 """</div><div>---> 54 ClassWithCollections.__init__(self, **kwargs)</div><div> 55 self.set_space(space)</div><div> 56 self.set_postproc(postproc)</div>
<div><br></div><div>/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/mvpa/base/state.pyc in __init__(self, descr, **kwargs)</div><div> 855 "Unexpected keyword argument %s=%s for %s." \</div>
<div> 856 % (arg, argument, self) \</div><div>--> 857 + " Valid parameters are %s" % known_params</div><div> 858 </div><div> 859 ## Initialize other base classes</div>
<div><br></div><div><br></div><div>TypeError: Unexpected keyword argument transformer=<function Absolute at 0x1098665f0> for <BoostedClassifierSensitivityAnalyzer>. Valid parameters are ['base_sensitivities', 'raw_results', 'calling_time', 'training_time', 'null_t', 'null_prob']</div>
</div>