Saltar al contenido

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.

En resumen
  • 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
EEGPhysioNet · .edfband-pass8-30 Hz · MNEepochs-0.5 s to 4 sCSPfrom scratchlogistic reg.sklearn pipelinepredicttwo-class task
Fig. — cómo funciona
1

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.

2

Lo que construí

Solo

  1. 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.
  2. Construí el pipeline: el CSP propio alimentando una regresión logística, con validación cruzada k-fold y guardado y carga del modelo.
  3. Escribí la capa de preprocesamiento con MNE: carga de EDF, un paso banda de 8–30 Hz, extracción de eventos y epoching.
  4. Construí la herramienta de línea de comandos (train, predict, stream) y un bucle por lotes sobre los 109 sujetos.
3

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.
4

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.

5

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