El presente caso es mi Proyecto Individual 01 de mi carrera de Data Science para la etapa de LABS de la plataforma educativa HENRY, en el cual implementaré, de forma práctica, sobre un caso real la mayoría de las habilidades obtenidas durante la etapa de aprendizaje del BOOTCAMP.
En este proyecto debo fungir el rol de Data Scientist de STEAM, la cual es una plataforma multinacional de videojuegos y me solicitó que me encargara de crear un sistema de recomendación de videojuegos para usuarios. Este objetivo lo logré a través de la implementación de 4 etapas bien definidas, las cuales detallo a continuación:
En esta etapa de Ingeniería de Datos, se realizó un proceso de ETL, extracción, transformación y carga de datos, donde se recibieron 3 archivos JSON comprimidos en formato GZ con datos de compra de los videojuegos, la interacción de los usuarios y las evaluaciones de ellos. La primera transformación se hizo manual, decir se usó el utilitario Winrar para descomprimir cada uno de los archivos fuente y luego se cambiaron sus nombres:
Al final de esta etapa, se crea un dataset en formato CSV que servirá para trabajar en la siguiente etapa y se guardarán en la carpeta: Data2_ETL_out.
En esta etapa de Análisis Exploratorio de Datos, se realizaron la conversión y completado de los datos, también se verificaron y eliminaron los datos nulos, duplicados, outliers y el cambio en el formato de algunos datos para posteriormente realizar un análisis gráfico sobre estos datos depurados. Al igual que en la etapa anterior, al final se crea un dataset en formato CSV que servirá para trabajar en la siguiente etapa y se guardarán en la carpeta: Data3_EDA_out.
Después de haber realizado eficaz y profesionalmente las etapas anteriores, los datos ya se encuentran preparados para realizar el entrenamiento del modelo establecido, para lo cual se diseñan e implementan las respectivas funciones. Al igual que en la etapa anterior, al final se crea un dataset en formato CSV que servirá eficientemente en la ejecución de la API y se guardarán en la carpeta: Data4_FuncReturn2API.
Una vez completadas las 3 etapas anteriores, los datos se encuentran optimizados en cuanto a tamaño para que puedan ser consultados sin problemas mediante el web framework FastAPI en la web service de RENDER. Para lograr esto, se desarrolló el código principal en el módulo main.py en el cual se encuentran las siguientes funciones de igual nombre que en el Jupyter Notebook "3_ML_Function", pero con un algoritmo totalmente diferente y simple:
def PlayTimeGenre( genero : str ): Debe devolver año con mas horas jugadas para dicho género.
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.
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)
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)
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.
def recomendacion_usuario( id de usuario ): Ingresando el id de un usuario, deberíamos recibir una lista con 5 juegos recomendados para dicho usuario.
Render Link : https://steamcase.onrender.com/docs
En el siguiente link se encuentra el video que explica tanto el funcionamiento del web service como las 3 etapas anteriores del proyecto en forma resumida.
Youtube Link: https://youtu.be/gOJ8loOsoPI
Asegúrate de tener instaladas las siguientes bibliotecas antes de ejecutar el código:
- FastAPI
- pandas
- uvicorn
- Visual Studio Code: editor de código
- Python: lenguaje de programación (versión 3.11)
- GitHub: repositorio del proyecto y fuente para la API
- GitBash: terminal con Linux-core
- FastAPI: web framework
- Render: servicio en la nube
- Winrar: utilitario para comprimir y descomprimir archivos gz y rar