Skip to content

JonathanSerafinCM26/ModeloMLCorazon

Repository files navigation

📋 Proyecto de Predicción de Enfermedades Cardíacas

🎯 Objetivo

Desarrollar un modelo de machine learning para predecir enfermedades cardíacas utilizando el dataset heart.csv, con métricas objetivo de:

  • Accuracy > 85% ✅ (Logrado: 85.87%)
  • ROC-AUC > 0.90 ✅ (Logrado: 92.58%)
  • Recall > 80% ✅ (Logrado: 86.27%)

🏆 Resultados Finales

🥇 Mejor Modelo: Random Forest

  • Exactitud: 85.87%
  • Precisión: 88.00%
  • Recall: 86.27%
  • F1-Score: 87.13%
  • ROC-AUC: 92.58%

✅ El modelo cumple con todos los criterios establecidos!

📁 Estructura del Proyecto

d:\MachineLearning\
├── heart.csv                    # Dataset original
├── heart_disease_analysis.py    # Análisis completo de ML
├── app.py                      # Dashboard Streamlit
├── best_model.pkl             # Modelo Random Forest entrenado
├── best_model_name.pkl        # Nombre del mejor modelo
├── scaler.pkl                 # Escalador para preprocessing
├── label_encoders.pkl         # Codificadores para variables categóricas
├── shap_info.pkl             # Información SHAP para interpretabilidad
└── heart_disease_env/        # Entorno virtual Python

🚀 Instalación y Ejecución

1. Activar el Entorno Virtual

cd d:\MachineLearning
heart_disease_env\Scripts\activate

2. Ejecutar el Análisis Completo

python heart_disease_analysis.py

3. Lanzar el Dashboard Streamlit

streamlit run app.py

La aplicación estará disponible en: http://localhost:8501

📊 Fases del Proyecto

🔍 Fase 1: Exploración Inicial

  • ✅ Carga de datos (918 registros, 12 columnas)
  • ✅ Análisis de calidad (0 valores faltantes, 172 cholesterol=0)
  • ✅ Estadísticas descriptivas

📈 Fase 2: Análisis Exploratorio (EDA)

  • ✅ Distribución de variables (55.3% casos positivos)
  • ✅ Análisis univariado (histogramas, box plots)
  • ✅ Análisis bivariado (correlaciones, crosstabs)
  • ✅ Visualizaciones interactivas

🔧 Fase 3: Preparación de Datos

  • ✅ Limpieza (reemplazar cholesterol=0 con mediana)
  • ✅ Ingeniería de características (grupos de edad, ratios)
  • ✅ Codificación de variables categóricas (LabelEncoder)
  • ✅ División train/test (80/20, estratificada)
  • ✅ Escalado de características (StandardScaler)

🤖 Fase 4: Desarrollo de Modelos

  • Logistic Regression: 84.78% accuracy, 89.89% ROC-AUC
  • Decision Tree: 76.63% accuracy, 76.53% ROC-AUC
  • Random Forest: 85.87% accuracy, 92.58% ROC-AUC ⭐
  • ✅ Validación cruzada 5-fold
  • ✅ Métricas completas de evaluación

🔍 Fase 5: Interpretabilidad (SHAP)

  • ✅ Importancias de características
  • ✅ Análisis SHAP global
  • ✅ Interpretación local (ejemplos específicos)
  • ✅ Force plots y waterfall plots

📱 Fase 6: Dashboard Streamlit

  • Página Inicio: Información general y métricas clave
  • Análisis Exploratorio: Visualizaciones interactivas
  • Predictor: Formulario para predicciones personalizadas
  • Insights del Modelo: Interpretabilidad y rendimiento

🎪 Características Más Importantes

  1. 📈 ST_Slope (25.3%) - Pendiente del segmento ST
  2. 💓 MaxHR (12.2%) - Frecuencia cardíaca máxima
  3. 💔 ChestPainType (11.2%) - Tipo de dolor en el pecho
  4. 📊 Oldpeak (10.6%) - Depresión ST
  5. 🏃 ExerciseAngina (8.6%) - Angina inducida por ejercicio

🎯 Uso del Predictor

Formulario de Entrada:

  • 👤 Información Personal: Edad, Sexo
  • 💓 Datos Cardíacos: Tipo de dolor, ECG, Frecuencia cardíaca máxima
  • 🏥 Datos Clínicos: Presión arterial, Colesterol, Azúcar en sangre
  • 🏃 Datos de Ejercicio: Angina por ejercicio, Depresión ST, Pendiente ST

Salida del Modelo:

  • 🎯 Predicción: Alto/Bajo Riesgo
  • 📊 Probabilidad: Porcentaje de riesgo
  • 🎪 Confianza: Confianza del modelo
  • 📈 Visualización: Gráfico de probabilidades
  • 📝 Interpretación: Recomendaciones médicas

⚠️ Limitaciones y Consideraciones

🔍 Limitaciones:

  • Modelo entrenado con población específica
  • No incluye todos los factores de riesgo cardíaco
  • Requiere actualización periódica con nuevos datos

💡 Recomendaciones de Uso:

  • 🏥 Uso Clínico: Solo como herramienta de apoyo
  • 👨‍⚕️ Diagnóstico: No reemplaza evaluación médica profesional
  • 🔄 Seguimiento: Mantener controles médicos regulares
  • 📊 Complemento: Combinar con otros estudios diagnósticos

📈 Métricas de Evaluación

🎯 Conjunto de Prueba (184 casos):

Matriz de Confusión:
[[70  12]  <- Sin Enfermedad (82 casos)
 [14  88]] <- Con Enfermedad (102 casos)

Clasificación:
              precision  recall  f1-score  support
Sin Enfermedad    0.83    0.85      0.84       82
Con Enfermedad    0.88    0.86      0.87      102
    accuracy                       0.86      184

🏆 Comparación de Modelos:

Modelo Accuracy Precision Recall F1-Score ROC-AUC
Random Forest 85.87% 88.00% 86.27% 87.13% 92.58%
Logistic Regression 84.78% 84.91% 88.24% 86.54% 89.89%
Decision Tree 76.63% 79.80% 77.45% 78.61% 76.53%

🛠️ Tecnologías Utilizadas

📚 Librerías Principales:

  • pandas, numpy: Manipulación de datos
  • scikit-learn: Machine learning
  • matplotlib, seaborn, plotly: Visualización
  • streamlit: Dashboard web
  • shap: Interpretabilidad de modelos
  • joblib: Serialización de modelos

🔧 Herramientas:

  • Python 3.12+: Lenguaje de programación
  • Virtual Environment: Aislamiento de dependencias
  • Jupyter-style: Análisis interactivo
  • Git: Control de versiones (recomendado)

📞 Contacto y Soporte

Para preguntas, sugerencias o reportar problemas:

  • 📧 Contacta al desarrollador del proyecto
  • 📋 Revisa la documentación en el código
  • 🔍 Consulta los comentarios en heart_disease_analysis.py

⚠️ Nota Importante: Este proyecto es para fines educativos y de demostración. No debe utilizarse para diagnósticos médicos reales sin la supervisión de profesionales de la salud qualificados.

📅 Última actualización: Mayo 2025

About

Modelo de Machine Learning para la materia de Ciencia de Datos

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors