Diesmal machen wir da weiter, wo wir letztes Mal aufgehört haben: Wir berechnen wieder Ähnlichkeiten (als Korrelationen), vergleichen diesmal aber unabhängige Daten. Dazu teilen wir unseren Datensatz in zwei Hälften. Letztlich bedeutet das, dass wir run1 und run2 haben und den einen mit Hilfe des anderen dekodieren. Das ist eine ganz gute Übung, um irgendwann dann auch run3 dekodieren zu können.

Wir machen uns eine Liste mit allen unseren Hirnbildern


In [1]:
import os

In [2]:
imgList = ['../training/%s'%x for x in os.listdir('../training/')]; imgList.sort()

In [3]:
imgList


Out[3]:
['../training/gesichter_004_familie.nii.gz',
 '../training/gesichter_007_freunde.nii.gz',
 '../training/gesichter_013_filmschauspieler.nii.gz',
 '../training/gesichter_016_sportler.nii.gz',
 '../training/gesichter_024_serienschauspieler.nii.gz',
 '../training/gesichter_029_politiker.nii.gz',
 '../training/gesichter_033_dozenten.nii.gz',
 '../training/gesichter_036_lehrer.nii.gz',
 '../training/gesichter_042_familie.nii.gz',
 '../training/gesichter_047_freunde.nii.gz',
 '../training/homewalk_003_jahnplatz.nii.gz',
 '../training/homewalk_008_kesselbrink.nii.gz',
 '../training/homewalk_011_strassenbahn.nii.gz',
 '../training/homewalk_017_bahnhof.nii.gz',
 '../training/homewalk_022_schule.nii.gz',
 '../training/homewalk_026_kriche.nii.gz',
 '../training/homewalk_032_keller.nii.gz',
 '../training/homewalk_038_spaziergang.nii.gz',
 '../training/homewalk_041_kiel.nii.gz',
 '../training/homewalk_049_universitaet.nii.gz',
 '../training/motorik_005_badminton.nii.gz',
 '../training/motorik_010_tennis.nii.gz',
 '../training/motorik_015_schwimmen.nii.gz',
 '../training/motorik_020_fussball.nii.gz',
 '../training/motorik_025_hochsprung.nii.gz',
 '../training/motorik_030_klettern.nii.gz',
 '../training/motorik_035_huerdenlauf.nii.gz',
 '../training/motorik_040_schiessen.nii.gz',
 '../training/motorik_045_seilspringen.nii.gz',
 '../training/motorik_050_jonglieren.nii.gz',
 '../training/ruhe_001_ruhe.nii.gz',
 '../training/ruhe_009_ruhe.nii.gz',
 '../training/ruhe_014_ruhe.nii.gz',
 '../training/ruhe_019_ruhe.nii.gz',
 '../training/ruhe_023_ruhe.nii.gz',
 '../training/ruhe_027_ruhe.nii.gz',
 '../training/ruhe_031_ruhe.nii.gz',
 '../training/ruhe_037_ruhe.nii.gz',
 '../training/ruhe_043_ruhe.nii.gz',
 '../training/ruhe_046_ruhe.nii.gz',
 '../training/sprache_002_tiere.nii.gz',
 '../training/sprache_006_werkezeuge.nii.gz',
 '../training/sprache_012_staedte.nii.gz',
 '../training/sprache_018_laender.nii.gz',
 '../training/sprache_021_berufe.nii.gz',
 '../training/sprache_028_obst.nii.gz',
 '../training/sprache_034_kleidung.nii.gz',
 '../training/sprache_039_gemuese.nii.gz',
 '../training/sprache_044_moebel.nii.gz',
 '../training/sprache_048_farben.nii.gz']

Wir können uns - wie gewohnt - die Bilder anschauen


In [4]:
import seaborn as sns
import matplotlib.pylab as plt
%matplotlib inline

In [5]:
from nilearn import image, datasets, input_data, plotting

Hier schauen wir uns als Beispiel das letzte Bild an


In [6]:
plotting.plot_stat_map(imgList[-1],title=imgList[-1],threshold=0.8);


Wir extrahieren nun die Daten aus diesen Bildern und glätten dabei mit 8mm


In [7]:
masker = input_data.NiftiMasker(mask_img='../masks/MNI152_T1_2mm_brain_mask.nii.gz',
                                smoothing_fwhm=8).fit()

In [8]:
masker


Out[8]:
NiftiMasker(detrend=False, high_pass=None, low_pass=None, mask_args=None,
      mask_img='../masks/MNI152_T1_2mm_brain_mask.nii.gz',
      mask_strategy='background', memory=Memory(cachedir=None),
      memory_level=1, sample_mask=None, sessions=None, smoothing_fwhm=8,
      standardize=False, t_r=None, target_affine=None, target_shape=None,
      verbose=0)

So sieht das selbe Bild nach der Glättung aus:


In [9]:
plotting.plot_stat_map( masker.inverse_transform(masker.transform(imgList[-1])),title=imgList[-1],threshold=0.5);


Wir packen alle Daten in eine Tabelle

Wie immer gilt: eine Tabelle ist so aufgebaut, dass die Beobachtungen (Zeitpunkte) in Zeilen sind und die Feature (Voxel) in Spalten.


In [10]:
import pandas as pd

In [11]:
def makeBigDf(imgList,masker):
    bigDf = pd.DataFrame()
    for img in imgList:
        thisName = img.split('/')[-1].split('.')[0]
        cond,num,content = thisName.split('_')
        cont = '%s_%s' % (num,content)
        thisDf = pd.DataFrame(masker.transform(img))
        thisDf.index = [[cond],[cont]]
        bigDf = pd.concat([bigDf,thisDf])
    bigDf.sort_index(inplace=True)
    return bigDf

In [12]:
blockDf = makeBigDf(imgList,masker)

In [13]:
blockDf


