Predicting Pulsar Stars
Machine Learning en C++ para clasificar estrellas púlsar
Descripción
Aplicación en C++ que utiliza LibTorch (frontend C++ de PyTorch) para predecir si un objeto celeste es una estrella púlsar basándose en datos astronómicos. Analiza ocho variables continuas de mediciones de perfil integrado y curva DM-SNR para clasificar objetos.
Características
- Predicción ML para clasificación de estrellas púlsar
- 8 features astronómicas de entrada
- Sistema de compilación CMake multiplataforma
- Compatible con Apple Silicon (macOS)
- Operaciones tensoriales eficientes con LibTorch
Las estrellas púlsar son estrellas de neutrones altamente magnetizadas que emiten pulsos de radiación. De los ~70,000 candidatos detectados, solo ~2,000 son púlsares reales — este proyecto usa ML para distinguirlos.
El problema
Los radiotelescopios detectan miles de señales candidatas a púlsar, pero la mayoría son falsos positivos causados por interferencia de radio (RFI) o ruido. La clasificación manual es lenta y subjetiva. Este proyecto automatiza la clasificación usando un modelo de machine learning entrenado con datos astronómicos reales del dataset HTRU2.
Features de entrada
Feature 1
Media del perfil integrado
Feature 2
Desviación estándar del perfil integrado
Feature 3
Curtosis del perfil integrado
Feature 4
Asimetría del perfil integrado
Feature 5
Media de la curva DM-SNR
Feature 6
Desviación estándar de la curva DM-SNR
Feature 7
Curtosis de la curva DM-SNR
Feature 8
Asimetría de la curva DM-SNR
17,898
Muestras en el dataset
8
Features de entrada
2
Clases (púlsar / no-púlsar)
C++17
Estándar del lenguaje
¿Por qué C++ y no Python?
Python domina el ecosistema ML, pero C++ con LibTorch ofrece ventajas concretas: velocidad de inferencia nativa sin overhead de intérprete, integración directa con sistemas de alto rendimiento, y la posibilidad de desplegar modelos en entornos donde Python no es viable. Este proyecto demuestra que ML serio se puede hacer fuera del ecosistema Python.
Pipeline del modelo
Datos
Dataset HTRU2 con 17,898 muestras de candidatos a púlsar.
Preprocesamiento
Normalización de features y split train/test.
Entrenamiento
Red neuronal entrenada con LibTorch, optimizando cross-entropy loss.
Inferencia
Clasificación binaria de nuevos candidatos a púlsar en milisegundos.