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.
- 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
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.
Ce que j'ai construit
Solo
- 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.
- Construction du pipeline : le CSP maison alimentant une régression logistique, avec validation croisée k-fold et sauvegarde/chargement du modèle.
- É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.
- Construction de l'outil en ligne de commande (train, predict, stream) et d'une boucle par lots sur les 109 sujets.
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.
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.
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