Out[13]:
0 1 2 3 4 5 6 7 8 9 ... 228473 228474 228475 228476 228477 228478 228479 228480 228481 228482
gesichter 004_familie -0.014855 -0.024355 -0.027687 -0.038244 -0.043698 -0.056847 -0.051843 -0.050397 -0.060623 0.117202 ... 0.038417 0.036142 0.001644 -0.031372 -0.060248 -0.073920 0.024064 0.000059 -0.022126 0.037132
007_freunde 0.039879 0.048562 0.045989 0.044050 0.053268 0.013482 0.025875 0.035157 -0.002446 0.033470 ... -0.076746 -0.097585 0.086181 0.046315 0.013758 -0.002870 0.103601 0.068005 0.037680 0.062346
013_filmschauspieler -0.017098 -0.003029 0.012788 -0.004869 0.008069 -0.008523 -0.000716 0.007047 -0.002022 -0.068285 ... 0.082126 0.055809 -0.056343 -0.070858 -0.080747 -0.086588 -0.063761 -0.077149 -0.086245 -0.094850
016_sportler 0.014403 0.030208 0.031041 0.016924 0.030390 -0.001624 0.016587 0.021991 0.012503 0.028999 ... -0.112561 -0.109749 -0.022204 0.001747 0.026520 0.041152 -0.027369 -0.011728 0.010862 -0.022667
024_serienschauspieler -0.059488 -0.045062 -0.038207 -0.052990 -0.046659 -0.046383 -0.039629 -0.039846 -0.023099 -0.189310 ... 0.070610 0.068208 -0.061734 -0.064434 -0.074519 -0.085969 -0.050186 -0.052484 -0.059203 -0.033757
029_politiker 0.175263 0.160685 0.130618 0.191024 0.171995 0.174951 0.187718 0.164957 0.170626 0.218364 ... 0.063251 0.049390 0.088398 0.091826 0.101274 0.112074 0.104366 0.093528 0.089231 0.075279
033_dozenten 0.084158 0.086470 0.067347 0.078017 0.078071 0.061531 0.079921 0.077067 0.085344 -0.024811 ... -0.058074 -0.046776 0.037916 -0.001455 -0.019778 -0.022023 0.059367 0.021964 0.002218 0.039501
036_lehrer -0.316378 -0.257089 -0.171713 -0.329105 -0.261805 -0.322609 -0.311057 -0.249230 -0.264032 -0.174428 ... -0.013346 0.000427 0.038627 0.039537 0.028381 0.007494 0.014276 0.019062 0.018838 -0.004875
042_familie 0.077669 0.083928 0.075971 0.099875 0.106373 0.087597 0.107678 0.112091 0.097615 0.063419 ... -0.000962 0.010177 -0.077449 -0.071881 -0.050326 -0.022722 -0.058579 -0.060267 -0.045722 -0.046021
047_freunde -0.075450 -0.073649 -0.062537 -0.084905 -0.083546 -0.058173 -0.081237 -0.084067 -0.071012 -0.052724 ... -0.098031 -0.117491 -0.001473 -0.017302 -0.037299 -0.055402 0.029607 0.012435 -0.009884 0.035144
homewalk 003_jahnplatz 0.072830 0.061535 0.057645 0.065341 0.059341 0.072479 0.062055 0.058607 0.067181 0.076340 ... -0.013297 -0.017261 0.112195 0.094899 0.100605 0.117385 0.152016 0.129559 0.123307 0.139764
008_kesselbrink 0.098370 0.083839 0.070983 0.113654 0.097646 0.140572 0.127385 0.111898 0.137497 0.055664 ... -0.022107 -0.004982 0.023044 0.025445 0.031994 0.043715 0.009069 0.019076 0.031902 0.026876
011_strassenbahn 0.010832 0.000137 0.001034 -0.006973 -0.011596 0.001663 -0.005149 -0.000168 0.012345 0.055495 ... 0.119293 0.131414 0.094304 0.082646 0.071297 0.060275 0.103092 0.091737 0.078972 0.087624
017_bahnhof 0.027555 0.016808 0.016023 0.024159 0.019930 0.031581 0.027529 0.031275 0.036670 -0.009195 ... 0.060830 0.080391 0.022938 0.019405 0.018411 0.021555 0.025629 0.020848 0.017024 0.034550
022_schule 0.002312 0.008807 0.008743 0.010403 0.015416 0.014101 0.011953 0.010690 0.007961 0.013456 ... -0.039536 -0.024898 0.044537 0.037250 0.036775 0.034729 0.030383 0.031986 0.039872 0.014420
026_kriche 0.223630 0.188620 0.125171 0.268114 0.221804 0.263701 0.265698 0.219562 0.223942 -0.039844 ... -0.002711 -0.002084 -0.053970 -0.086229 -0.110444 -0.123875 -0.057813 -0.091179 -0.112798 -0.094293
032_keller -0.041100 -0.046069 -0.050791 -0.060103 -0.073092 -0.043296 -0.060824 -0.077660 -0.048601 -0.058503 ... -0.002392 -0.023793 -0.013884 -0.031315 -0.037520 -0.036132 -0.011853 -0.023430 -0.024336 -0.007793
038_spaziergang -0.163325 -0.177723 -0.180129 -0.162763 -0.162859 -0.147720 -0.153447 -0.140881 -0.141180 -0.224724 ... -0.073790 -0.074498 -0.037559 -0.013020 -0.024725 -0.057618 -0.039786 0.001544 0.008356 0.004252
041_kiel -0.117256 -0.090441 -0.047598 -0.122760 -0.089177 -0.129301 -0.127705 -0.094319 -0.125368 -0.118116 ... 0.115492 0.121814 -0.035957 -0.037125 -0.021910 0.004511 -0.024679 -0.024845 -0.007070 0.003391
049_universitaet 0.187252 0.150620 0.097614 0.218440 0.170987 0.227095 0.225245 0.177851 0.203507 0.002186 ... 0.070704 0.076335 0.052592 0.021462 0.010567 0.014491 0.048918 0.024989 0.016553 0.015058
motorik 005_badminton 0.049163 0.039504 0.026184 0.051281 0.042552 0.064825 0.063947 0.054094 0.080180 0.051020 ... -0.113419 -0.099812 -0.016467 0.003454 0.035242 0.067875 -0.002537 0.019324 0.051602 0.044265
010_tennis -0.046340 -0.071818 -0.098419 -0.026589 -0.053292 -0.006602 -0.024551 -0.047615 -0.039516 -0.088557 ... -0.036499 -0.020894 -0.105917 -0.091038 -0.100281 -0.119848 -0.089256 -0.074363 -0.076268 -0.055408
015_schwimmen -0.104208 -0.095929 -0.075849 -0.085378 -0.079494 -0.065095 -0.075426 -0.074180 -0.075171 -0.182189 ... 0.005163 0.007141 -0.101442 -0.108727 -0.115399 -0.121468 -0.075659 -0.080189 -0.091456 -0.065018
020_fussball 0.024488 -0.001562 -0.003851 0.036457 0.003897 0.091055 0.052688 0.014688 0.068767 -0.041612 ... 0.155330 0.126179 -0.040609 -0.042375 -0.043550 -0.042236 -0.017316 -0.031137 -0.041593 -0.006529
025_hochsprung -0.082450 -0.088737 -0.078928 -0.105719 -0.102011 -0.103739 -0.108699 -0.096086 -0.095954 0.070492 ... -0.051006 0.002680 -0.006012 -0.000963 0.009190 0.016420 0.012778 0.026148 0.046081 0.062592
030_klettern -0.009813 -0.016283 -0.025030 -0.001519 -0.006817 0.006778 0.003251 0.005032 0.004589 0.027663 ... 0.049979 0.078429 -0.045325 -0.058003 -0.038237 -0.001567 -0.055983 -0.050547 -0.014128 -0.022020
035_huerdenlauf -0.193711 -0.152289 -0.074525 -0.234243 -0.181042 -0.245312 -0.253435 -0.204936 -0.239324 0.039578 ... 0.030501 0.021526 0.084012 0.070680 0.060403 0.047971 0.095735 0.087317 0.073415 0.073414
040_schiessen -0.059648 -0.041449 -0.020979 -0.066441 -0.042687 -0.064121 -0.067578 -0.046507 -0.067299 0.045795 ... -0.047599 -0.046003 -0.018307 -0.033834 -0.040541 -0.040989 -0.023120 -0.043924 -0.049591 -0.039671
045_seilspringen 0.128563 0.121458 0.103920 0.141000 0.134892 0.124503 0.140733 0.135448 0.135200 0.166775 ... 0.151369 0.162875 0.000063 -0.010218 -0.005968 0.010265 0.031339 0.011667 0.005963 0.036947
050_jonglieren 0.296871 0.265031 0.196686 0.340038 0.290687 0.335529 0.354428 0.299417 0.343376 0.109817 ... 0.005713 0.033793 0.042612 0.019072 -0.005987 -0.033473 0.041056 0.019726 0.000039 0.010738
ruhe 001_ruhe -0.074891 -0.047138 -0.026351 -0.070407 -0.040189 -0.081575 -0.055253 -0.028157 -0.035545 -0.070899 ... -0.031858 -0.000394 -0.006692 0.038253 0.056315 0.043189 -0.026030 0.009292 0.028734 -0.025750
009_ruhe 0.107405 0.101262 0.094894 0.091795 0.087839 0.051872 0.053147 0.053124 0.006663 0.093231 ... 0.156287 0.136191 0.024927 -0.005440 -0.007318 0.018535 0.008352 -0.027679 -0.038698 -0.039841
014_ruhe 0.101808 0.115414 0.115091 0.147143 0.150698 0.134617 0.151339 0.145099 0.120375 0.049626 ... 0.050696 0.019287 0.107648 0.083377 0.071877 0.071550 0.089791 0.054224 0.031897 0.003291
019_ruhe 0.080877 0.059017 0.038219 0.084107 0.062782 0.076000 0.066860 0.046776 0.035075 0.137378 ... -0.013123 -0.065481 0.036560 0.039849 0.031839 0.019452 0.014690 0.018386 0.007464 -0.024203
023_ruhe 0.018406 0.050442 0.064114 -0.005505 0.033575 -0.066806 -0.028938 0.016479 -0.044827 0.108004 ... -0.128767 -0.118166 -0.037658 -0.004792 0.027554 0.051671 -0.038883 -0.009053 0.019907 -0.013230
027_ruhe 0.102956 0.102810 0.097533 0.136710 0.132491 0.139113 0.153023 0.147476 0.149464 0.082376 ... 0.043539 0.071817 0.070866 0.094664 0.110285 0.114069 0.093358 0.104957 0.106131 0.092122
031_ruhe 0.081747 0.062045 0.033709 0.060634 0.043437 0.038890 0.031942 0.011872 -0.003917 0.105656 ... -0.067114 -0.120608 0.000949 0.008347 0.011462 0.017448 -0.015635 -0.009116 -0.006746 -0.022399
037_ruhe -0.154840 -0.131709 -0.099935 -0.171588 -0.141749 -0.167845 -0.167006 -0.133679 -0.144272 -0.170886 ... -0.044027 -0.071606 0.032263 0.042072 0.028123 -0.000621 -0.007321 0.009268 0.005002 -0.025775
043_ruhe -0.020974 -0.009851 -0.000733 -0.022217 -0.007715 -0.038104 -0.026818 -0.004291 -0.029861 0.009651 ... 0.048972 0.031261 -0.058092 -0.076462 -0.076122 -0.054901 -0.090818 -0.117673 -0.125026 -0.131965
046_ruhe -0.046426 -0.043535 -0.024479 -0.082196 -0.067649 -0.110066 -0.118207 -0.098547 -0.144007 -0.123772 ... -0.063887 -0.073547 0.034562 0.033096 0.021693 0.003233 0.019961 0.021941 0.013347 0.008925
sprache 002_tiere -0.142396 -0.131228 -0.121068 -0.134855 -0.129466 -0.114757 -0.116099 -0.114060 -0.093008 -0.158958 ... -0.077366 -0.069869 -0.192337 -0.177565 -0.169979 -0.169299 -0.213555 -0.184656 -0.160246 -0.160301
006_werkezeuge -0.020244 -0.019242 -0.019718 -0.069268 -0.069323 -0.088401 -0.093164 -0.093046 -0.089797 -0.003129 ... 0.068817 0.065845 -0.016817 -0.008529 -0.007577 -0.006407 -0.013857 -0.003185 -0.006785 0.010922
012_staedte -0.012526 -0.008699 -0.001112 0.009196 0.011046 0.021717 0.016825 0.019944 0.014474 -0.052571 ... -0.045260 -0.072674 0.051179 0.066658 0.077685 0.078978 0.016322 0.020122 0.023971 -0.020865
018_laender -0.088297 -0.088354 -0.090098 -0.112259 -0.116504 -0.100073 -0.106839 -0.114200 -0.081007 0.022557 ... -0.060964 -0.067954 -0.035945 -0.028450 -0.039105 -0.057105 -0.040940 -0.017631 -0.014492 0.000265
021_berufe 0.033783 0.024877 0.008248 0.037207 0.028291 0.040323 0.046723 0.041684 0.055882 -0.017455 ... -0.041091 -0.022669 0.064415 0.054129 0.046529 0.043770 0.052210 0.036289 0.023307 0.026137
028_obst -0.048764 -0.068557 -0.075046 -0.064613 -0.086334 -0.044052 -0.061752 -0.082252 -0.044685 -0.044456 ... 0.020553 0.018642 -0.088207 -0.072150 -0.069604 -0.069838 -0.083319 -0.067534 -0.066920 -0.050348
034_kleidung -0.003983 -0.012891 -0.020012 0.008355 -0.003304 0.037553 0.029114 0.014732 0.050812 -0.004098 ... -0.118890 -0.118194 0.040797 0.067841 0.068145 0.045079 0.039931 0.063006 0.062435 0.074738
039_gemuese -0.107487 -0.080969 -0.036537 -0.138516 -0.121899 -0.147086 -0.157704 -0.141634 -0.156542 0.130185 ... 0.065519 0.089982 0.021796 0.064768 0.094595 0.115862 0.001260 0.049002 0.078548 0.036276
044_moebel -0.042130 -0.041882 -0.042831 -0.058676 -0.060160 -0.057200 -0.059278 -0.055509 -0.056904 -0.006842 ... -0.039852 -0.053585 -0.124000 -0.082952 -0.051372 -0.027181 -0.143682 -0.112845 -0.087144 -0.131489
048_farben -0.002959 -0.012495 -0.024622 -0.000938 -0.009005 0.005088 -0.001729 -0.012793 -0.001927 0.010977 ... -0.071040 -0.073827 0.020192 0.058948 0.081130 0.083739 0.031476 0.068274 0.087641 0.069812

