[pymvpa] Within-subject classification, getting each subject's scores averaged over number of runs

Yaroslav Halchenko debian at onerussian.com
Fri Apr 22 12:38:43 UTC 2016


On Fri, 22 Apr 2016, Martin Sjøgård wrote:

>    I'm running some within-subject classifications in pyMVPA (same as the
>    example script on the site/in the manual in the hyperalignment section).
>    Everything works fine, and I get the average within-subject classification
>    scores. However, I also want to the classification scores for each
>    subject.

>    The results are organized by the lines:

>    wsc_results = [cv(sd) for sd in sd_all)

>    wsc_results = vstack(wsc_results)

>    If I type in:

>    print wsc_results

>    I get each subject's scores per run (7 runs), but I of course want to
>    average the runs per subject. I've tried:

>    wsc_results = [cv(sd)/nruns for sd in sd_all)

>    But that doesn't work (TypeError: unsupported operand type(s) for /:
>    'Dataset' and 'int').

>    Do you know how to get each subject's classification scores, averaged over
>    number of runs?

even this would work

[np.mean(cv(sd)) for sd in sd_all]

but I would recommend to collect not just "mean scores" but all the
confusion matrices "just in case", e.g.

# enable_ca=['stats'] for your cv definion
cms = []
errors = []
for sd in sd_all:
 errors.append(np.mean(cv(sd)))
 cms.append(cv.ca.stats)

then you can get all kinds of stats, e.g.

[cm.stats['ACC%'] for cm in cms]

would be your mean accuracies as well
-- 
Yaroslav O. Halchenko
Center for Open Neuroscience     http://centerforopenneuroscience.org
Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755
Phone: +1 (603) 646-9834                       Fax: +1 (603) 646-1419
WWW:   http://www.linkedin.com/in/yarik        



More information about the Pkg-ExpPsy-PyMVPA mailing list