Este es el proyecto final del Curso IBM Data Science de Coursera finalizado en septiembre de 2025. En este proyecto proyecto completo de Data Science se predice la recuperación exitosa de la primera etapa del Falcon 9 de SpaceX.

El flujo incluyó recolección de datos mediante la API oficial y web scraping, limpieza y enriquecimiento con pandas, análisis exploratorio y geoespacial con seaborn y Folium, consultas SQL, feature engineering (One-Hot Encoding + escalado), entrenamiento de cuatro modelos de clasificación (Regresión Logística, SVM, Árbol de Decisión y KNN) con GridSearchCV, y despliegue de un dashboard web interactivo con Plotly Dash. Todo implementado en Python utilizando pandas, scikit-learn, matplotlib/seaborn, Folium, SQLite y Dash.

Enlace al sitio del proyecto:

https://github.com/fer78/Space-Launch-Optimization-with-Machine-Learning.git

Escenario y visión general del proyecto

La era espacial comercial ya ha llegado. Las empresas están haciendo que los viajes espaciales sean asequibles para todos:

Una razón por la cual SpaceX puede hacer estas operaciones es porque ha logrado que sus lanzamientos sean más económicos. Recientemente, anuncio en su sitio web el lanzamiento del nuevo cohete Falcon 9 con un coste de 62 millones de dólares, mientras que otras empresas pueden hacerlo con costes de más de 150 millones.

Gran parte de este ahorro es debido a que SpaceX puede reutilizar la primera etapa del lanzamiento. Con este dato, si podemos determinar si la primera etapa aterrizara, podemos determinar el coste de un lanzamiento.

En la infografía se puede apreciar las diferentes partes del cohete:

A diferencia de otros proveedores de cohetes, el Falcon 9 puede recuperar la primera etapa. En ocasiones no tiene éxito durante el aterrizaje y se destruye. En otras ocasiones, la propia empresa destruye la primera etapa debido a los parámetros de la misión como la carga útil. La orbita y el cliente.

En este proyecto asumirás el papel de un científico de datos que trabaja para una empresa nueva empresa de cohetes: SpaceY que quiere competir con SpaceX.

SpaceY fue fundada por el empresario industrial Allon Mask.

Tu trabajo es determinar el precio de cada lanzamiento, recopilando información sobre la competencia y determinando si se reutilizara la primera etapa.

En lugar de usar la ciencia de cohetes para determinar si la primera etapa aterrizara con éxito. Entrenarás un modelo de aprendizaje automático y usarás información pública para predecir si SpaceY reutilizará la primera etapa.

Recolección y estructuración de datos mediante la API oficial de SpaceX

En la primera fase de este proyecto, se construyó un dataset completo y estructurado a partir de datos públicos en tiempo real de todos los lanzamientos históricos de SpaceX, utilizando exclusivamente su API REST oficial (v4).

Parte 1: Extracción de datos mediante peticiones HTTP a la API de SpaceX

Se realizó una petición GET al endpoint https://api.spacexdata.com/v4/launches/past para obtener el histórico completo de lanzamientos.

Dado que la respuesta contiene únicamente identificadores (rocket_id, payload_id, launchpad_id, core_id), se implementó un proceso de data enrichment mediante llamadas secundarias a los endpoints específicos:

Transformación y normalización de datos

Construcción del dataset final de entrenamiento

Se creó un diccionario estructurado con las siguientes variables enriquecidas:

Este diccionario se convirtió en un DataFrame final (launch_df).

Limpieza y filtrado específico

El resultado es un dataset limpio, estructurado y enriquecido (dataset_part_1.csv) con 90 lanzamientos de Falcon 9 hasta noviembre de 2020, listo para las siguientes fases de análisis exploratorio, feature engineering y modelado predictivo del éxito del aterrizaje de la primera etapa.

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 90 entries, 0 to 89
Data columns (total 17 columns):
 #   Column          Non-Null Count  Dtype  