50 rows × 228483 columns

Ähnlichkeit von Template und einzelnem Block

Diesmal verwenden wir eine Kreuzvalidierung, das heißt wir teilen unseren Datensatz in zwei Hälften. Eine Hälfte wird benutzt um die einzelnen Blöcke vorherzusagen. Die andere Hälfte wird benutzt, um gemittelte Aktivierungsmuster für jede Bedingung zu erstellen, mit denen wir die einzelnen Blöcke korrelieren können


In [14]:
# funktion, um unsere Tabelle aufzuteilen
def makeHalfDf(bigDf,start,stop):
    # leere Tabelle, in die wir 1/2 unserer Blöcke schreiben
    halfDf = pd.DataFrame()
    # wir gehen durch die Bedingungen (Gesichter,Wörter,etc.)
    for cond in bigDf.index.levels[0]:
        # wir nehmen eine Bedinung
        thisDf = bigDf.ix[cond]
        # und wählen nur Zeilen (Blöcke) aus, die zwischen 'start' und 'stop' liegen
        thisHalf = thisDf.ix[start:stop]
        # wir machen uns einen neuen index für diese Auswahl
        thisHalf.index = [[cond]*thisHalf.shape[0],thisHalf.index]
        # wir packen diese Auswahl zu unserer großen Tabelle
        halfDf = pd.concat([halfDf,thisHalf])
        
    # wenn wir damit fertig sind, geben wir die Tabelle aus
    return halfDf

