
Desentrañando el Misterio de Supervivencia del Titanic con Machine Learning
¡Hola Chiquis!👋🏻 El hundimiento del Titanic es una tragedia que nos recuerda la fragilidad de la vida y la importancia de la toma de decisiones en situaciones críticas. Pero también nos presenta un desafío fascinante: ¿podemos usar la ciencia de datos para entender mejor quiénes tuvieron más probabilidades de sobrevivir?
El hundimiento del Titanic en 1912 dejó una de las mayores tragedias marítimas de la historia. En este desafío, el objetivo es construir un modelo de Machine Learning que prediga quién tenía más probabilidades de sobrevivir basándonos en datos como edad, género y clase socioeconómica.
El Desafío: ¿Quién Abordaría el Bote Salvavidas? Imagina que eres un detective que investiga un caso histórico. Tienes un montón de pistas (datos de los pasajeros) y necesitas descubrir patrones que te ayuden a resolver el misterio de la supervivencia. ¡Ese es el desafío del Titanic!
Paso 1: Entender el Problema Antes de comenzar a construir el modelo, es crucial comprender el problema. El objetivo es construir un modelo predictivo que pueda identificar patrones y determinar qué factores influenciaron en la supervivencia.
Paso 2: Exploración de los Datos La exploración de datos es una etapa fundamental. Aquí se analizan los datos disponibles, se identifican las características más relevantes y se detectan posibles problemas, como valores nulos o anomalías. ¿Los niños y las mujeres tuvieron más probabilidades de sobrevivir? ¿La clase social influyó en las probabilidades de supervivencia? Ejemplo: Lo primero es instalar e importar las librerías necesaria, luego debes explorar el conjunto de datos:
- Pclass: Clase del ticket (1ª, 2ª, 3ª)
- Sex: Género del pasajero
- Age: Edad
- SibSp: Número de hermanos/esposos a bordo
- Parch: Número de padres/hijos a bordo
- Fare: Tarifa pagada por el boleto
- Embarked: Puerto de embarque
- Survived (solo en el set de entrenamiento): 1 si sobrevivió, 0 si no.
# Instalar las librerias necesarias
!pip install pandas scikit-learn seaborn matplotlib
# Importar librerias necesarias
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
# Cargar datos
gender_submission_df = pd.read_csv("/content/gender_submission.csv")
train_df = pd.read_csv("/content/train.csv")
test_df = pd.read_csv("/content/test.csv")
# Mostrar primeras filas
train_df.head()
Paso 3: Limpieza de Datos La limpieza de datos implica tratar valores nulos, eliminar duplicados y transformar variables según sea necesario. En este caso, podríamos imputar valores nulos en las edades o eliminar registros con demasiados datos faltantes. Al analizar los datos, notarás que hay valores nulos en Age, Cabin y Embarked, por lo que hay que manejarlos:
- ✔️ Rellenar los valores faltantes en Age con la mediana.
- ✔️ Rellenar Embarked con el valor más frecuente.
- ✔️ Ignorar la columna Cabin, ya que tiene muchos valores faltantes.
🔹 Ejemplo:
# Limpieza de datos
# Llenar valores nulos en 'Age' con la mediana
train_df["Age"].fillna(train_df["Age"].median(), inplace=True)
# Llenar valores nulos en 'Embarked' con el valor más frecuente
train_df["Embarked"].fillna(train_df["Embarked"].mode()[0], inplace=True)
# Eliminar la columna 'Cabin'
train_df.drop("Cabin", axis=1, inplace=True)
También convertimos las variables categóricas en numéricas:
train_df["Sex"] = train_df["Sex"].map({"male": 0, "female": 1})
train_df["Embarked"] = train_df["Embarked"].map({"C": 0, "Q": 1, "S": 2})
Paso 4: Ingeniería de Características La ingeniería de características consiste en crear nuevas características a partir de las existentes. A veces, las pistas no son lo que parecen. Necesitas crear nuevas variables que capturen mejor la información. Por ejemplo, puedes combinar la edad y el género para crear una nueva variable que represente “niño” o “adulto”. Por ejemplo, podemos transformar la columna ‘Sex’ en variables dummy y crear una nueva característica basada en el tamaño de la familia del pasajero. Ejemplo:
# Crear una nueva característica 'FamilySize'
train_df['FamilySize'] = train_df['SibSp'] + train_df['Parch'] + 1
features = ["Pclass", "Sex", "Age", "SibSp", "Parch", "Fare", "Embarked"]
X = train_df[features]
y = train_df["Survived"]
Paso 5: División de Datos Dividir los datos en conjuntos de entrenamiento y prueba es crucial para evaluar el rendimiento del modelo. Se suele usar una proporción del 70–80% de los datos para el entrenamiento y el resto para las pruebas. Ejemplo:
# División de datos
# Separar en entrenamiento y validación
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)
Paso 6: Análisis Exploratorio de Datos (EDA) Antes de entrenar el modelo, es clave encontrar patrones en los datos. Ejemplo de visualización de sobrevivientes por género:
# Análisis Exploratorio de Datos (EDA)
# Visualización de sobrevivientes por género (usando 'train_df' que contiene la columna 'Sex' original)
sns.barplot(x="Sex", y="Survived", data=train_df)
plt.xticks(ticks=[0, 1], labels=["Male", "Female"])
plt.title("Tasa de supervivencia por género")
plt.show()
📌 Hallazgos importantes:
- ✔️ Las mujeres tenían muchas más probabilidades de sobrevivir que los hombres.
- ✔️ Los pasajeros de 1ª clase tenían más chances de sobrevivir que los de 3ª clase.