---  ------          --------------  -----  
 0   FlightNumber    90 non-null     int64  
 1   Date            90 non-null     object 
 2   BoosterVersion  90 non-null     object 
 3   PayloadMass     90 non-null     float64
 4   Orbit           90 non-null     object 
 5   LaunchSite      90 non-null     object 
 6   Outcome         90 non-null     object 
 7   Flights         90 non-null     int64  
 8   GridFins        90 non-null     bool   
 9   Reused          90 non-null     bool   
 10  Legs            90 non-null     bool   
 11  LandingPad      64 non-null     object 
 12  Block           90 non-null     float64
 13  ReusedCount     90 non-null     int64  
 14  Serial          90 non-null     object 
 15  Longitude       90 non-null     float64
 16  Latitude        90 non-null     float64
dtypes: bool(3), float64(4), int64(3), object(7)
memory usage: 10.2+ KB

Parte 2: Web Scraping de registros históricos desde Wikipedia

En esta segunda fase del proyecto se construyó un dataset alternativo y complementario mediante web scraping de la página de Wikipedia “List of Falcon 9 and Falcon Heavy launches”, con el objetivo de obtener una fuente independiente a la API oficial de SpaceX y permitir validación cruzada de los datos.

Tecnologías y herramientas utilizadas

Proceso de parsing implementado

  1. Identificación de tablas relevantes
  2. Extracción automática de nombres de columnas
  3. Parsing fila por fila con lógica robusta
  4. Construcción del dataset

Se obtuvo un DataFrame completo con 121 lanzamientos de Falcon 9 y Falcon Heavy hasta junio de 2021, incluyendo información crítica para el modelo predictivo:
Booster landing (variable objetivo), Payload mass, Orbit, Launch site, Version Booster, etc.

El archivo final se exportó como spacex_web_scraped.csv, listo para su uso en análisis exploratorio, fusión con el dataset de la API y entrenamiento de modelos de clasificación.

Parte 3: Data Wrangling y definición de la variable objetivo

En esta fase del proyecto se realizó un análisis exploratorio inicial (EDA) y el data wrangling necesario para convertir el dataset crudo (obtenido vía API en la Parte 1) en un conjunto de datos listo para modelado supervisado de clasificación.

Principales tareas realizadas

  1. Carga y diagnóstico inicial del dataset
  2. Análisis exploratorio univariante
    • Distribución de lanzamientos por sitio de lanzamiento (LaunchSite):
    • Distribución por tipo de órbita (Orbit), destacando la predominancia de LEO, ISS, GTO y SSO, y la presencia de órbitas menos frecuentes (HEO, MEO, ES-L1, etc.).
  3. Análisis profundo de la variable Outcome (resultado del aterrizaje de la primera etapa)
  4. Creación de la variable objetivo binaria (Class)
    • Se definió el conjunto de resultados fallidos: bad_outcomes = {'False ASDS', 'False RTLS', 'False Ocean', 'None ASDS', 'None None'}
    • Se generó la columna Class mediante list comprehension: python landing_class = [0 if outcome in bad_outcomes else 1 for outcome in df['Outcome']] df['Class'] = landing_class
    • Class = 1 → primera etapa recuperada con éxito
    • Class = 0 → no recuperada (fallo o misión expendable)
  5. Cálculo de la tasa de éxito global

Se exportó el dataset enriquecido como dataset_part_2.csv, que incluye:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 90 entries, 0 to 89
Data columns (total 18 columns):
 #   Column          Non-Null Count  Dtype  
---  ------          --------------  -----  
 0   FlightNumber    90 non-null     int64  
 1   Date            90 non-null     object 
 2   BoosterVersion  90 non-null     object 
 3   PayloadMass     90 non-null     float64
 4   Orbit           90 non-null     object 
 5   LaunchSite      90 non-null     object 
 6   Outcome         90 non-null     object 
 7   Flights         90 non-null     int64  
 8   GridFins        90 non-null     bool   
 9   Reused          90 non-null     bool   
 10  Legs            90 non-null     bool   
 11  LandingPad      64 non-null     object 
 12  Block           90 non-null     float64
 13  ReusedCount     90 non-null     int64  
 14  Serial          90 non-null     object 
 15  Longitude       90 non-null     float64
 16  Latitude        90 non-null     float64
 17  Class           90 non-null     int64  