In [15]:
thisHalfDf = makeHalfDf(blockDf,0,5)

In [16]:
thisHalfDf


Out[16]:
0 1 2 3 4 5 6 7 8 9 ... 228473 228474 228475 228476 228477 228478 228479 228480 228481 228482
gesichter 004_familie -0.014855 -0.024355 -0.027687 -0.038244 -0.043698 -0.056847 -0.051843 -0.050397 -0.060623 0.117202 ... 0.038417 0.036142 0.001644 -0.031372 -0.060248 -0.073920 0.024064 0.000059 -0.022126 0.037132
007_freunde 0.039879 0.048562 0.045989 0.044050 0.053268 0.013482 0.025875 0.035157 -0.002446 0.033470 ... -0.076746 -0.097585 0.086181 0.046315 0.013758 -0.002870 0.103601 0.068005 0.037680 0.062346
013_filmschauspieler -0.017098 -0.003029 0.012788 -0.004869 0.008069 -0.008523 -0.000716 0.007047 -0.002022 -0.068285 ... 0.082126 0.055809 -0.056343 -0.070858 -0.080747 -0.086588 -0.063761 -0.077149 -0.086245 -0.094850
016_sportler 0.014403 0.030208 0.031041 0.016924 0.030390 -0.001624 0.016587 0.021991 0.012503 0.028999 ... -0.112561 -0.109749 -0.022204 0.001747 0.026520 0.041152 -0.027369 -0.011728 0.010862 -0.022667
024_serienschauspieler -0.059488 -0.045062 -0.038207 -0.052990 -0.046659 -0.046383 -0.039629 -0.039846 -0.023099 -0.189310 ... 0.070610 0.068208 -0.061734 -0.064434 -0.074519 -0.085969 -0.050186 -0.052484 -0.059203 -0.033757
homewalk 003_jahnplatz 0.072830 0.061535 0.057645 0.065341 0.059341 0.072479 0.062055 0.058607 0.067181 0.076340 ... -0.013297 -0.017261 0.112195 0.094899 0.100605 0.117385 0.152016 0.129559 0.123307 0.139764
008_kesselbrink 0.098370 0.083839 0.070983 0.113654 0.097646 0.140572 0.127385 0.111898 0.137497 0.055664 ... -0.022107 -0.004982 0.023044 0.025445 0.031994 0.043715 0.009069 0.019076 0.031902 0.026876
011_strassenbahn 0.010832 0.000137 0.001034 -0.006973 -0.011596 0.001663 -0.005149 -0.000168 0.012345 0.055495 ... 0.119293 0.131414 0.094304 0.082646 0.071297 0.060275 0.103092 0.091737 0.078972 0.087624
017_bahnhof 0.027555 0.016808 0.016023 0.024159 0.019930 0.031581 0.027529 0.031275 0.036670 -0.009195 ... 0.060830 0.080391 0.022938 0.019405 0.018411 0.021555 0.025629 0.020848 0.017024 0.034550
022_schule 0.002312 0.008807 0.008743 0.010403 0.015416 0.014101 0.011953 0.010690 0.007961 0.013456 ... -0.039536 -0.024898 0.044537 0.037250 0.036775 0.034729 0.030383 0.031986 0.039872 0.014420
motorik 005_badminton 0.049163 0.039504 0.026184 0.051281 0.042552 0.064825 0.063947 0.054094 0.080180 0.051020 ... -0.113419 -0.099812 -0.016467 0.003454 0.035242 0.067875 -0.002537 0.019324 0.051602 0.044265
010_tennis -0.046340 -0.071818 -0.098419 -0.026589 -0.053292 -0.006602 -0.024551 -0.047615 -0.039516 -0.088557 ... -0.036499 -0.020894 -0.105917 -0.091038 -0.100281 -0.119848 -0.089256 -0.074363 -0.076268 -0.055408
015_schwimmen -0.104208 -0.095929 -0.075849 -0.085378 -0.079494 -0.065095 -0.075426 -0.074180 -0.075171 -0.182189 ... 0.005163 0.007141 -0.101442 -0.108727 -0.115399 -0.121468 -0.075659 -0.080189 -0.091456 -0.065018
020_fussball 0.024488 -0.001562 -0.003851 0.036457 0.003897 0.091055 0.052688 0.014688 0.068767 -0.041612 ... 0.155330 0.126179 -0.040609 -0.042375 -0.043550 -0.042236 -0.017316 -0.031137 -0.041593 -0.006529
025_hochsprung -0.082450 -0.088737 -0.078928 -0.105719 -0.102011 -0.103739 -0.108699 -0.096086 -0.095954 0.070492 ... -0.051006 0.002680 -0.006012 -0.000963 0.009190 0.016420 0.012778 0.026148 0.046081 0.062592
ruhe 001_ruhe -0.074891 -0.047138 -0.026351 -0.070407 -0.040189 -0.081575 -0.055253 -0.028157 -0.035545 -0.070899 ... -0.031858 -0.000394 -0.006692 0.038253 0.056315 0.043189 -0.026030 0.009292 0.028734 -0.025750
009_ruhe 0.107405 0.101262 0.094894 0.091795 0.087839 0.051872 0.053147 0.053124 0.006663 0.093231 ... 0.156287 0.136191 0.024927 -0.005440 -0.007318 0.018535 0.008352 -0.027679 -0.038698 -0.039841
014_ruhe 0.101808 0.115414 0.115091 0.147143 0.150698 0.134617 0.151339 0.145099 0.120375 0.049626 ... 0.050696 0.019287 0.107648 0.083377 0.071877 0.071550 0.089791 0.054224 0.031897 0.003291
019_ruhe 0.080877 0.059017 0.038219 0.084107 0.062782 0.076000 0.066860 0.046776 0.035075 0.137378 ... -0.013123 -0.065481 0.036560 0.039849 0.031839 0.019452 0.014690 0.018386 0.007464 -0.024203
023_ruhe 0.018406 0.050442 0.064114 -0.005505 0.033575 -0.066806 -0.028938 0.016479 -0.044827 0.108004 ... -0.128767 -0.118166 -0.037658 -0.004792 0.027554 0.051671 -0.038883 -0.009053 0.019907 -0.013230
sprache 002_tiere -0.142396 -0.131228 -0.121068 -0.134855 -0.129466 -0.114757 -0.116099 -0.114060 -0.093008 -0.158958 ... -0.077366 -0.069869 -0.192337 -0.177565 -0.169979 -0.169299 -0.213555 -0.184656 -0.160246 -0.160301
006_werkezeuge -0.020244 -0.019242 -0.019718 -0.069268 -0.069323 -0.088401 -0.093164 -0.093046 -0.089797 -0.003129 ... 0.068817 0.065845 -0.016817 -0.008529 -0.007577 -0.006407 -0.013857 -0.003185 -0.006785 0.010922
012_staedte -0.012526 -0.008699 -0.001112 0.009196 0.011046 0.021717 0.016825 0.019944 0.014474 -0.052571 ... -0.045260 -0.072674 0.051179 0.066658 0.077685 0.078978 0.016322 0.020122 0.023971 -0.020865
018_laender -0.088297 -0.088354 -0.090098 -0.112259 -0.116504 -0.100073 -0.106839 -0.114200 -0.081007 0.022557 ... -0.060964 -0.067954 -0.035945 -0.028450 -0.039105 -0.057105 -0.040940 -0.017631 -0.014492 0.000265
021_berufe 0.033783 0.024877 0.008248 0.037207 0.028291 0.040323 0.046723 0.041684 0.055882 -0.017455 ... -0.041091 -0.022669 0.064415 0.054129 0.046529 0.043770 0.052210 0.036289 0.023307 0.026137

