<div dir="ltr">Dear all, <div><br></div><div style>I'm struggling with recursive feature selection, a meta classifier (clf), and the final cross validation. Below is what I have done and what I get as error. I would very much appreciate if you could help me here. </div>
<div style><br></div><div style><b>#from rfe manual</b></div><div style><br></div><div style><div><i>rfe</i> = RFE(rfesvm_split.get_sensitivity_analyzer(postproc = ChainMapper([ FxMapper('features', l2_normed), FxMapper('samples', np.mean), FxMapper('samples', np.abs)])), ConfusionBasedError(rfesvm_split, confusion_state='stats'),</div>
<div>Repeater(2), fselector=FractionTailSelector(0.50, mode = 'select', tail= 'upper'), stopping_criterion=NBackHistoryStopCrit(BestDetector(), 10), train_pmeasure=False, update_sensitivity=True)</div><div>
<br></div><div><div style><b>#Meta-classifier with SVM as the final classifier and rfe as feature selector</b></div><div style><b><br></b></div><div><i>clf</i>=FeatureSelectionClassifier(LinearCSVMC(), rfe, descr='SVM+RFE')</div>
</div><div><br></div><div style><b>#cross-validation</b></div><div style><br></div><div style><i>cvte</i>=CrossValidation(clf, HalfPartitioner(), enable_ca=['stats'])<br></div><div style><br></div><div style><b>#running the analysis</b></div>
<div style><b><br></b></div><div style><i>results</i>=cvte(MyData)</div><div style><br></div><div style><b>ERRORS:</b></div><div style><b><br></b></div><div style><div>In [37]: results=cvte(gm_lt)</div><div>---------------------------------------------------------------------------</div>
<div>IndexError Traceback (most recent call last)</div><div><ipython-input-37-a9da6f9cc192> in <module>()</div><div><b>----> 1 results=cvte(gm_lt)</b></div><div><br></div><div>
/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in __call__(self, ds)</div><div> 257 "used and auto training is disabled."</div><div> 258 % str(self))</div>
<div><b>--> 259 return super(Learner, self).__call__(ds)</b></div><div> 260 </div><div> 261 </div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/node.pyc in __call__(self, ds)</div><div>
109 </div><div> 110 self._precall(ds)</div><div><b>--> 111 result = self._call(ds)</b></div><div> 112 result = self._postcall(ds, result)</div><div> 113 </div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _call(self, ds)</div>
<div> 495 # always untrain to wipe out previous stats</div><div> 496 self.untrain()</div><div><b>--> 497 return super(CrossValidation, self)._call(ds)</b></div><div> 498 </div><div> 499 </div>
<div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _call(self, ds)</div><div> 324 ca.datasets.append(sds)</div><div> 325 # run the beast</div><div><b>--> 326 result = node(sds)</b></div>
<div> 327 # callback</div><div> 328 if not self._callback is None:</div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in __call__(self, ds)</div><div> 257 "used and auto training is disabled."</div>
<div> 258 % str(self))</div><div><b>--> 259 return super(Learner, self).__call__(ds)</b></div><div> 260 </div><div> 261 </div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/node.pyc in __call__(self, ds)</div>
<div> 109 </div><div> 110 self._precall(ds)</div><div><b>--> 111 result = self._call(ds)</b></div><div> 112 result = self._postcall(ds, result)</div><div> 113 </div><div><br></div><div>
/usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _call(self, ds)</div><div> 589 for i in dstrain.get_attr(splitter.get_space())[0].unique])</div><div> 590 # ask splitter for first part</div>
<div><b>--> 591 measure.train(dstrain)</b></div><div> 592 # cleanup to free memory</div><div> 593 del dstrain</div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self, ds)</div>
<div> 130 # things might have happened during pretraining</div><div> 131 if ds.nfeatures > 0:</div><div><b>--> 132 result = self._train(ds)</b></div><div> 133 else:</div>
<div> 134 warning("Trying to train on dataset with no features present")</div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/clfs/meta.pyc in _train(self, dataset)</div><div> 1346 # XXX: should training be done using whole dataset or just samples</div>
<div> 1347 # YYY: in some cases labels might be needed, thus better full dataset</div><div><b>-> 1348 self.__mapper.train(dataset)</b></div><div> 1349 </div><div> 1350 # for train() we have to provide dataset -- not just samples to train!</div>
<div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self, ds)</div><div> 130 # things might have happened during pretraining</div><div> 131 if ds.nfeatures > 0:</div>
<div><b>--> 132 result = self._train(ds)</b></div><div> 133 else:</div><div> 134 warning("Trying to train on dataset with no features present")</div><div><br>
</div><div>/usr/lib64/python2.6/site-packages/mvpa2/featsel/rfe.pyc in _train(self, ds)</div><div> 246 # Compute sensitivity map</div><div> 247 if self.__update_sensitivity or sensitivity == None:</div>
<div><b>--> 248 sensitivity = self._fmeasure(wdataset)</b></div><div> 249 if len(sensitivity) > 1:</div><div> 250 raise ValueError(</div><div><br></div><div>
/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in __call__(self, ds)</div><div> 251 debug('LRN', "Auto-training %s on %s",</div><div> 252 (self, ds))</div>
<div><b>--> 253 self.train(ds)</b></div><div> 254 else:</div><div> 255 # we always have to have trained before using a learner</div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self, ds)</div>
<div> 130 # things might have happened during pretraining</div><div> 131 if ds.nfeatures > 0:</div><div><b>--> 132 result = self._train(ds)</b></div><div> 133 else:</div>
<div> 134 warning("Trying to train on dataset with no features present")</div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _train(self, dataset)</div><div>
805 True: "although it was trained previously"}</div><div> 806 [clf.trained]))</div><div><b>--> 807 return clf.train(dataset)</b></div><div> 808 </div>
<div> 809 </div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self, ds)</div><div> 130 # things might have happened during pretraining</div><div> 131 if ds.nfeatures > 0:</div>
<div><b>--> 132 result = self._train(ds)</b></div><div> 133 else:</div><div> 134 warning("Trying to train on dataset with no features present")</div><div><br>
</div><div>/usr/lib64/python2.6/site-packages/mvpa2/clfs/meta.pyc in _train(self, dataset)</div><div> 1268 </div><div> 1269 if ca.is_enabled("stats"):</div><div><b>-> 1270 predictions = clf.predict(split[1])</b></div>
<div> 1271 self.ca.stats.add(split[1].sa[targets_sa_name].value,</div><div> 1272 predictions,</div><div><br></div><div><b>IndexError: list index out of range</b></div>
</div><div style><br></div><div style><br></div><div><br></div><div><br></div></div></div>