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%)
- 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!
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
cd d:\MachineLearning
heart_disease_env\Scripts\activatepython heart_disease_analysis.pystreamlit run app.pyLa aplicación estará disponible en: http://localhost:8501
- ✅ Carga de datos (918 registros, 12 columnas)
- ✅ Análisis de calidad (0 valores faltantes, 172 cholesterol=0)
- ✅ Estadísticas descriptivas
- ✅ Distribución de variables (55.3% casos positivos)
- ✅ Análisis univariado (histogramas, box plots)
- ✅ Análisis bivariado (correlaciones, crosstabs)
- ✅ Visualizaciones interactivas
- ✅ 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)
- ✅ 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
- ✅ Importancias de características
- ✅ Análisis SHAP global
- ✅ Interpretación local (ejemplos específicos)
- ✅ Force plots y waterfall plots
- ✅ 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
- 📈 ST_Slope (25.3%) - Pendiente del segmento ST
- 💓 MaxHR (12.2%) - Frecuencia cardíaca máxima
- 💔 ChestPainType (11.2%) - Tipo de dolor en el pecho
- 📊 Oldpeak (10.6%) - Depresión ST
- 🏃 ExerciseAngina (8.6%) - Angina inducida por ejercicio
- 👤 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
- 🎯 Predicción: Alto/Bajo Riesgo
- 📊 Probabilidad: Porcentaje de riesgo
- 🎪 Confianza: Confianza del modelo
- 📈 Visualización: Gráfico de probabilidades
- 📝 Interpretación: Recomendaciones médicas
- Modelo entrenado con población específica
- No incluye todos los factores de riesgo cardíaco
- Requiere actualización periódica con nuevos datos
- 🏥 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
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
| 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% |
- 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
- Python 3.12+: Lenguaje de programación
- Virtual Environment: Aislamiento de dependencias
- Jupyter-style: Análisis interactivo
- Git: Control de versiones (recomendado)
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
📅 Última actualización: Mayo 2025