25 rows × 228483 columns


In [17]:
otherHalfDf = makeHalfDf(blockDf,5,10)

In [18]:
otherHalfDf


Out[18]:
0 1 2 3 4 5 6 7 8 9 ... 228473 228474 228475 228476 228477 228478 228479 228480 228481 228482
gesichter 029_politiker 0.175263 0.160685 0.130618 0.191024 0.171995 0.174951 0.187718 0.164957 0.170626 0.218364 ... 0.063251 0.049390 0.088398 0.091826 0.101274 0.112074 0.104366 0.093528 0.089231 0.075279
033_dozenten 0.084158 0.086470 0.067347 0.078017 0.078071 0.061531 0.079921 0.077067 0.085344 -0.024811 ... -0.058074 -0.046776 0.037916 -0.001455 -0.019778 -0.022023 0.059367 0.021964 0.002218 0.039501
036_lehrer -0.316378 -0.257089 -0.171713 -0.329105 -0.261805 -0.322609 -0.311057 -0.249230 -0.264032 -0.174428 ... -0.013346 0.000427 0.038627 0.039537 0.028381 0.007494 0.014276 0.019062 0.018838 -0.004875
042_familie 0.077669 0.083928 0.075971 0.099875 0.106373 0.087597 0.107678 0.112091 0.097615 0.063419 ... -0.000962 0.010177 -0.077449 -0.071881 -0.050326 -0.022722 -0.058579 -0.060267 -0.045722 -0.046021
047_freunde -0.075450 -0.073649 -0.062537 -0.084905 -0.083546 -0.058173 -0.081237 -0.084067 -0.071012 -0.052724 ... -0.098031 -0.117491 -0.001473 -0.017302 -0.037299 -0.055402 0.029607 0.012435 -0.009884 0.035144
homewalk 026_kriche 0.223630 0.188620 0.125171 0.268114 0.221804 0.263701 0.265698 0.219562 0.223942 -0.039844 ... -0.002711 -0.002084 -0.053970 -0.086229 -0.110444 -0.123875 -0.057813 -0.091179 -0.112798 -0.094293
032_keller -0.041100 -0.046069 -0.050791 -0.060103 -0.073092 -0.043296 -0.060824 -0.077660 -0.048601 -0.058503 ... -0.002392 -0.023793 -0.013884 -0.031315 -0.037520 -0.036132 -0.011853 -0.023430 -0.024336 -0.007793
038_spaziergang -0.163325 -0.177723 -0.180129 -0.162763 -0.162859 -0.147720 -0.153447 -0.140881 -0.141180 -0.224724 ... -0.073790 -0.074498 -0.037559 -0.013020 -0.024725 -0.057618 -0.039786 0.001544 0.008356 0.004252
041_kiel -0.117256 -0.090441 -0.047598 -0.122760 -0.089177 -0.129301 -0.127705 -0.094319 -0.125368 -0.118116 ... 0.115492 0.121814 -0.035957 -0.037125 -0.021910 0.004511 -0.024679 -0.024845 -0.007070 0.003391
049_universitaet 0.187252 0.150620 0.097614 0.218440 0.170987 0.227095 0.225245 0.177851 0.203507 0.002186 ... 0.070704 0.076335 0.052592 0.021462 0.010567 0.014491 0.048918 0.024989 0.016553 0.015058
motorik 030_klettern -0.009813 -0.016283 -0.025030 -0.001519 -0.006817 0.006778 0.003251 0.005032 0.004589 0.027663 ... 0.049979 0.078429 -0.045325 -0.058003 -0.038237 -0.001567 -0.055983 -0.050547 -0.014128 -0.022020
035_huerdenlauf -0.193711 -0.152289 -0.074525 -0.234243 -0.181042 -0.245312 -0.253435 -0.204936 -0.239324 0.039578 ... 0.030501 0.021526 0.084012 0.070680 0.060403 0.047971 0.095735 0.087317 0.073415 0.073414
040_schiessen -0.059648 -0.041449 -0.020979 -0.066441 -0.042687 -0.064121 -0.067578 -0.046507 -0.067299 0.045795 ... -0.047599 -0.046003 -0.018307 -0.033834 -0.040541 -0.040989 -0.023120 -0.043924 -0.049591 -0.039671
045_seilspringen 0.128563 0.121458 0.103920 0.141000 0.134892 0.124503 0.140733 0.135448 0.135200 0.166775 ... 0.151369 0.162875 0.000063 -0.010218 -0.005968 0.010265 0.031339 0.011667 0.005963 0.036947
050_jonglieren 0.296871 0.265031 0.196686 0.340038 0.290687 0.335529 0.354428 0.299417 0.343376 0.109817 ... 0.005713 0.033793 0.042612 0.019072 -0.005987 -0.033473 0.041056 0.019726 0.000039 0.010738
ruhe 027_ruhe 0.102956 0.102810 0.097533 0.136710 0.132491 0.139113 0.153023 0.147476 0.149464 0.082376 ... 0.043539 0.071817 0.070866 0.094664 0.110285 0.114069 0.093358 0.104957 0.106131 0.092122
031_ruhe 0.081747 0.062045 0.033709 0.060634 0.043437 0.038890 0.031942 0.011872 -0.003917 0.105656 ... -0.067114 -0.120608 0.000949 0.008347 0.011462 0.017448 -0.015635 -0.009116 -0.006746 -0.022399
037_ruhe -0.154840 -0.131709 -0.099935 -0.171588 -0.141749 -0.167845 -0.167006 -0.133679 -0.144272 -0.170886 ... -0.044027 -0.071606 0.032263 0.042072 0.028123 -0.000621 -0.007321 0.009268 0.005002 -0.025775
043_ruhe -0.020974 -0.009851 -0.000733 -0.022217 -0.007715 -0.038104 -0.026818 -0.004291 -0.029861 0.009651 ... 0.048972 0.031261 -0.058092 -0.076462 -0.076122 -0.054901 -0.090818 -0.117673 -0.125026 -0.131965
046_ruhe -0.046426 -0.043535 -0.024479 -0.082196 -0.067649 -0.110066 -0.118207 -0.098547 -0.144007 -0.123772 ... -0.063887 -0.073547 0.034562 0.033096 0.021693 0.003233 0.019961 0.021941 0.013347 0.008925
sprache 028_obst -0.048764 -0.068557 -0.075046 -0.064613 -0.086334 -0.044052 -0.061752 -0.082252 -0.044685 -0.044456 ... 0.020553 0.018642 -0.088207 -0.072150 -0.069604 -0.069838 -0.083319 -0.067534 -0.066920 -0.050348
034_kleidung -0.003983 -0.012891 -0.020012 0.008355 -0.003304 0.037553 0.029114 0.014732 0.050812 -0.004098 ... -0.118890 -0.118194 0.040797 0.067841 0.068145 0.045079 0.039931 0.063006 0.062435 0.074738
039_gemuese -0.107487 -0.080969 -0.036537 -0.138516 -0.121899 -0.147086 -0.157704 -0.141634 -0.156542 0.130185 ... 0.065519 0.089982 0.021796 0.064768 0.094595 0.115862 0.001260 0.049002 0.078548 0.036276
044_moebel -0.042130 -0.041882 -0.042831 -0.058676 -0.060160 -0.057200 -0.059278 -0.055509 -0.056904 -0.006842 ... -0.039852 -0.053585 -0.124000 -0.082952 -0.051372 -0.027181 -0.143682 -0.112845 -0.087144 -0.131489
048_farben -0.002959 -0.012495 -0.024622 -0.000938 -0.009005 0.005088 -0.001729 -0.012793 -0.001927 0.010977 ... -0.071040 -0.073827 0.020192 0.058948 0.081130 0.083739 0.031476 0.068274 0.087641 0.069812

