Coder Social home page Coder Social logo

pi_ml_ops's Introduction

Steam

Machine Learning Operations (MLOps): Sistema de Recomendación de Videojuegos para Usuarios de Steam

Descripción del Proyecto

En este proyecto, trabajamos con tres conjuntos de datos en formato JSON, los cuales presentan una estructura anidada. Debemos extraer información para la creación de un sistema de recomendación a través de un proceso de ETL (Extracción, Transformación y Carga).

Los conjuntos de datos son los siguientes:

  1. australian_user_reviews.json

  2. australian_user_items.json

  3. output_steam_games.json

La información detallada sobre el contenido de cada conjunto se encuentra especificada en el diccionario de datos, disponible en el archivo Excel: Datsets/Diccionario de Datos STEAM.xlsx

Debido a restricciones de espacio en el repositorio, el archivo australian_users_items ha sido comprimido utilizando la herramienta Gzip.

Objetivo

Desarrollar un sistema de recomendación de juegos utilizando los conjuntos de datos proporcionados. Abordaremos todas las fases clave de Data Engineering desde la preparación de datos (ETL) hasta el análisis exploratorio y la implementación del modelo.

Proceso del Proyecto


1.- ETL (Extracción, Transformación y Carga):

Esta primera etapa se centra en extraer los archivos JSON y convertirlos a archivos CSV. Se realiza la desanidación de las columnas, manteniendo solo aquellas necesarias para el sistema de recomendación y los endpoints propuestos. También se lleva a cabo el tratamiento de valores faltantes con el objetivo de dejar los datos limpios y preparados para su uso en los endpoints y el sistema de recomendación.

El proceso detallado se describe en el proceso de ETL. Como resultado de aplicar el proceso de ETL, se generaron los siguientes archivos CSV: steam_games, user_reviews y user_items.

Cabe destacar que el archivo de user_items se comprimió con la herramienta GZIP debido a limitaciones de espacio.

2.-Feature Engineering:

Se ha creado la columna 'sentiment_analysis' aplicando análisis de sentimiento a las reseñas de los usuarios mediante la librería NLTK. La asignación de valores es la siguiente: '0' si es una reseña negativa, '1' si es neutral y '2' si es positiva. Esta nueva columna se ha introducido para reemplazar la columna original 'user_reviews.review', facilitando así el trabajo de los modelos de machine learning y el análisis de datos.

Para obtener más detalles sobre este proceso se puede consultar la sección correspondiente en el notebook de análisis de sentimiento.

3.- Funciones de consultas

  • def PlayTimeGenre( genero : str ): Debe devolver año con más horas jugadas para dicho género.Notebook

Ejemplo de retorno: {"Año de lanzamiento con más horas jugadas para Género X" : 2013}.

  • def UserForGenre( genero : str ): Debe devolver el usuario que acumula más horas jugadas para el género dado y una lista de la acumulación de horas jugadas por año.Notebook

Ejemplo de retorno: {"Usuario con más horas jugadas para Género X" : us213ndjss09sdf, "Horas jugadas":[{Año: 2013, Horas: 203}, {Año: 2012, Horas: 100}, {Año: 2011, Horas: 23}]}.

  • def UsersRecommend( año : int ): Devuelve el top 3 de juegos más recomendados por usuarios para el año dado. (reviews.recommend = True y comentarios positivos/neutrales)Notebook

Ejemplo de retorno: [{"Puesto 1" : X}, {"Puesto 2" : Y},{"Puesto 3" : Z}].

  • def UsersWorstDeveloper( año : int ): Devuelve el top 3 de desarrolladoras con juegos menos recomendados por usuarios para el año dado. (reviews.recommend = False y comentarios negativos)Notebook

Ejemplo de retorno: [{"Puesto 1" : X}, {"Puesto 2" : Y},{"Puesto 3" : Z}].

  • def sentiment_analysis( empresa desarrolladora : str ): Según la empresa desarrolladora, se devuelve un diccionario con el nombre de la desarrolladora como llave y una lista con la cantidad total de registros de reseñas de usuarios que se encuentren categorizados con un análisis de sentimiento como valor.Notebook

Ejemplo de retorno: {'Valve' : [Negative = 182, Neutral = 120, Positive = 278]}

4.- API

Se implementó una API utilizando FastApi para exponer las funciones de consulta como endpoints y tambien se usó Render. El deploy de la API se encuentra en: https://api-steam-games-me3w.onrender.com/docs. El código para la API se encuentra en el archivo main.py.

5.-EDA

Realicé el análisis exploratorio de datos (EDA). Durante este proceso, se exploraron y examinaron los conjuntos de datos. Notebook del Análisis Exploratorio de Datos (EDA).

6.-. Sistema de recomendación

Crear el sistema de recomendación con dos enfoques distintos:

  • Sistema de Recomendación ítem-ítem: Modelo que recomienda juegos similares en función de un juego dado. Se utilizó la similitud del coseno como métrica principal para establecer la relación entre juegos.Notebook

  • Sistema de Recomendación usuario-ítem: Modelo que recomienda juegos a un usuario basándose en las preferencias de otros usuarios similares.Notebook

6.- Video Explicativo

Creé un video explicativo del proyecto y detallando el uso de los endpoints desplegados en la plataforma Render. Video

Estructura del Repositorio

1. /Notebooks: Contiene los Jupyter Notebooks donde se realizaron todas las operaciones de este proyecto. Cada notebook explica paso a paso cómo se lograron los resultados.

2. /Datsets: Almacena los datasets utilizados.

  • Archivos_API: Contiene los datasets consumidos por la API.
  • CSV: Contiene los archivos después de haber realizado el ETL.
  • Modelo_ML: Contiene los archivos consumidos por la API para hacer el sistema de recomendación.

pi_ml_ops's People

Contributors

kgsanchezm avatar

Stargazers

Johanna Rangel avatar

Watchers

 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.