流媒体公司数据集
收藏Proyecto Individual Nº1: Machine Learning Operations (MLOps)
Introducción
Este proyecto se enfoca en el desarrollo de un sistema de recomendación para un servicio de streaming, abarcando desde el tratamiento y recolección de datos hasta el entrenamiento y despliegue del modelo.
Contexto
El proyecto se desarrolla en una start-up que provee servicios de agregación de plataformas de streaming. El objetivo es crear un sistema de recomendación que funcione bien y esté listo para ser desplegado en un entorno de producción.
Problemas a Resolver
- Datos desordenados: Los datos están anidados y requieren transformación.
- Falta de madurez en los datos: Existen valores nulos y formatos inconsistentes.
- Creación de un MVP: Se debe entregar un Producto Mínimo Viable (MVP) en un corto plazo.
Propuesta de Trabajo
1. Transformaciones de Datos
- Desanidamiento de datos: Columnas como
belongs_to_collectionyproduction_companiesfueron desanidadas. - Manejo de valores nulos: Valores nulos en
revenueybudgetfueron reemplazados por0. Valores nulos enrelease_datefueron eliminados. - Formato de fechas: Las fechas en
release_datefueron convertidas al formatoAAAA-mm-dd, y se creó una nueva columnarelease_year. - Retorno de inversión: Se añadió una columna
returnque calcula el retorno de inversión. - Eliminación de columnas innecesarias: Se eliminaron columnas como
video,imdb_id,adult,original_title,poster_path, yhomepage.
2. Desarrollo de la API
La API fue desarrollada utilizando FastAPI y cuenta con los siguientes endpoints:
/cantidad_filmaciones_mes/{mes}: Devuelve la cantidad de películas estrenadas en un mes dado./cantidad_filmaciones_dia/{dia}: Devuelve la cantidad de películas estrenadas en un día específico./score_titulo/{titulo}: Devuelve el título, año de estreno y el score de la película solicitada./votos_titulo/{titulo}: Devuelve el título, cantidad de votos y el promedio de votaciones para una película./get_actor/{nombre_actor}: Devuelve el éxito de un actor medido a través del retorno, cantidad de películas y el promedio de retorno./get_director/{nombre_director}: Devuelve el éxito de un director, el nombre de cada película, la fecha de lanzamiento, el retorno individual, costo y ganancia de la misma.
3. Despliegue
La API fue desplegada utilizando Render (o la plataforma elegida), permitiendo que sea accesible desde la web para su consumo.
4. Análisis Exploratorio de Datos (EDA)
Se realizó un análisis exploratorio de los datos para investigar relaciones entre las variables, detectar outliers y patrones interesantes.
5. Sistema de Recomendación
Se desarrolló un sistema de recomendación que, dado el título de una película, devuelve una lista de 5 películas similares basadas en la similitud de puntuación.
/recomendacion/{titulo}: Devuelve una lista de 5 películas similares al título ingresado.
6. Video Demostrativo
Se creó un video demostrativo de menos de 7 minutos que muestra el funcionamiento de las consultas requeridas en la API y una breve explicación del modelo de Machine Learning utilizado para el sistema de recomendación.
Estructura del Proyecto
/project │ ├── /data/ # Contiene los datasets originales │ ├── movies_dataset.csv │ └── credits.csv │ ├── /notebooks/ # Notebooks para limpieza de datos y EDA │ ├── data_cleaning.ipynb │ └── eda.ipynb │ ├── /app/ # Código de la API │ ├── main.py │ ├── models.py │ └── requirements.txt │ ├── /models/ # Modelos entrenados │ └── recommendation_model.pkl │ ├── README.md # Este archivo ├── video_demo.mp4 # Video demostrativo del proyecto └── .gitignore # Archivos y directorios a ignorar por Git
Requisitos
- Python 3.x
- FastAPI
- pandas
- scikit-learn
Instrucciones para Ejecutar
- Tener repositorio listo para el Render
- Instala las dependencias con
pip install -r requirements.txt. - Ejecuta la API con el comando
uvicorn app.main:app --reload. - Accede a
http://127.0.0.1:8000para probar los endpoints.




