Skip to content

Proyecto Individual que desarrolla la limpieza y análisis de un dataset de películas, para crear un modelo de ML de recomendación de peliculas.

Notifications You must be signed in to change notification settings

MBernal6/MLOps-Proyecto01

Repository files navigation

Proyecto: Machine Learning Operations (MLOps)

El presente proyecto consiste en la creación un modelo de recomendación de peliculas utilizando técnicas de machine learning. Para este proposito se realizo un proceso secuencial de ETL(Extract, Transform y Load), EDA(Exploratory Data Analysis), modelamiento y finalmente el deployment. A continuación se brinda una guia y descripción de los procesos mencionados.

Comenzando 🚀

Estas instrucciones te permitirán obtener una copia del proyecto en funcionamiento para propósitos de desarrollo y pruebas.

Pre-requisitos 📋

Para instalar las dependencias necesarias puedes ejecutar el siguiente codigo en tu consola de comandos una vez tengas el repositorio localmente:

pip install -r requirements.txt

Instalación 🔧

  1. Clona este repositorio con Git o manualmente.
  2. Instala Python y las dependencias necesarias definidas en el archivo requirements.txt
  3. El IDE con el cual se desarrollo el proyecto fue Visual Studio Code, se recomienda el mismo.
  4. Ejecuta el archivo main.py para ver el proyecto en funcionamiento localmente.

Por ultimo, mira Deployment para conocer como desplegar el proyecto y para acceder al link del proyecto.

Construcción del proyecto ⚙️

En esta parte se detalla como esta fue elaborado el proyecto y como se encuentra estructurado

ETL (Extract, Transform and Load) 🔧

El proceso ETL consistió en la limpieza y mejora de una base de datos de peliculas que se encuentran el archivo comprimido Datasets.rar con el fin de que pueda ser utilizada en el modelamiento. La totalidad del proceso se encuentra en el notebook ETL.ipynb a continuación se detalla las transformaciones principales para lograr el MVP(Producto Mínmo Viable:)

  1. Selección y carga del dataset: La exploración inicial de los datasets se realizó en el notebook Borrador.ipynb, una vez seleccionado se procedio a su transformación.
  2. Las transformaciones realizadas fueron las siguientes:
  • Eliminación de las columnas: video,imdb_id,adult,original_title,poster_path y homepage.
  • Cambio de los valores nulos de las columnas Revenue y Budget por el valor 0.
  • Eliminación de los valores nulos del campo Release Date.
  • Cambio de formato del campo Release Date a AAAA-mm-dd y extracción del año en una nueva columna.
  • Creación de la columna Return.
  • Desanidación de los valores de tipo diccionario.
  • Extracción del nombre del director del dataset credits.csv
  • Unión de los datasets y eliminación de columnas anidadas.
  1. Por último, con el dataframe trabajado se generó un nuevo archivo movies_final.csv para ser explorado a profundidad y servir como input para el modelo de recomendación de peliculas.

EDA (Exploratory Data Analysis) 🔎

Antes del modelamiento es necesario entender los datos obtenidos, con dicho fin se realizo un proceso de exploración. El objetivo principal de este análisis es identificar patrones, tendencias y variables relevantes que servirán como base para la construcción de un modelo preciso de Machine Learning, destinado a la recomendación de películas. A través del EDA, buscaremos comprender en profundidad la naturaleza de los datos, detectar posibles relaciones entre variables clave y descubrir características significativas. Los principales puntos desarrollados se encuentran en el notebook EDA.ipynb, los cuales se resumen de la siguiente manera:

  1. Exploración inicial del dataset: Donde se determinó que columnas o variables deberían tener una análisis más profundo, se conocio a detalle el tipo de datos y la cantidad de valores nulos.
  2. Análisis univariable: Se exploraron las variables 'title', 'géneros', 'collection', 'overview', 'año de lanzamiento' y un resumen estadistico de las variables númericas.

  1. Análisis bivariado y multivariable: Se realizó una matriz de correlaciones y gráficos de dispersión para determinar el comportamiento de las variables númericas.

Como conclusión del EDA se decidieron tomar las variables title, género, overview y promedio de puntaje para crear el modelo de recomendaciones.

Modelamiento ⌨️

El modelo de recomendación utilizó el algoritmo de similitud de cosenos para determinar la medida de similitud de las variables y de este ponderar las 5 principales recomendaciones. La idea original era considerar el promedio de votos de cada pelicula para calcular la similitud de coseno, sin embargo el procesamiento requeria mayores recursos, siendo especificos una mayor cantidad de memoria RAM disponible. Es por ello que el modelo final contemplo las siguientes variables: Title, género y corporaciones. El desarrollo completo se encuentra detallado en Modelo_Recomendacion.ipynb

Deployment 📦

Desarrollo de API

La API fue desarrollado con FastAPI, y contiene los siguientes funcionalidades:

  1. Búsqueda de peliculas por idioma.
  2. Duración y año de lanzamiento de cada pelicula.
  3. Búsqueda de peliculas por franquicia.
  4. Retorno de peliculas producidas en un determinado pais.
  5. Búsqueda de productoras exitosas.
  6. Búsqueda de directores existosos y peliculas realizadas.
  7. Recomendación de 5 peliculas por pelicula solicitada.

Despliegue

Para el deployment del proyecto se utilizó Render y para ello se generó localmente el archivo con las dependencias necesarias requirements.txt

  1. Render se conectó a este repositorio de github y permite visualizar el proyecto en el siguiente link: MLOps-Mauricio Bernal

Construido con 🛠️

Las herramientas para la creación del proyecto fueron las siguientes:

  • Visual Studio Code - IDE.
  • Python - Lenguaje de programación.
  • Pandas - Libreria para análisis de datos.
  • Scikit-Learn - Libreria de Machine Learning.
  • FastAPI - Marco web moderno para crear API RESTful en Python.
  • Render - Servicio de nube para creación y despliegue de aplicaciones.

Autor ✒️

  • Mauricio Bernal - Proyecto Individual N°01-Labs HENRY - MBernal6
  • Puedes contactarme a través de LinkedIn

Expresiones de Gratitud 🎁

  • Agradecimientos al bootcamp HENRY.

⌨️ por MBernal6

About

Proyecto Individual que desarrolla la limpieza y análisis de un dataset de películas, para crear un modelo de ML de recomendación de peliculas.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published