dtypes: bool(3), float64(4), int64(4), object(7)
memory usage: 10.9+ KB

Parte 4: Exploratory Data Analysis (EDA) & Feature Engineering

En esta fase clave del proyecto se realizó un análisis exploratorio exhaustivo (EDA) y la ingeniería de variables (feature engineering) definitiva para preparar los datos de cara al modelado predictivo supervisado.

Se crean funciones auxiliares propias para aplicar un estilo visual elegante, consistente y profesional (ejes limpios, rejilla vertical rosa, leyenda personalizada rojo/verde para fallos y éxitos)

Análisis exploratorio realizado

FlightNumber vs PayloadMass

Scatter plot que muestra claramente la curva de aprendizaje de SpaceX: los primeros lanzamientos presentan más fallos, mientras que a partir del vuelo ~20–25 la tasa de éxito se vuelve muy alta, incluso con cargas útiles pesadas.

FlightNumber vs LaunchSite

PayloadMass vs LaunchSite

Observación clave: desde VAFB SLC-4E nunca se han lanzado cargas pesadas (>10 000 kg), lo que explica su tasa de éxito casi perfecta.

Success Rate by Orbit Type

Bar chart revelador:

FlightNumber vs Orbit & PayloadMass vs Orbit

Evolución anual de la tasa de éxito (2013–2020)

Line chart que muestra una mejora sostenida y casi lineal desde ~50 % en 2013 hasta >95 % en 2020, reflejando la madurez tecnológica de la reutilización.

Feature Engineering

  1. Selección de variables relevantes para el modelo:
  2. One-Hot Encoding aplicado a las variables categóricas:
    • Orbit (11 categorías)
    • LaunchSite (3)
    • LandingPad (5)
    • Serial (53 identificadores únicos de boosters)
  3. Conversión completa del dataset a tipo float64 para compatibilidad con algoritmos de Machine Learning.

Se generó el dataset definitivo dataset_part_3.csv con 104 columnas numéricas y 90 observaciones, completamente limpio, codificado y listo para entrenamiento de modelos de clasificación.

Parte 5: Análisis exploratorio con SQL

Aunque el núcleo del proyecto se basa en Machine Learning con Python, esta fase complementaria demuestra una competencia adicional muy valorada en ciencia de datos: el dominio de consultas SQL para análisis exploratorio y extracción de insights directamente desde bases de datos relacionales.

Objetivo

Utilizar SQLite como motor de base de datos en entorno local para cargar el dataset completo de misiones SpaceX y resolver 10 consultas analíticas reales mediante lenguaje SQL puro.

Infraestructura implementada

Consultas SQL realizadas y resultados clave obtenidos

TaskConsulta realizadaInsight principal
1DISTINCT Launch_Site4 sitios únicos: CCAFS SLC-40, KSC LC-39A, VAFB SLC-4E, CCAFS LC-40
2Lanzamientos desde sitios que empiezan por ‘CCA’69 misiones (mayoría histórica)
3Masa total de carga útil NASA (CRS)45 716 kg transportados en contratos CRS
4Masa media de carga en versión F9 v1.12 534 kg (versión temprana con menor capacidad)
5Primera fecha de aterrizaje exitoso en plataforma terrestre2015-12-22 (Flight 20 – hito histórico RTLS)
6Boosters con éxito en dron ship y carga entre 4000–6000 kg9 casos (todos F9 FT Bxxxx)
7Conteo total de éxitos y fallos de misión98 éxitos – 1 fallo (CRS-7 explosión)
8Booster_Version con máxima carga útil13 600 kg → F9 B5 B1048.2 y B1049.2 (misiones Starlink)
9Fallos en dron ship durante 2015Enero (CRS-7) y Marzo (SES-9) – dos intentos fallidos emblemáticos
10Ranking de outcomes de aterrizaje (2010-06-04 → 2017-03-20)Success (drone ship): 14, Success (ground pad): 9, Failure: 7, etc.

