- Acceso a la api a traves de render
- Estructura de el proyecto
- posibles consultas a la api
- Como ejecutar la api de forma local
- Mi Contacto
en este proyecto que tiene como tematica steam() debere tomar tanto el papel de data enginer y data scientist. asi teniendo que realizar el proceso de extraccion, transformacion y carga de los datos(ETL) , analisis exploratorio de datos(EDA) , y generar un modelo de aprendizaje automatico para la recomendacion de juegos para este proyecto se me pide un MVP(minimo producto viable) generar una API que pueda ser consumida segun los criterios de API REST o RESTful desde cualquier dispositivo conectado a internet y que cuente con varias consultas.
LINK de la api deployada en render
en esta seccion hago un resumen de las carpetas y archivos (sus propositos) en este repositorio de github:
|-- PI_ML_Ops/ # Carpeta raíz del repositorio de GitHub
|-- Datasets/ # Almacena los archivos JSON comprimidos con los datos(tambien posee cualquier otro archivo resultante a partir de estos que no sea directamente utilizado por la api)
|-- steam_games.json.gz
|-- user_reviews.json.gz
|-- user_items.json.gz
|-- app/ # Contiene los archivos esenciales para la API
|-- main.py # Archivo principal de la aplicación FastAPI
|-- funciones/ # Módulo con funciones auxiliares para la API
|-- funciones.py # Funciones de manipulación y procesamiento de datos
|-- modelo.py # Implementación del modelo de machine learning
|-- df_sentimientos.parquet # Archivo de datos parquet utilizado para la respuesta de la api a la consulta de (sentiment_analysis)
|-- df_recommend.parquet # Archivo de datos parquet utilizado para la respuesta de la api a las consultas de (UsersRecommend y UsersWorstDeveloper)
|-- df_genero.parquet # Archivo de datos parquet utilizado para la respuesta de la api a las consultas de (PlayTimeGenre y UserForGenre)
|-- df_modelo.parquet # Archivo de datos parquet utilizado para la respuesta de la api a la recommendacion de juegos (recomendacion_juego)
|-- requirements.txt # Archivo de dependencias del proyecto (este posee todas las librerias necesarias para ejecutar la api)
|-- venv/ # Entorno virtual para pruebas locales(tambien fue utilizado para generar el requirements.txt)
|-- ETL_&_EDA/ # Carpeta que contiene el proceso de manipulación de datos
|-- ETL.ipynb # Jupyter Notebook para el proceso ETL(extraccion, transformacion y carga de datos)
|-- EDA.ipynb # Jupyter Notebook para el Análisis Exploratorio de Datos
|-- ETL_functions.ipynb # Jupyter Notebook con funciones específicas para el ETL
- PlayTimeGenre recibe un genero de juego(texto) y devuelve el año con más horas jugadas para el género especificado. Ejemplo de retorno: {"Año de lanzamiento con más horas jugadas para Género X" : 2013}
-
UsersRecommend recibe un año(numero) y devuelve el top 3 de juegos MÁS recomendados por usuarios para el año dado (mayor cantidad de recomendaciones y comentarios neutrales y positivos). Ejemplo de retorno: [{"Puesto 1" : X}, {"Puesto 2" : Y},{"Puesto 3" : Z}]
-
UsersWorstDeveloper recibe un año(numero) y devuelve el top 3 de desarrolladoras con mayor cantidad de comentarios negativos y NO recomendaciones Ejemplo de retorno: [{"Puesto 1" : X}, {"Puesto 2" : Y},{"Puesto 3" : Z}]
-
sentiment_analysis recibe una empresa desarrolladora(texto) y devuelve un diccionario con el nombre de la desarrolladora como llave y una lista con la cantidad total de comentarios negativos ,neutrales y positivos. Ejemplo de retorno: {'Valve' : [Negative = 182, Neutral = 120, Positive = 278]}
-
recomendacion_juego recibe el id de un juego(numero) y devuelve una lista con 5 juegos recomendados similares al ingresado.
en caso de querer ejecutar esta api de forma local una vez forkeado el repositorio(windows):
se debe abrir una consola de comandos en la ruta dentro de la carpeta PI_ML_OPS:
./venv/Scripts/Activate
con esto debera salir(venv) al principio de la ruta esto significa que el entorno virtual se encuentra activo
ahora debemos entrar dentro de la carpeta app que es aquella que tiene la api en si
cd app
una vez dentro de el directorio app
uvicorn main:app --reload
con esto ya tendriamos nuestra api corriendo de forma local en el el puerto 8000 y podemos acceder a ella a travez de localhost:8000
en caso de detener el funcionamiento de la api
ctrl + c
en caso de querer desactivar el entorno virtual
deactivate

