Atrás

Sistema de Predicción de Enfermedades Cardíacas

Sistema de Predicción de Enfermedades Cardíacas

Descripción

Pipeline completo de machine learning para predecir riesgo cardíaco usando XGBoost, con despliegue en Docker y versionado de modelos

Detalles

Implementación completa de machine learning con procesamiento robusto de datos y gestión de modelos. Características principales: - Pipeline automatizado de datos que maneja valores faltantes y escalado de características - División estratificada de datos con balanceo de clases - Seguimiento de rendimiento del modelo (Precisión, Recall, AUC-ROC) - Despliegue Dockerizado con gestión de dependencias Poetry - Versionado automático de modelos con serialización timestamp - Métricas de evaluación comprehensivas y reproductibilidad

Tecnologías Utilizadas

Python 3.10XGBoostScikit-learnPandasJoblibDockerPoetry

Detalles Técnicos

Preprocesamiento de Datos

                          
1 def process_data(df: pd.DataFrame, columns_to_impute: list):
2 # Handle missing values and prepare features
3 df[columns_to_impute] = df[columns_to_impute].replace(0, np.nan)
4 return df.drop(columns='num'), df['num']
Imagen técnica - Preprocesamiento de Datos

División Estratificada de Datos

                          
1 X_train, X_test, y_train, y_test = train_test_split(
2 X, y,
3 test_size=0.2,
4 stratify=y,
5 random_state=42
6 )
Imagen técnica - División Estratificada de Datos

Entrenamiento del Modelo XGBoost

                          
1 model = XGBClassifier(
2 objective='binary:logistic',
3 max_depth=2,
4 n_estimators=300,
5 learning_rate=0.1
6 )
7 model.fit(X_train, y_train)
Imagen técnica - Entrenamiento del Modelo XGBoost

Evaluación del Modelo

                          
1 y_pred = model.predict(X_test)
2 y_proba = model.predict_proba(X_test)[:, 1]
3 print(f'AUC: {roc_auc_score(y_test, y_proba):.2f}')
Imagen técnica - Evaluación del Modelo

Versionado de Modelos

                          
1 def save_model(model, path):
2 timestamp = datetime.now().strftime('%Y-%m-%d')
3 joblib.dump(model, f'{path}_{timestamp}.joblib')

Descargas