Total Perspective Vortex
Una interfaz cerebro-computadora que clasifica señales de EEG de imaginación motora: un filtro espacial CSP hecho desde cero alimenta una regresión logística, montado como un pipeline de scikit-learn.
- 62,5 % media · 109 sujetos
- filtro paso banda 8–30 Hz
Mi contribuciónImplementé Common Spatial Patterns desde cero — covarianzas por clase normalizadas por la traza, una descomposición generalizada en valores propios y características de log-varianza — como un transformador de scikit-learn.
- ROL
- Solo
- CONTEXTO
- École 42 · Proyectos de IA
- ESTADO
- Terminado
- RESULTADO
- En los 109 sujetos, las seis configuraciones de experimentos dan un 62,5 % de precisión media (azar = 50 %); la mejor (ambos puños vs ambos pies, movimiento real) llega al 71 %, mientras que el puño izquierdo/derecho se queda en torno al 58–60 %. El CSP hecho desde cero y la integración con scikit-learn son el núcleo del proyecto.
- ACTUALIZADO
- 26 sept 2026
Datos
PhysioNet EEG Motor Movement/Imagery: 109 sujetos, EEG de 64 canales a 160 Hz; ejecuciones 3–14, puño izquierdo/derecho y ambos puños/ambos pies.
Lo que construí
Solo
- Implementé Common Spatial Patterns desde cero — covarianzas por clase normalizadas por la traza, una descomposición generalizada en valores propios y características de log-varianza — como un transformador de scikit-learn.
- Construí el pipeline: el CSP propio alimentando una regresión logística, con validación cruzada k-fold y guardado y carga del modelo.
- Escribí la capa de preprocesamiento con MNE: carga de EDF, un paso banda de 8–30 Hz, extracción de eventos y epoching.
- Construí la herramienta de línea de comandos (train, predict, stream) y un bucle por lotes sobre los 109 sujetos.
Decisiones clave
- CSP escrito desde cero, no el de la librería
- El enunciado exige una reducción de dimensionalidad implementada a mano, así que las covarianzas, el problema generalizado de valores propios y la matriz de proyección se calculan directamente; el CSP de MNE se conserva solo como referencia para comprobar.
- Un transformador compatible con scikit-learn
- El CSP hereda de BaseEstimator y TransformerMixin, de modo que se combina con la regresión logística en un solo pipeline y pasa por la validación cruzada sin cambios.
- Una banda de 8–30 Hz y un enfoque sensoriomotor
- El filtrado se restringe a las bandas mu y beta donde reside la actividad de imaginación motora, con épocas recortadas de −0.5 s a 4 s alrededor de cada evento.
Resultados
En los 109 sujetos, las seis configuraciones de experimentos dan un 62,5 % de precisión media (azar = 50 %); la mejor (ambos puños vs ambos pies, movimiento real) llega al 71 %, mientras que el puño izquierdo/derecho se queda en torno al 58–60 %. El CSP hecho desde cero y la integración con scikit-learn son el núcleo del proyecto.
Límites
- El modo stream es una reproducción sin conexión, no una adquisición en vivo: recorre épocas precalculadas una a una e imprime el tiempo de procesamiento.
- Un único modelo global por tipo de tarea, sobrescrito en cada ejecución de entrenamiento; no hay modelos guardados por sujeto.
- La evaluación es intra-sujeto: cada modelo se entrena y se prueba sobre el mismo sujeto, sin generalización a nuevos sujetos.
- La precisión varía mucho según el sujeto y la tarea (de ~0,58 en puño izquierdo/derecho a ~0,71 en puños/pies) — lo sustancial siguen siendo el CSP hecho desde cero y la integración con scikit-learn.
¿Preguntas sobre este proyecto? → Escríbeme