Loan Status Prediction

PythonStreamlit

Loan Status Prediction es un proyecto de machine learning que predice si un préstamo será pagado por completo o incumplido (charged off), dando a las instituciones financieras una señal rápida y basada en datos para evaluar el riesgo crediticio — entrenado sobre un dataset real de Kaggle y desplegado como una app de Streamlit en tiempo real que cualquiera puede probar.

Arquitectura y Stack Tecnológico

Arquitectura Central

  • Lenguaje: Python (pandas, numpy)
  • Machine learning: scikit-learn + XGBoost (XGBRFClassifier), joblib para persistir el modelo
  • Datos: dataset de crédito de Kaggle (Credit_train.csv), limpiado a train_data_processed.csv
  • App y despliegue: Streamlit + Streamlit Cloud para una UI de predicción en tiempo real
  • Entorno: Google Colab / notebook de Jupyter para exploración y entrenamiento, .devcontainer para reproducibilidad

Pipeline de ML

Un único flujo reproducible desde los datos crudos de Kaggle hasta una predicción en vivo: exploración y limpieza, codificación y escalado de variables, entrenamiento y comparación de varios clasificadores, selección del mejor por métricas, y persistencia para que la app de Streamlit lo sirva.

Características Principales

Dataset

  • Fuente: Kaggle — Credit_train.csv
  • Variables clave: puntaje crediticio, ingreso anual, deuda mensual, años de historial crediticio, número de cuentas abiertas, saldo de crédito actual, crédito máximo abierto, propósito del préstamo y estado de propiedad de vivienda
  • Objetivo: si el préstamo es pagado por completo o incumplido

Modelos y Resultados

Se entrenaron seis clasificadores sobre los mismos datos procesados y se compararon en accuracy, F1, AUC-ROC y tiempo de inferencia. XGBRFClassifier ganó por el equilibrio entre calidad predictiva y velocidad.

ModeloRol
XGBRFClassifierMejor — combina gradient boosting + random forest
Random ForestComparado
Logistic RegressionComparado
Gradient BoostingComparado
AdaBoostComparado
SGDClassifierComparado

Mejor modelo — XGBRFClassifier:

  • Accuracy: 82.7%
  • F1 Score: 0.89
  • AUC-ROC: 0.64
  • Tiempo de inferencia: 32.3 ms

Variables más influyentes: puntaje crediticio, ingreso anual y años de historial crediticio.

Image

Destacados Técnicos

Elección de modelo guiada por métricas, no por un solo número

El ganador no se eligió solo por accuracy — se compararon seis modelos en accuracy, F1, AUC-ROC y tiempo de inferencia, y XGBRFClassifier se seleccionó por dar el mejor equilibrio, no por liderar una métrica aislada.

La velocidad de inferencia como métrica de primera clase

Con 32.3 ms por predicción, el modelo es lo bastante rápido para decisiones de crédito interactivas y en tiempo real — una propiedad que importa tanto como el accuracy cuando el resultado alimenta un flujo de aprobación en vivo.

Preprocesamiento reproducible y persistencia del modelo

El manejo de valores faltantes, la eliminación de duplicados, la codificación de etiquetas, StandardScaler y la división train/validación se capturan una vez y se guardan como un dataset procesado más un modelo persistido (joblib), de modo que la app de Streamlit carga exactamente el modelo que se evaluó.

Estructura del Proyecto

loan-status-prediction/
├── loan-status-prediction.ipynb   # EDA, preprocesamiento, entrenamiento, comparación de modelos
├── app.py                         # UI de predicción en tiempo real (Streamlit)
├── XGBRFClassifier.pkl            # Mejor modelo persistido (joblib)
├── train_data_processed.csv       # Datos de entrenamiento limpios / codificados
├── requirements.txt               # Dependencias de Python
└── .devcontainer/                 # Entorno de desarrollo reproducible

Impacto y Escalabilidad

  • Señal de riesgo crediticio en tiempo real: predicción instantánea pagado vs. incumplido a partir de las variables del solicitante
  • Factores interpretables: expone las variables que más influyen en la decisión (puntaje crediticio, ingreso, historial), no solo un puntaje de caja negra
  • Consciente de la velocidad: 32 ms de inferencia permiten decisiones interactivas al momento de la aprobación
  • Reproducible y desplegable: un modelo persistido + datos procesados + Streamlit Cloud hacen que cualquiera pueda correr la demo exacta

Notas

Construido en Python con scikit-learn y XGBoost, desplegado en Streamlit Cloud. El código es público en GitHub. Prueba la app en vivo en loan-status-prediction-unal.streamlit.app.

🖼️ IMAGE PLACEHOLDER — UI de la app en Streamlit: el formulario de solicitud y el resultado de la predicción