Aller au contenu

Total Perspective Vortex

Une interface cerveau-machine qui classe des signaux EEG d'imagerie motrice : un filtre spatial CSP écrit de zéro alimente une régression logistique, câblés en pipeline scikit-learn.

En bref
  • 109 sujets
  • passe-bande 8–30 Hz

Ma contributionImplémentation de Common Spatial Patterns de zéro — covariances par classe normalisées par la trace, une décomposition en valeurs propres généralisée et des features de log-variance — sous forme de transformateur scikit-learn.

RÔLE
Solo
CONTEXTE
École 42 · projets IA
STATUT
Terminé
RÉSULTAT
Le pipeline tourne de bout en bout ; sur l'unique run journalisé (sujet 4), il atteint 0,53 de précision en validation croisée, proche du niveau du hasard à deux classes. Le CSP écrit de zéro et l'intégration scikit-learn sont le vrai travail, pas le score.
MISE À JOUR
26 sept. 2026
EEGPhysioNet · .edfband-pass8-30 Hz · MNEepochs-0.5 s to 4 sCSPfrom scratchlogistic reg.sklearn pipelinepredicttwo-class task
Fig. — comment ça marche
1

Données

PhysioNet EEG Motor Movement/Imagery : 109 sujets, EEG à 64 canaux à 160 Hz ; runs 3–14, poing gauche/droit et les deux poings/les deux pieds.

2

Ce que j'ai construit

Solo

  1. Implémentation de Common Spatial Patterns de zéro — covariances par classe normalisées par la trace, une décomposition en valeurs propres généralisée et des features de log-variance — sous forme de transformateur scikit-learn.
  2. Construction du pipeline : le CSP maison alimentant une régression logistique, avec validation croisée k-fold et sauvegarde/chargement du modèle.
  3. Écriture de la couche de prétraitement MNE : chargement EDF, un passe-bande 8–30 Hz, extraction des événements et découpage en époques.
  4. Construction de l'outil en ligne de commande (train, predict, stream) et d'une boucle par lots sur les 109 sujets.
3

Choix clés

CSP écrit de zéro, pas celui de la bibliothèque
Le sujet impose une réduction de dimension implémentée à la main : les covariances, le problème de valeurs propres généralisé et la matrice de projection sont donc calculés directement ; le CSP de MNE n'est gardé que comme référence de contrôle.
Un transformateur compatible scikit-learn
Le CSP hérite de BaseEstimator et TransformerMixin, si bien qu'il se compose avec la régression logistique dans un même pipeline et traverse la validation croisée sans modification.
Une bande 8–30 Hz et un focus sensorimoteur
Le filtrage est restreint aux bandes mu et bêta où se situe l'activité d'imagerie motrice, avec des époques découpées de −0,5 s à 4 s autour de chaque événement.
4

Résultats

Le pipeline tourne de bout en bout ; sur l'unique run journalisé (sujet 4), il atteint 0,53 de précision en validation croisée, proche du niveau du hasard à deux classes. Le CSP écrit de zéro et l'intégration scikit-learn sont le vrai travail, pas le score.

5

Limites

  • Le mode stream est une relecture hors ligne, pas une acquisition en direct : il parcourt les époques pré-calculées une par une et affiche le temps de traitement.
  • Un seul modèle global par type de tâche, écrasé à chaque entraînement ; il n'y a pas de modèles sauvegardés par sujet.
  • L'évaluation est optimiste : la validation croisée est mesurée sur un seul run, sans sujet mis de côté ni jeu de validation séparé.
  • Sur l'unique run journalisé, la classification reste proche du niveau du hasard à deux classes — le CSP écrit de zéro et l'intégration scikit-learn sont l'essentiel, pas le score.

Des questions sur ce projet ? → Écrivez-moi