vrijdag 9 september 2016

02 - EEGs - Eerste analyse

Dus 240.000 * 16 * 2.196 = 8.432.640.000 getallen voor alleen al patient 2 om het beoogde neurale netwerk iets zinnigs te leren. Dat lijkt wel heel erg veel.

De eerste uitdaging is dat de bestanden 'Matlab-files' zijn. Matlab is een commercieel AI product met een eigen bestandsindeling. Gelukkig vind ik al snel een alternatief : scipy.io De wetenschappelijke python uitbreiding waarmee het bestandstype uit elkaar te rafelen is. Ik kan er nu weer 'vertrouwde' numpy arrays van maken.

Ik besluit echter dat het eerst wel interessant is om eens te lijken of ik zo'n EEG kan plotten:

Een uur voor aanval

   Dit is er een uit "EEG recordings/train_1/1_2_1.mat" waarbij de laatste '1' voor de .mat aangeeft dat het er een is in een uur voor een epilepsie aanval. Deze is bijvoorbeeld uit een tussenperiode ('EEG recordings/train_1/1_1_0.mat':
Tussenmeting

Duidelijk toch? :-)
Ik besluit dat we in ieder geval minder data moeten hebben. Stel dat ik alleen de punten groter dan 100 of kleiner dan -100 pak? Ik wel dan wel de afstand tussen de punten bewaren en daarvoor moet ik ook de 'coördinaat' (zeg maar het volgnummer van de meting) meegegeven. Dat lukt met de volgende code: (E = de numpy file van 16 * 240.000 metingen)

x = np.where(np.abs(E[0])>100)

y = E[0,x]
plt.plot(x[0],y[0])
plt.show()

Dat lijkt al heel wat interessantere resultaten te geven:


Een uur voor aanval

Tussenmeting

Ik heb er maar een paar bekeken maar dit lijkt wel onderscheidend!  En de data is drastisch verminderd! Zou ik dat aan een NN kunnen aanbieden? Wellicht zelfs de grafieken zelf? Ik besluit het te proberen. Na heel veel experimenteren met code lukt het om de grafiek zonder schalen en randen om te vormen. Het lukt mij alleen (nog?) niet om de grafiek rechtsreeks aan een numpy array toe te voegen. Wel door het eerst als afbeelding op te slaan. Nu ja, dat kost waarschijnlijk wel veel meer tijd maar goed. Voorlopig maar zo dan.


Geen opmerkingen:

Een reactie posten