[pymvpa] confusion matrix in searchlight
Wouter De Baene
Wouter.DeBaene at UGent.be
Fri Mar 21 11:04:15 UTC 2014
Thank you very much!
It works like a charm.
Best regards,
Wouter De Baene
On 20 Mar 2014, at 13:18, Michael Hanke <michael.hanke at gmail.com<mailto:michael.hanke at gmail.com>> wrote:
Hey,
On Wed, Mar 19, 2014 at 10:44 PM, Wouter De Baene <Wouter.DeBaene at ugent.be<mailto:Wouter.DeBaene at ugent.be>> wrote:
Hi all,
I’m running my first pymvpa-analysis after attending a very nice pymvpa workshop in Delmenhorst.
Glad you liked it!
Although there are a few related questions in the archive, I don’t seem to get this working.
I’m setting up a searchlight analysis with Nfold cross-validation. I'm trying to look at the confusion matrix for each cross-validation for each searchlight. This information seems to be lost when using searchlights.
As I understood there were some plans to aggregate the output per searchlight into the output of the total results. Is there any news about this? OR could I get to this information in another way for now?
The easiest way to aggregate this kind of non-scalar information within a searchlight is to
get the confusion matrix to come out of the CrossValidation as a vector (flattened matrix).
For the first part of a possible solution we have "Confusion", a node that turns raw targets
predictions into a confusion table. Here is a sketch: no error computing in the classifier, return
raw predictions, use Confusion as a post-processing node to yield matrices.
CrossValidation(some_classifier,
some_partitioner,
errorfx=None,
postproc=Confusion())
Now the last bit is to flatten the confusion matrix into a vector. You could write a simple Node
implementation that does that. Here is some pseudo code:
class MyFlatMatrix(Node):
def _call(ds):
return Dataset(ds.samples.ravel())
and now use this class as a post-processing node for Confusion itself.
CrossValidation(some_classifier,
some_partitioner,
errorfx=None,
postproc=Confusion(postproc=MyFlatMatrix()))
stick this into a searchlight and it should harvest what you want. This is all written as a sketch and wasn't tested...
Instead of a custom Node class you could also use a ChainMapper comprised of a FlattenMapper and a TransposeMapper
to achieve the same thing....
Good luck!
Michael
--
Michael Hanke
http://mih.voxindeserto.de<http://mih.voxindeserto.de/>
_______________________________________________
Pkg-ExpPsy-PyMVPA mailing list
Pkg-ExpPsy-PyMVPA at lists.alioth.debian.org<mailto:Pkg-ExpPsy-PyMVPA at lists.alioth.debian.org>
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-exppsy-pymvpa
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/pkg-exppsy-pymvpa/attachments/20140321/d00041c0/attachment.html>
More information about the Pkg-ExpPsy-PyMVPA
mailing list