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
  • 62,5 % moy. · 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
Sur les 109 sujets, les six configurations d'expériences donnent 62,5 % de précision moyenne (hasard = 50 %) ; la meilleure (poings vs pieds, mouvement réel) atteint 71 %, tandis que le poing gauche/droit reste autour de 58–60 %. Le CSP écrit de zéro et l'intégration scikit-learn sont le cœur du projet.
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

Sur les 109 sujets, les six configurations d'expériences donnent 62,5 % de précision moyenne (hasard = 50 %) ; la meilleure (poings vs pieds, mouvement réel) atteint 71 %, tandis que le poing gauche/droit reste autour de 58–60 %. Le CSP écrit de zéro et l'intégration scikit-learn sont le cœur du projet.

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 intra-sujet : chaque modèle est entraîné et testé sur le même sujet, sans généralisation à de nouveaux sujets.
  • La précision varie fortement selon le sujet et la tâche (de ~0,58 en poing gauche/droit à ~0,71 en poings/pieds) — le CSP écrit de zéro et l'intégration scikit-learn restent l'essentiel.

Des questions sur ce projet ? → Écrivez-moi