25 rows × 228483 columns


In [19]:
thisHalfMeanDf = thisHalfDf.groupby(level=0).mean()

In [20]:
thisHalfMeanDf


Out[20]:
0 1 2 3 4 5 6 7 8 9 ... 228473 228474 228475 228476 228477 228478 228479 228480 228481 228482
gesichter -0.007432 0.001265 0.004785 -0.007026 0.000274 -0.019979 -0.009945 -0.005210 -0.015138 -0.015585 ... 0.000369 -0.009435 -0.010491 -0.023720 -0.035047 -0.041639 -0.002730 -0.014659 -0.023806 -0.010359
homewalk 0.042380 0.034225 0.030886 0.041317 0.036148 0.052079 0.044754 0.042460 0.052331 0.038352 ... 0.021037 0.032933 0.059404 0.051929 0.051816 0.055532 0.064038 0.058641 0.058215 0.060647
motorik -0.031869 -0.043708 -0.046173 -0.025989 -0.037669 -0.003911 -0.018408 -0.029820 -0.012339 -0.038169 ... -0.008086 0.003059 -0.054089 -0.047930 -0.042960 -0.039851 -0.034398 -0.028043 -0.022327 -0.004020
ruhe 0.046721 0.055800 0.057194 0.049427 0.058941 0.022821 0.037431 0.046664 0.016348 0.063468 ... 0.006647 -0.005713 0.024957 0.030249 0.036053 0.040879 0.009584 0.009034 0.009861 -0.019947
sprache -0.045936 -0.044529 -0.044750 -0.053996 -0.055191 -0.048238 -0.050511 -0.051936 -0.038691 -0.041911 ... -0.031173 -0.033464 -0.025901 -0.018751 -0.018489 -0.022013 -0.039964 -0.029812 -0.026849 -0.028769

5 rows × 228483 columns


In [21]:
otherHalfMeanDf = otherHalfDf.groupby(level=0).mean()

In [22]:
otherHalfMeanDf


