<div dir="ltr"><div><div><div>Hello,<br><br></div>I'm trying to use pearsonr to crossvalidate a ridge regression on some structural data.<br><br></div>My code is:<br><br>#define the classifier <br>from mvpa2.clfs.gnb import GNB<br>from mvpa2.clfs.svm import LinearCSVMC, RbfCSVMC, RbfNuSVMC, LinearNuSVMC<br>from mvpa2.clfs.meta import FeatureSelectionClassifier<br>from mvpa2.clfs.warehouse import SensitivityBasedFeatureSelection, FractionTailSelector, OneWayAnova<br>from mvpa2.clfs.ridge import RidgeReg<br><br><br>clf = RidgeReg()#LinearCSVMC()<br><br><br>#If some sort of feature selection is required use this to get a certain percentage of the tail of an anova<br>"""<br>CLF = LinearCSVMC()<br>clf = FeatureSelectionClassifier(<br> CLF,<br> SensitivityBasedFeatureSelection(<br> OneWayAnova(),<br> FractionTailSelector(0.05, mode='select', tail='upper'))<br> )<br>"""<br><br>#Create a partitioner that generates equal sized testing and training sets that are balanced<br>from mvpa2.generators.partition import HalfPartitioner<br>from mvpa2.generators.resampling import Balancer<br>from mvpa2.generators.base import Sifter<br>from mvpa2.base.node import ChainNode<br><br>metaPartitioner = HalfPartitioner()#NFoldPartitioner(cvtype=2)<br>partitioner = ChainNode([metaPartitioner,<br> Sifter([('partitions', 2),<br> ('targets', [1, 2])]),<br> Balancer(attr='targets',<br> count=1, # can set > 1 if you dont have "enough"<br> limit='partitions',<br> apply_selection=True<br> )],<br> space='partitions')<br><br>#Train the classifier<br><br>from mvpa2.generators.partition import NFoldPartitioner, HalfPartitioner<br><br>from mvpa2.measures.base import CrossValidation<br>from mvpa2.misc.errorfx import mean_match_accuracy, corr_error, corr_error_prob, pearsonr<br>from mvpa2.mappers.fx import mean_sample<br><br>#use correlation error when using ridge regression<br>cv = CrossValidation(clf, partitioner, postproc=mean_sample(), errorfx=pearsonr, enable_ca=['stats'])<br><br><br></div>the error is:<br><div class=""><div class=""><pre><span class="">---------------------------------------------------------------------------</span>
<span class="">ValueError</span> Traceback (most recent call last)
<span class=""><ipython-input-22-0cdf8de46914></span> in <span class=""><module><span class="">()</span>
<span class=""> 3</span> <span class="">for</span> </span>dataset <span class="">in</span> datasets<span class="">:</span><span class=""></span>
<span class=""> 4</span> <span class="">print</span> <span class="">"Partition: "</span> <span class="">+</span> dataset<span class="">[</span><span class="">0</span><span class="">]</span><span class=""></span>
<span class="">----> 5<span class=""> </span>cv_results</span> <span class="">=</span> cv<span class="">(</span>dataset<span class="">[</span><span class="">1</span><span class="">]</span><span class="">)</span><span class="">.</span>samples<span class=""></span>
<span class=""> 6</span> <span class="">print</span> cv_results<span class=""></span>
<span class=""> 7</span> resTup <span class="">=</span> <span class="">(</span>dataset<span class="">[</span><span class="">0</span><span class="">]</span><span class="">,</span>cv_results<span class="">)</span><span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/base/learner.pyc</span> in <span class="">__call__<span class="">(self, ds)</span>
<span class=""> 257</span> <span class="">"used and auto training is disabled."</span><span class=""></span></span>
<span class=""> 258</span> % str(self))
<span class="">--> 259<span class=""> <span class="">return</span> </span>super</span><span class="">(</span>Learner<span class="">,</span> self<span class="">)</span><span class="">.</span>__call__<span class="">(</span>ds<span class="">)</span><span class=""></span>
<span class=""> 260</span> <span class=""></span>
<span class=""> 261</span> <span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/base/node.pyc</span> in <span class="">__call__<span class="">(self, ds)</span>
<span class=""> 119</span> <span class=""></span></span>
<span class=""> 120</span> self<span class="">.</span>_precall<span class="">(</span>ds<span class="">)</span><span class=""></span>
<span class="">--> 121<span class=""> </span>result</span> <span class="">=</span> self<span class="">.</span>_call<span class="">(</span>ds<span class="">)</span><span class=""></span>
<span class=""> 122</span> result <span class="">=</span> self<span class="">.</span>_postcall<span class="">(</span>ds<span class="">,</span> result<span class="">)</span><span class=""></span>
<span class=""> 123</span> <span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/measures/base.pyc</span> in <span class="">_call<span class="">(self, ds)</span>
<span class=""> 495</span> <span class=""># always untrain to wipe out previous stats</span><span class=""></span><span class=""></span></span>
<span class=""> 496</span> self<span class="">.</span>untrain<span class="">(</span><span class="">)</span><span class=""></span>
<span class="">--> 497<span class=""> <span class="">return</span> </span>super</span><span class="">(</span>CrossValidation<span class="">,</span> self<span class="">)</span><span class="">.</span>_call<span class="">(</span>ds<span class="">)</span><span class=""></span>
<span class=""> 498</span> <span class=""></span>
<span class=""> 499</span> <span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/measures/base.pyc</span> in <span class="">_call<span class="">(self, ds)</span>
<span class=""> 324</span> </span>ca<span class="">.</span>datasets<span class="">.</span>append<span class="">(</span>sds<span class="">)</span><span class=""></span>
<span class=""> 325</span> <span class=""># run the beast</span><span class=""></span><span class=""></span>
<span class="">--> 326<span class=""> </span>result</span> <span class="">=</span> node<span class="">(</span>sds<span class="">)</span><span class=""></span>
<span class=""> 327</span> <span class=""># callback</span><span class=""></span><span class=""></span>
<span class=""> 328</span> <span class="">if</span> <span class="">not</span> self<span class="">.</span>_callback <span class="">is</span> None<span class="">:</span><span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/base/learner.pyc</span> in <span class="">__call__<span class="">(self, ds)</span>
<span class=""> 257</span> <span class="">"used and auto training is disabled."</span><span class=""></span></span>
<span class=""> 258</span> % str(self))
<span class="">--> 259<span class=""> <span class="">return</span> </span>super</span><span class="">(</span>Learner<span class="">,</span> self<span class="">)</span><span class="">.</span>__call__<span class="">(</span>ds<span class="">)</span><span class=""></span>
<span class=""> 260</span> <span class=""></span>
<span class=""> 261</span> <span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/base/node.pyc</span> in <span class="">__call__<span class="">(self, ds)</span>
<span class=""> 120</span> </span>self<span class="">.</span>_precall<span class="">(</span>ds<span class="">)</span><span class=""></span>
<span class=""> 121</span> result <span class="">=</span> self<span class="">.</span>_call<span class="">(</span>ds<span class="">)</span><span class=""></span>
<span class="">--> 122<span class=""> </span>result</span> <span class="">=</span> self<span class="">.</span>_postcall<span class="">(</span>ds<span class="">,</span> result<span class="">)</span><span class=""></span>
<span class=""> 123</span> <span class=""></span>
<span class=""> 124</span> self<span class="">.</span>ca<span class="">.</span>calling_time <span class="">=</span> time<span class="">.</span>time<span class="">(</span><span class="">)</span> <span class="">-</span> t0 <span class=""># set the calling_time</span><span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/measures/base.pyc</span> in <span class="">_postcall<span class="">(self, dataset, result)</span>
<span class=""> 124</span> <span class="">if</span> </span>self<span class="">.</span>__null_dist <span class="">is</span> None<span class="">:</span><span class=""></span>
<span class=""> 125</span> <span class=""># do base-class postcall and be done</span><span class=""></span><span class=""></span>
<span class="">--> 126<span class=""> </span>result</span> <span class="">=</span> super<span class="">(</span>Measure<span class="">,</span> self<span class="">)</span><span class="">.</span>_postcall<span class="">(</span>dataset<span class="">,</span> result<span class="">)</span><span class=""></span>
<span class=""> 127</span> <span class="">else</span><span class="">:</span><span class=""></span>
<span class=""> 128</span> <span class=""># don't do a full base-class postcall, only do the</span><span class=""></span><span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/base/node.pyc</span> in <span class="">_postcall<span class="">(self, ds, result)</span>
<span class=""> 164</span> """
<span class=""> 165</span> </span>result <span class="">=</span> self<span class="">.</span>_pass_attr<span class="">(</span>ds<span class="">,</span> result<span class="">)</span><span class=""></span>
<span class="">--> 166<span class=""> </span>result</span> <span class="">=</span> self<span class="">.</span>_apply_postproc<span class="">(</span>ds<span class="">,</span> result<span class="">)</span><span class=""></span>
<span class=""> 167</span> <span class="">return</span> result<span class=""></span>
<span class=""> 168</span> <span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/base/node.pyc</span> in <span class="">_apply_postproc<span class="">(self, ds, result)</span>
<span class=""> 238</span> "Applying post-processing node %s", (self.__postproc,))
<span class=""> 239</span> </span>self<span class="">.</span>ca<span class="">.</span>raw_results <span class="">=</span> result<span class=""></span>
<span class="">--> 240<span class=""> </span>result</span> <span class="">=</span> self<span class="">.</span>__postproc<span class="">(</span>result<span class="">)</span><span class=""></span>
<span class=""> 241</span> <span class="">return</span> result<span class=""></span>
<span class=""> 242</span> <span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/base/node.pyc</span> in <span class="">__call__<span class="">(self, ds)</span>
<span class=""> 119</span> <span class=""></span></span>
<span class=""> 120</span> self<span class="">.</span>_precall<span class="">(</span>ds<span class="">)</span><span class=""></span>
<span class="">--> 121<span class=""> </span>result</span> <span class="">=</span> self<span class="">.</span>_call<span class="">(</span>ds<span class="">)</span><span class=""></span>
<span class=""> 122</span> result <span class="">=</span> self<span class="">.</span>_postcall<span class="">(</span>ds<span class="">,</span> result<span class="">)</span><span class=""></span>
<span class=""> 123</span> <span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/mappers/fx.pyc</span> in <span class="">_call<span class="">(self, ds)</span>
<span class=""> 582</span> <span class="">if</span> </span>np<span class="">.</span>isscalar<span class="">(</span>err<span class="">)</span><span class="">:</span><span class=""></span>
<span class=""> 583</span> err <span class="">=</span> np<span class="">.</span>array<span class="">(</span>err<span class="">,</span> ndmin<span class="">=</span><span class="">2</span><span class="">)</span><span class=""></span>
<span class="">--> 584<span class=""> <span class="">return</span> </span>Dataset</span><span class="">(</span>err<span class="">)</span><span class=""></span>
<span class="">/home/orkney_01/tnickson/Programming/pyVirtualEnv/lib/python2.6/site-packages/mvpa2/base/dataset.pyc</span> in <span class="">__init__<span class="">(self, samples, sa, fa, a)</span>
<span class=""> 213</span> <span class="">if</span> <span class="">not</span> </span>hasattr<span class="">(</span>samples<span class="">,</span> <span class="">'dtype'</span><span class="">)</span><span class="">:</span><span class=""></span>
<span class=""> 214</span> raise ValueError(
<span class="">--> 215<span class=""> <span class="">"AttrDataset only supports dtypes as samples that have a "</span><span class=""></span></span>
</span><span class=""> 216</span> <span class="">"`dtype` attribute that behaves similar to the one of an "</span><span class=""></span>
<span class=""> 217</span> "array-like.")
<span class="">ValueError</span>: AttrDataset only supports dtypes as samples that have a `dtype` attribute that behaves similar to the one of an array-like.
</pre></div></div><div class="">Anybody know what this error is?<br><br>Thanks,<br><br>Tom<br></div><br></div>