Paso 7: Selección de Modelos Elige tu herramienta de detective favorita. Hay muchos modelos de Machine Learning que puedes usar, como la regresión logística, los árboles de decisión o los bosques aleatorios. Cada uno tiene sus propias fortalezas y debilidades.
Paso 8: Entrenamiento del Modelo Seleccionar y entrenar un modelo de aprendizaje automático es el siguiente paso. Los algoritmos comunes incluyen árboles de decisión, bosques aleatorios y modelos de regresión logística. Entrena tu modelo con los datos disponibles y evalúa su rendimiento. ¿Qué tan bien predice quién sobrevivió y quién no? Ajusta los parámetros de tu modelo para mejorar su precisión. Ejemplo:
Ahora usamos un modelo de Machine Learning, como un Random Forest, para hacer predicciones.
# Entrenar modelo
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
Con este modelo, podemos obtener una precisión del ~80% en la predicción de supervivencia.
Paso 9: Evaluación del Modelo Evaluar el rendimiento del modelo es esencial para entender su eficacia. Se utilizan métricas como la precisión, la exactitud y la matriz de confusión para analizar el rendimiento. Ejemplo:
# Evaluación del modelo
# Realizar predicciones en el conjunto de validacion (usando 'X_val' que fue definido en la división de datos)
y_pred = model.predict(X_val)
# Calcular la precisión
accuracy = accuracy_score(y_val, y_pred)
print(f'Precisión del modelo: {accuracy}')
# Mostrar la matriz de confusión
conf_matrix = confusion_matrix(y_val, y_pred)
print(conf_matrix)
Paso 10: Generar Predicciones 🚀 Usamos el modelo para predecir en el conjunto de test. Ejemplo:
# Predecir en test.csv
X_test = test_df[features]
test_df["Survived"] = model.predict(X_test)
# Guardar resultados
submission = test_df[["PassengerId", "Survived"]]
submission.to_csv("submission.csv", index=False)
Consejos para el Éxito
- No tengas miedo de experimentar: Prueba diferentes modelos, técnicas de ingeniería de características y estrategias de validación. ¡La clave está en la exploración!
- Aprende de los demás: Explora los cuadernos de otros participantes en Kaggle y aprende de sus enfoques. ¡La comunidad es un recurso valioso!
- Sé crítico con tus resultados: No te conformes con el primer modelo que encuentres. Busca formas de mejorar tu precisión y asegúrate de que tus resultados sean robustos.
Recursos Kaggle Desafío Titanic
Conclusión Resolver el desafío del Titanic implica una serie de pasos cuidadosamente estructurados, desde la comprensión del problema hasta la evaluación del modelo. Cada paso es crucial para construir un modelo predictivo robusto y eficaz. Este desafío nos ayuda a practicar el análisis de datos y Machine Learning con un problema del mundo real. 🚢
¡Gracias por leer! 👇🏻 🚀 ¿Te ha gustado? Comparte tu opinión. Artículo completo, visita: https://community.aws/@orlidun https://lnkd.in/ewtCN2Mn https://lnkd.in/eAjM_Smy 👩💻 https://lnkd.in/eKvu-BHe https://dev.to/orlidev https://lnkd.in/ecHHabTD https://pin.it/2BuZ9N4n8 https://linktr.ee/orlidevs ¡No te lo pierdas!
Referencias: Imágenes creadas con: Copilot ( microsoft.com )
#PorUnMillóndeAmigos #MakeYourselfVisible