Out[22]:
0 1 2 3 4 5 6 7 8 9 ... 228473 228474 228475 228476 228477 228478 228479 228480 228481 228482
gesichter -0.010948 0.000069 0.007937 -0.009019 0.002217 -0.011340 -0.003395 0.004164 0.003708 0.005964 ... -0.021432 -0.020855 0.017204 0.008145 0.004450 0.003884 0.029807 0.017344 0.010936 0.019806
homewalk 0.017840 0.005001 -0.011147 0.028186 0.013533 0.034096 0.029793 0.016911 0.022460 -0.087800 ... 0.021460 0.019555 -0.017756 -0.029245 -0.036806 -0.039725 -0.017043 -0.022584 -0.023859 -0.015877
motorik 0.032452 0.035294 0.036014 0.035767 0.039007 0.031475 0.035480 0.037691 0.035308 0.077926 ... 0.037992 0.050124 0.012611 -0.002460 -0.006066 -0.003559 0.017805 0.004848 0.003140 0.011882
ruhe -0.007507 -0.004048 0.001219 -0.015732 -0.008237 -0.027602 -0.025413 -0.015434 -0.034519 -0.019395 ... -0.016504 -0.032537 0.016110 0.020343 0.019088 0.015846 -0.000091 0.001875 -0.001458 -0.015819
sprache -0.041065 -0.043359 -0.039809 -0.050877 -0.056141 -0.041139 -0.050270 -0.055491 -0.041849 0.017153 ... -0.028742 -0.027396 -0.025884 0.007291 0.024579 0.029532 -0.030866 -0.000020 0.014912 -0.000202

5 rows × 228483 columns


In [23]:
# wir gehen durch die Bedingungen (Gesichter,Wörter,etc.)
for cond in thisHalfMeanDf.index:
    # Abbildung mit zwei Teilen (links und rechts)
    fig,(ax1,ax2) = plt.subplots(1,2,figsize=(16,4))
    # Auswahl der Bedingung aus der ersten Tabelle
    thisA = masker.inverse_transform(thisHalfMeanDf.ix[cond])
    # Auswahl der Bedingung aus der zweiten Tabelle
    thisB = masker.inverse_transform(otherHalfMeanDf.ix[cond])
    # Abbildungsteil links, mit Daten der ersten Tabelle)
    display = plotting.plot_stat_map(thisA,title='%s, 1st half'%cond,threshold=0.2,axes=ax1)
    # Abbildungsteil rechts, mit Daten der zweiten Tabelle
    plotting.plot_stat_map(thisB,title='%s, 2nd half'%cond,threshold=0.2,axes=ax2,cut_coords=display.cut_coords)
    # Abbildung zeigen
    plt.show()


Vergleich der beiden Hälften über ihre gemittelten Daten


In [24]:
import numpy as np

In [25]:
# wir nehmen die Mittelungen der beiden Hälften und packen sie zusammen
myMeanDf = pd.concat([thisHalfMeanDf,otherHalfMeanDf])
# wir machen einen Index, der uns sagt welche Zeilen zu welcher Hälfte gehören
myMeanDf.index = [ np.concatenate([ ['1st half']*5,['2nd half']*5 ]),myMeanDf.index ]

In [26]:
myMeanDf


Out[26]:
0 1 2 3 4 5 6 7 8 9 ... 228473 228474 228475 228476 228477 228478 228479 228480 228481 228482
1st half gesichter -0.007432 0.001265 0.004785 -0.007026 0.000274 -0.019979 -0.009945 -0.005210 -0.015138 -0.015585 ... 0.000369 -0.009435 -0.010491 -0.023720 -0.035047 -0.041639 -0.002730 -0.014659 -0.023806 -0.010359
homewalk 0.042380 0.034225 0.030886 0.041317 0.036148 0.052079 0.044754 0.042460 0.052331 0.038352 ... 0.021037 0.032933 0.059404 0.051929 0.051816 0.055532 0.064038 0.058641 0.058215 0.060647
motorik -0.031869 -0.043708 -0.046173 -0.025989 -0.037669 -0.003911 -0.018408 -0.029820 -0.012339 -0.038169 ... -0.008086 0.003059 -0.054089 -0.047930 -0.042960 -0.039851 -0.034398 -0.028043 -0.022327 -0.004020
ruhe 0.046721 0.055800 0.057194 0.049427 0.058941 0.022821 0.037431 0.046664 0.016348 0.063468 ... 0.006647 -0.005713 0.024957 0.030249 0.036053 0.040879 0.009584 0.009034 0.009861 -0.019947
sprache -0.045936 -0.044529 -0.044750 -0.053996 -0.055191 -0.048238 -0.050511 -0.051936 -0.038691 -0.041911 ... -0.031173 -0.033464 -0.025901 -0.018751 -0.018489 -0.022013 -0.039964 -0.029812 -0.026849 -0.028769
2nd half gesichter -0.010948 0.000069 0.007937 -0.009019 0.002217 -0.011340 -0.003395 0.004164 0.003708 0.005964 ... -0.021432 -0.020855 0.017204 0.008145 0.004450 0.003884 0.029807 0.017344 0.010936 0.019806
homewalk 0.017840 0.005001 -0.011147 0.028186 0.013533 0.034096 0.029793 0.016911 0.022460 -0.087800 ... 0.021460 0.019555 -0.017756 -0.029245 -0.036806 -0.039725 -0.017043 -0.022584 -0.023859 -0.015877
motorik 0.032452 0.035294 0.036014 0.035767 0.039007 0.031475 0.035480 0.037691 0.035308 0.077926 ... 0.037992 0.050124 0.012611 -0.002460 -0.006066 -0.003559 0.017805 0.004848 0.003140 0.011882
ruhe -0.007507 -0.004048 0.001219 -0.015732 -0.008237 -0.027602 -0.025413 -0.015434 -0.034519 -0.019395 ... -0.016504 -0.032537 0.016110 0.020343 0.019088 0.015846 -0.000091 0.001875 -0.001458 -0.015819
sprache -0.041065 -0.043359 -0.039809 -0.050877 -0.056141 -0.041139 -0.050270 -0.055491 -0.041849 0.017153 ... -0.028742 -0.027396 -0.025884 0.007291 0.024579 0.029532 -0.030866 -0.000020 0.014912 -0.000202

10 rows × 228483 columns


In [27]:
# wir korrelieren alle Bedingungen mit allen anderen (wobei wir für jede
# Bedinung zwei Variaten haben: einmal die Variante aus der ersten Hälfte
# und einmal die Variate aus der zweiten Hälfte)
meanCorrDf = myMeanDf.T.corr()

In [28]:
meanCorrDf


