En este repositorio se realiza un análisis exploratorio de datos (EDA) de la situación de los alquileres en la ciudad de Madrid. Se investiga la situación general del mercado en la ciudad y se analizan los precios de las publicaciones publicadas en la web.
Posteriormente, se construyen varios modelos de machine learning para intentar predecir el precio diario de un alquiler en la ciudad, registrando los parámetros, las métricas y los modelos con MLflow.
A partir de aquí se siguen dos estrategias de despliegue:
-
En una de ellas se crea una imagen de
Dockerdonde se sirve uno de los modelos entrenados en una aplicación web embebida deStreamlity se despliega dicha imagen mediante un despliegue y un servicio en unclusterlocal deKubernetesconMinikube. -
En otra de ellas se crea como
backendunaAPIconFastAPIdonde se sirve el modelo y comofrontenduna aplicación web conStreamlitque realiza peticionesPOSTa laAPI, obteniendo el resultado de los precios pronosticados de vuelta. Se crea una imagen deDockertanto para elbackendcomo elfrontendy se despliegan ambas imágenes mediante contenedores en un despliegue deKubernetes, con un contenedor de cada una de las imágenes en un mismopod, y exponiendo tanto laAPIcomo la aplicación web a través de un servicio de Kubernetes que tiene dos puertos expuestos (uno para cada contenedor).
-
app: Directorio donde se recopilan los archivos para crear la
APIy/o la aplicación web.- embedded: Conjunto de archivos utilizados para la realización de la aplicación embebida de
Streamlitcon el modelo descikit-learnguardado conMLflow. - fullstack: Recopilación de archivos usados para la construcción de la parte
backendyfrontendpara desplegar el modelo conFastAPIyStreamlitconjuntamente.
- embedded: Conjunto de archivos utilizados para la realización de la aplicación embebida de
-
data: Conjunto de archivos utilizados para la realización del análisis exploratorio y la construcción del modelo.
-
deployment: Carpeta donde se almacenan los archivos
.YAMLpara la creación del despliegue y servicio deKubernetes, tanto de forma embebida como de forma conjunta con los servicios defrontendybackend, así como un tutorial sobre como realizar la contenerización de la aplicación web en una imagen deDockery el posterior despliegue en producción en unclusterdeKubernetes. -
img: Carpeta donde se recopilan un par de imágenes de demostración del proyecto.
-
mlflow: Directorio donde se recopilan las carpetas por usar
MLflow:- mlruns: Directorio donde se recopilan los parámetros y métricas de cada ejecución realizada en el experimento
MLflowdel proyecto. - mlartifacts: Carpeta donde se recopilan todos los
artifactsgenerados en las distintas ejecuciones deMLflow, es decir, los modelos, sus metadatos, las librerías requeridas para la ejecución de los mismos, etc.
- mlruns: Directorio donde se recopilan los parámetros y métricas de cada ejecución realizada en el experimento
-
Informe.pdf: Informe del análisis exploratorio, de las métricas del modelo y de la propuesta de despliegue.
-
train.ipynb:
Notebookrealizado en Python con el código del análisis exploratorio de datos y de los modelos entrenados para la predicción de los precios diarios, además de los registros de los modelos conMLflow.