Git Product home page Git Product logo

primer_proyecto_individual---henry--mlops-.'s Introduction

PROYECTO INDIVIDUAL Nº1 -Machine Learning Operations (MLOps)

En el presente trabajo se utilizó un dataset proporcionado por Henry dentro del bootcamp de Data Science, como parte del módulo de proyectos prácticos individuales.

El dataset consta de 45,466 registros estructurados en 24 columnas relacionadas con información filmográfica de películas, como su nombre, descripción, puntuación, género, productora, entre otras.

Dataset movies

Objetivo

El objetivo de este proyecto es tomar la base de datos proporcionada y pasarla por diferentes etapas de limpieza y extracción necesarias para disponibilizar los datos en una API y generar un modelo de recomendación de películas basado en Machine Learning.

Para la ejecución del proyecto, se realizaron las siguientes transformaciones en la base de datos:

Transformaciones

  • Desanidar los datos que se encuentran en formato de listas de diccionarios para poder unirlos nuevamente a la base de datos de manera separada.
  • Rellenar con 0 los registros con valores nulos en las columnas "revenue" y "budget".
  • Eliminar los registros que contengan valores nulos en la columna "release date".
  • Asegurarse de que la columna "release_year" esté en formato AAAA-MM-DD y generar una nueva columna que contenga solo el año de estreno.
  • Crear una nueva columna "return" que extraiga el retorno de inversión de cada registro, dividiendo la columna "revenue" entre la columna "budget".
  • Eliminar las columnas innecesarias para el desarrollo de la API, como "video", "imdb_id", "adult", "original_title", "vote_count", "poster_path" y "homepage".

Desarrollo de la API

  • Crear una función que muestre la cantidad de películas lanzadas por mes.
  • Crear una función que muestre la cantidad de películas lanzadas por día.
  • Crear una función que muestre la cantidad de películas de una franquicia, junto con sus ganancias totales y promedio.
  • Crear una función que muestre la cantidad de películas lanzadas por país.
  • Crear una función que muestre la cantidad de películas lanzadas por productora.
  • Crear una función que muestre los ingresos, retorno de inversión, ganancia y año de lanzamiento de una película en particular.
  • Disponibilizar los datos de las funciones a través del framework FastAPI.

Desarrollo de EDA

  • Explorar los datos limpios para establecer correlaciones entre las variables.

Sistema de recomendacion

  • Generar un sistema de recomendación de películas basado en Machine Learning.
  • Disponibilizar el sistema de recomendación a través del framework FastAPI.

Estructura del repositorio

En este repositorio, encontrarás los siguientes archivos:

  • _ pycache_: Carpeta donde se almacenan los datos cache de Python para mejorar su proceso de ejecución.
  • github_files: Carpeta que almacena los archivos complementarios, como el diccionario de datos e imágenes.
  • .gitattributes: Archivo de configuración utilizado en Git para especificar cómo se deben tratar ciertos archivos y tipos de archivos en el repositorio.
  • main.py: Archivo donde se almacenan las funciones que se ejecutarán en la API.
  • movies_machine_learning.csv: Base de datos suministrada para realizar el proyecto.
  • movies_dataset - movies_dataset.csv: Base de datos filtrada para la optimización del modelo de machine learning.
  • movies_ok_1.csv: Base de datos filtrada para alimentar las funciones de API no relacionadas con el sistema de recomendación con machine learning.
  • requirements.txt: Librerías necesarias para la adecuada ejecución de los documentos.
  • API_proyecto_1_Final.ipynb: Documento en formato notebook donde se encuentra el código de limpieza de la base de datos y el desarrollo de las funciones incluidas en la API.
  • EDA_&_ML - Final.ipynb: Documento en formato notebook donde se encuentra el código en el que se desarrolla el EDA y se realizan las transformaciones pertinentes para el desarrollo del sistema de recomendación de películas.

Limpieza de datos

Durante el proceso de limpieza de datos, se llevaron a cabo las siguientes acciones:

  • Se identificaron los valores sin significado para el análisis y se eliminaron.
  • Se desanidaron las columnas que contenían valores en formato de listas de diccionarios.
  • Se identificaron y eliminaron registros duplicados.
  • Se identificaron y eliminaron registros con valores nulos, considerando la relevancia de los nulos por columna.
  • Se identificaron registros con valores faltantes, con la excepción de la columna "belongs_to_collection" debido a su alta cantidad de registros faltantes.
  • Se realizaron identificaciones de outliers, pero no se procedió a su eliminación debido a que estos outliers tenían sentido en el contexto histórico de los datos.

Desarrollo del API

Una vez finalizada la limpieza de datos, se descargó la base de datos con las transformaciones realizadas, la cual se utilizó para generar las funciones de consulta que serían empleadas en la API. Dichas funciones se incluyeron en el archivo "main.py" para su uso en la API.

Base de datos transformada para las funciones de consulta

Además, se desarrolló un archivo separado para llevar a cabo el EDA (Exploratory Data Analysis). Durante este análisis se generaron gráficos para explorar las variables y sus relaciones. Posteriormente, se realizó una limpieza adicional en la base de datos, conservando únicamente las variables relevantes para el desarrollo del modelo de recomendación. Debido al tamaño extenso de la base de datos y las limitaciones computacionales, se seleccionó una muestra de 10,000 registros para el desarrollo del modelo.

Una vez se transformaron los datos y se prepararon para alimentar el modelo de recomendación, se descargó la nueva base de datos y se generó una función que utiliza dicha base de datos y el modelo desarrollado utilizando el algoritmo de vecinos cercanos. Este algoritmo ofreció mejores resultados para la implementación en la API.

Base de datos transformada para la función de recomendación

Archivo "main.py"

Modelo de recomendación

Se probaron dos algoritmos proporcionados por la librería sklearn para el desarrollo del modelo de recomendación. El primer algoritmo utilizado fue la similitud del coseno, el cual ofreció resultados satisfactorios. Sin embargo, surgieron dificultades al implementar este modelo en la API. Por lo tanto, se optó por probar un segundo algoritmo, el de vecinos cercanos. Este algoritmo presentó un rendimiento similar al primero, pero resultó más adecuado para la implementación en la API.

primer_proyecto_individual---henry--mlops-.'s People

Contributors

johanrrot avatar

Watchers

Kostas Georgiou avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.