[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