Parte 6: Visualización interactiva de sitios de lanzamiento con Folium

En esta fase del proyecto se implementó un análisis geoespacial interactivo utilizando la librería Folium, con el objetivo de explorar visualmente la ubicación estratégica de los sitios de lanzamiento de SpaceX y su relación con el éxito del aterrizaje de la primera etapa.

Tecnologías utilizadas

Tareas realizadas

Marcado de los 4 sitios de lanzamiento activos de Falcon 9

Cálculo y representación de distancias a infraestructuras críticas

Visualización interactiva de éxitos y fallos por lanzamiento

Insights geoespaciales obtenidos

Parte 7: Dashboard Interactivo con Plotly Dash

En la fase final del proyecto se desarrolló un dashboard web interactivo utilizando Plotly Dash, permitiendo a cualquier usuario (técnico o no técnico) explorar de forma dinámica los datos históricos de lanzamientos de SpaceX y los factores que influyen en el éxito del aterrizaje de la primera etapa.

Tecnologías utilizadas

Funcionalidades implementadas

  1. Dropdown de selección de sitio de lanzamiento
  2. Gráfico de tarta dinámico (Pie Chart)
  3. Range Slider de masa de carga útil (0 – 10 000 kg)
  4. Gráfico de dispersión interactivo (Scatter Plot)

Callbacks implementados

Parte Final: Modelado Predictivo y Selección del Mejor Algoritmo

En la fase culminante del proyecto se entrenaron y evaluaron cuatro algoritmos de clasificación supervisada para predecir si la primera etapa del Falcon 9 aterrizará con éxito (Class = 1) o no (Class = 0), utilizando el dataset completamente preprocesado (104 variables one-hot + numéricas estandarizadas).

Pipeline de Machine Learning implementado

  1. Estandarización de todas las variables con StandardScaler
  2. División train/test (80 % train – 20 % test, random_state=2)
  3. Búsqueda exhaustiva de hiperparámetros mediante GridSearchCV con 10-fold cross-validation
  4. Evaluación final sobre el conjunto de prueba (18 muestras)

Modelos entrenados y resultados

ModeloMejores hiperparámetros (GridSearchCV)Accuracy Validación (CV)Accuracy TestObservaciones
Logistic RegressionC=0.01, penalty='l2', solver='lbfgs'84.64 %83.33 %Muy estable, pocos falsos positivos
SVMC=1.0, gamma=0.0316, kernel='sigmoid'84.82 %83.33 %Rendimiento prácticamente idéntico a Regresión Logística
Decision Treecriterion='gini', max_depth=6, max_features='sqrt', min_samples_leaf=4, splitter='random'88.93 %83.33 %Mejor en validación (posible leve sobreajuste)
K-Nearest Neighborsn_neighbors=10, algorithm='auto', p=1 (distancia Manhattan)84.82 %83.33 %Robusto y consistente

Resultado clave: Los cuatro modelos alcanzan 83.33 % de accuracy en el conjunto de prueba (15 aciertos de 18 muestras), lo que representa un rendimiento excelente considerando el reducido tamaño del dataset (90 observaciones totales).

Análisis de matrices de confusión

Conclusión final del proyecto

Se ha construido con éxito un sistema predictivo robusto capaz de estimar, con más del 83 % de precisión, si la primera etapa del Falcon 9 será recuperada en una misión futura, basándose únicamente en parámetros públicos conocidos antes del lanzamiento (sitio, órbita, masa de carga, versión del booster, etc.).

Este modelo tiene aplicaciones reales:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *