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']
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
)
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)
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}')
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