Out[28]:
1st half 2nd half
gesichter homewalk motorik ruhe sprache gesichter homewalk motorik ruhe sprache
1st half gesichter 1.000000 -0.299983 -0.414012 -0.201440 0.171322 0.499949 -0.175737 -0.261656 -0.079538 0.053521
homewalk -0.299983 1.000000 0.175988 -0.467650 -0.508776 -0.002543 0.510659 0.360926 -0.431066 -0.474336
motorik -0.414012 0.175988 1.000000 -0.296463 -0.480528 -0.466849 0.323657 0.597283 -0.253150 -0.185749
ruhe -0.201440 -0.467650 -0.296463 1.000000 -0.129341 -0.188541 -0.495799 -0.103070 0.741246 -0.080952
sprache 0.171322 -0.508776 -0.480528 -0.129341 1.000000 0.224792 -0.190888 -0.632623 0.003683 0.727669
2nd half gesichter 0.499949 -0.002543 -0.466849 -0.188541 0.224792 1.000000 -0.339541 -0.090062 -0.351856 -0.123079
homewalk -0.175737 0.510659 0.323657 -0.495799 -0.190888 -0.339541 1.000000 -0.057988 -0.448083 -0.180733
motorik -0.261656 0.360926 0.597283 -0.103070 -0.632623 -0.090062 -0.057988 1.000000 -0.328329 -0.519857
ruhe -0.079538 -0.431066 -0.253150 0.741246 0.003683 -0.351856 -0.448083 -0.328329 1.000000 -0.024158
sprache 0.053521 -0.474336 -0.185749 -0.080952 0.727669 -0.123079 -0.180733 -0.519857 -0.024158 1.000000

In [29]:
plt.figure(figsize=(16,16))
sns.heatmap(meanCorrDf,square=True,vmin=-1,vmax=1,annot=True)
plt.yticks(rotation=90)
plt.xticks(rotation=90)
plt.show()


nur die Korrelation von erster und zweiter Hälfte


In [30]:
plt.figure(figsize=(8,8))
sns.heatmap(meanCorrDf.ix['1st half']['2nd half'],square=True,vmin=-1,vmax=1,annot=True)
plt.show()


Vorhersage mit unabhängigen Daten

Das hier ist jetzt so, wie die Vorhersagen in der letzten Sitzung, nur das wir jeden Block von run 1 mit den Mittelungen aus run 2 Vergleichen.


In [31]:
myCorrDf = pd.DataFrame(np.corrcoef(thisHalfMeanDf,otherHalfDf)[5:,:5],
                        index=thisHalfDf.index,
                        columns=otherHalfMeanDf.index)

In [32]:
plt.figure(figsize=(12,10))
sns.heatmap(myCorrDf,annot=True)
plt.show()


Entscheidungsregel (winner takes all)


In [33]:
def makeCorrPred(myCorrDf):
    d = {}
    # wir gehen durch jede Zeile
    for cond,num in myCorrDf.index:
        # wir wählen diese Zeile aus
        thisDf = myCorrDf.ix[cond].ix[num]
        # wir wählen die Spalte mit dem höhsten Wert aus
        winner = thisDf.idxmax()
        # wir schreiben einen eintrag mit folgenden infos:
        # real : die tatsächliche bedingung (aus der zeile)
        # winner: die spalte mit der höchsten korrelation
        # hit: wir fragen, ob real und winner identisch sind (kann wahr oder falsch sein)
        d[num] = {'real':cond, 'winner':winner,'hit':cond==winner  }
        
    # wir packen das ganze in eine tabelle, die wir nett formatieregn
    predDf = pd.DataFrame(d).T

    # wir rechnen aus, in wie viel prozent der Fälle wir richig lagen
    percentCorrect = np.mean( [int(x) for x in predDf['hit']] )*100
    
    return predDf,percentCorrect

In [34]:
corrPredDf,corrPcCorrect = makeCorrPred(myCorrDf)

In [35]:
corrPredDf


Out[35]:
hit real winner
001_ruhe True ruhe ruhe
002_tiere True sprache sprache
003_jahnplatz False homewalk motorik
004_familie False gesichter homewalk
005_badminton False motorik homewalk
006_werkezeuge True sprache sprache
007_freunde True gesichter gesichter
008_kesselbrink False homewalk motorik
009_ruhe True ruhe ruhe
010_tennis False motorik ruhe
011_strassenbahn False homewalk motorik
012_staedte True sprache sprache
013_filmschauspieler True gesichter gesichter
014_ruhe True ruhe ruhe
015_schwimmen True motorik motorik
016_sportler True gesichter gesichter
017_bahnhof True homewalk homewalk
018_laender True sprache sprache
019_ruhe True ruhe ruhe
020_fussball True motorik motorik
021_berufe True sprache sprache
022_schule True homewalk homewalk
023_ruhe True ruhe ruhe
024_serienschauspieler True gesichter gesichter
025_hochsprung True motorik motorik

In [36]:
print "%i%% richtige Vorhersagen!" % corrPcCorrect


76% richtige Vorhersagen!

Es fällt auf: wir hatten vorher 90% richtig, jetzt sind es nur noch 76%.

Überblick: 4 mögliche Varianten

Blöcke erste Hälfte, Mittelungen zweite Hälfte


In [37]:
myCorrDf = pd.DataFrame(np.corrcoef(thisHalfMeanDf,otherHalfDf)[5:,:5],
                        index=thisHalfDf.index,
                        columns=thisHalfMeanDf.index)
corrPredDf,corrPcCorrect = makeCorrPred(myCorrDf)
print "%i%% richtige Vorhersagen!" % corrPcCorrect


76% richtige Vorhersagen!

Blöcke zweite Hälfte, Mittelungen erste Hälfte


In [38]:
myCorrDf = pd.DataFrame(np.corrcoef(thisHalfMeanDf,otherHalfDf)[5:,:5],
                        index=thisHalfDf.index,
                        columns=otherHalfMeanDf.index)
corrPredDf,corrPcCorrect = makeCorrPred(myCorrDf)
print "%i%% richtige Vorhersagen!" % corrPcCorrect


76% richtige Vorhersagen!

Blöcke erste Hälfte, Mittelungen erste Hälfte


In [39]:
myCorrDf = pd.DataFrame(np.corrcoef(thisHalfMeanDf,thisHalfDf)[5:,:5],
                        index=thisHalfDf.index,
                        columns=thisHalfMeanDf.index)
corrPredDf,corrPcCorrect = makeCorrPred(myCorrDf)
print "%i%% richtige Vorhersagen!" % corrPcCorrect


88% richtige Vorhersagen!

Blöcke zweite Hälfte, Mittelungen zweite Hälfte


In [40]:
myCorrDf = pd.DataFrame(np.corrcoef(otherHalfMeanDf,otherHalfDf)[5:,:5],
                        index=otherHalfDf.index,
                        columns=otherHalfMeanDf.index)
corrPredDf,corrPcCorrect = makeCorrPred(myCorrDf)
print "%i%% richtige Vorhersagen!" % corrPcCorrect


88% richtige Vorhersagen!

76% richtiger Antworten für unabhängige Daten ist bei einer Ratewahrscheinlichkeit von 20% schon nicht schlecht. Aber unser Ziel ist natürlich, an 100% heranzukommen und dazu müssen wir Feature Selection betreiben. Das heißt, wir können nicht einfach Alles mit Allem korrelieren, sondern sollten Voxel aussuchen, die besonders bedeutsam sind.


In [ ]: