Skip to content

BrandonLCC/FIFA_ML_Kedro

Repository files navigation

Proyecto de análisis de Jugadores FIFA 20-23

Python Kedro EA

image.png

Colaboradores: Benjamin Andres Oviedo y Brandon.

Docente: Giocrisrai Godoy Bonillo.

Introducción

Descripción del caso *

EA Sports FIFA, es una saga de videojuegos de fútbol publicada anualmente por Electronic Arts bajo el sello de EA Sports, en colaboración con la FIFA.

Necesidad del negocio

La empresa busca replicar la experiencia del fútbol real, tanto en la gestión de equipos como en la competencia dentro del campo, ofreciendo realismo gracias a sus licencias oficiales de equipos, jugadores y ligas de todo el mundo. Con la reciente transición a EA Sports FC, el objetivo principal sigue siendo simular el deporte del fútbol y permitir a los jugadores disputar partidos o gestionar un club en diversos modos de juego.

Datos obtenidos

El dataset (conjunto de datos) obtenidos para el proyecto es proveniente de kaggle en la que se obtuvieron los datasets de FIFA20 hasta FIFA23. En este proyecto se descartaron el uso de los datos de años anteriores al FIFA20.

Acerca de los datos

Contiene más de 17.000 registros con atributos demográficos, características físicas, estadísticas de juego, detalles contractuales y afiliaciones a clubes.

Kaggle-FIFA: Link

Objetivos

Objetivo del proyecto

El objetivo principal del proyecto es desarrollar e integrar en un sistema funcionalidades basadas en modelos de predicción, aplicando técnicas de machine learning, con el fin de generar análisis y predicciones automáticas sobre el desempeño de los jugadores de FIFA en función de sus características, contribuyendo a la simulación del fútbol real y al modelado del rendimiento de los jugadores en distintos escenarios de juego, alineándose con la necesidad de la empresa de ofrecer una experiencia realista y basada en datos.

Objetivos de Machine Learning *

Aprendizaje semisupervisado *

Mejorar los modelos de supervizados utiliando aprendizaje no supervizado para obtener resultados mas preciso para el negocio..


Metodología CRISP-DM

La metodología CRISP-DM (Cross-Industry Standard Process for Data Mining) es un modelo estandarizado para proyectos de minería de datos y machine learning.
Fue desarrollada a finales de los años 90 por empresas como SPSS, Daimler AG y NCR, y proporciona una guía flexible y no propietaria, aplicable a diferentes industrias y tipos de problemas.

CRISP-DM es ideal para proyectos de Data Science e Inteligencia Artificial

  • Modelado de predicción
  • Detección de anomalías
  • Sistemas de recomendación

Fases de CRISP-DM

Se aplican las seis fases de CRISP-DM. A continuación se detallan cada fase y las tareas realizadas:


1. Comprensión del negocio

  • Objetivo: Identificar y entender las necesidades del cliente.
  • Tareas principales:
    • Definir los objetivos del proyecto
    • Evaluar el contexto empresarial y los recursos asignados
    • Analizar riesgos, alcances y costos

2. Comprensión de los datos

  • Objetivo: Estudiar los datos en detalle y explorarlos mediante tablas y gráficos.
  • Tareas principales:
    • Recopilación de datos
    • Descripción de resultados
    • Identificación de anomalías
    • Exploración inicial
    • Verificación de la calidad de los datos

3. Modelado

  • Objetivo: Construir modelos que respondan a los objetivos del proyecto.
  • Herramienta utilizada: Kedro (para limpieza automatizada de datos)
  • Modelos desarrollados:
    • Supervisados de regresión
    • Supervisados de clasificación
    • No supervisados

4. Evaluación

  • Objetivo: Evaluar el desempeño técnico de los modelos y su alineación con los objetivos de negocio.
  • Evaluación de resultados:
    • Modelos que cumplan con criterios de éxito empresarial
    • Métricas utilizadas: , F1-Score, entre otras
  • Proceso de revisión:
    • Revisión de parámetros aplicados
    • Pasos ejecutados durante el modelado
    • Hallazgos, errores o anomalías detectadas

5. Despliegue

  • Objetivo: Poner a prueba y entregar los modelos de manera funcional.
  • Actividades principales:
    • Planificación y control del despliegue de resultados
    • Elaboración de informe final y revisión del proyecto
  • Notas:
    • Permite la aplicación de modelos o funciones en entornos reales o de prueba
    • Esta fase finaliza el ciclo de CRISP-DM, aunque según las necesidades, puede ser necesario repetir alguna fase

Notebooks

Repositorios


Estructura del proyecto

Proyecto_ML_Kedro/
│
├── .dvc/
│
├── airflow/
│   ├── dags/
│   ├── logs/
│   └── plugins/
│
├── conf/
│   ├── base/
│   │   ├── parameters.yml    # Configuración de parámetros
│   │   └── catalog.yml       # Catalog de datasets
│   └── local/
│
├── data/
│   ├── 01_raw/
│   ├── 02_intermediate/      # Datos preprocesados
│   ├── 03_primary/      
│   ├── 04_feature/           # Features generadas con unsupervised
│   ├── 05_model_input/       # Datasets para entrenamiento y test
│   ├── 06_models/            # Modelos entrenados (Pickle)
│   ├── 07_model_output/      # Predicciónes 
│   └── 08_reporting/         # Reportes de métricas
│
├── docker/
│   ├── Dockerfile
│   ├── docker-compose.yml
│   └── requirements.txt
|
├── docs/
|
├── img/
| 
├── logs/
|
├── notebooks/
│
├── src/
│   └── proyecto_ml_kedro/
│       ├── __init__.py
│       ├── pipeline_registry.py
│       │
│       ├── pipelines/
│       │   ├── data_processing/
|       |   |
│       │   ├── regression_models/
|       |   |
│       │   ├── classification_models/
|       |   |
│       │   ├── regression_report/
|       |   |
│       │   ├── classification_report/
|       |   |
│       │   ├── classification_report/
│       │   │
│       │   │
│       │   └── unsupervised_learning/
│       │
│       └── settings.py
│
├── .dockerignore
├── .dvcignore
├── .gitignore
├── pyproject.toml
├── requirements.txt
├── start.sh
└── README.md

Mira en Architecture para mas información.


Documentación

Algunos documentos no menciónados seran modificados o borrados. Los documentos no incluyen buenas practicas como principiante en el uso estas herramientas.

Documentos Descripción
Integración de airflow.md Pasos de como se realizo la integración y configuración de Airflow.
Uso de DVC Pasos y configuración de DVC
dockerfile-kedro Pasos realizados para la implementación de Docker con kedro.

Pipelines

Aprendizaje

Para futuras iteraciones del proyecto o nuevo proyectos, se identificó que el pipeline data_processing concentra demasiadas funciones, lo que dificulta su mantenimiento, modificación y escalabilidad.

Se recomienda dividir este pipeline en varios pipelines más pequeños y especializados, con el objetivo de mejorar la modularidad, facilitar futuras modificaciones y reducir la complejidad dentro de un único flujo.

Descripción de pipelines

Pipeline Función
data_processing Limpieza de datos, imputación de valores faltantes, conversión de tipos, eliminación de inconsistencias y feature engineering inicial para generar el dataset base del proyecto.
unsupervised_learning (Módulo raíz) Pipeline orquestador que integra procesos de detección de anomalías, clustering y reducción de dimensionalidad para enriquecer el dataset antes del modelado de regresión y clasificación.
anomaly_detection (submódulo) Identificación y tratamiento de valores atípicos para mejorar la calidad y estabilidad del dataset.
clustering (submódulo) Segmentación de los datos en grupos homogéneos para generar nuevas características (por ejemplo, etiquetas de cluster).
dimensionality_reduction (submódulo) Reducción de la dimensionalidad del dataset mediante técnicas como PCA, generando un dataset optimizado para el modelado.
regression_models Entrena distintos modelos de regresión usando los datos procesados. Estos modelos se utilizan para predecir valores numéricos continuos.
classification_models Entrena distintos modelos de clasificación usando los datos procesados. Estos modelos se utilizan para predecir categorías o clases.
pipelines_prediction Pipeline encargado de generar predicciones utilizando los modelos entrenados y el conjunto de prueba (X_test). Produce como salida los vectores de predicción que serán utilizados en las etapas de evaluación y generación de reportes.
pipelines_evaluation Evaluación cuantitativa del desempeño de los modelos de regresión y clasificación mediante métricas apropiadas para cada tipo de problema. Para regresión: MAE, RMSE y R². Para clasificación: Accuracy, Precision, Recall y F1-score. Genera resultados comparativos estructurados para análisis posterior.
regression_report Generación de visualizaciones y análisis de desempeño de los modelos de regresión.
classification_report Generación de visualizaciones y análisis de desempeño de los modelos de clasificación.

Arquitectura pipelines **

El pipeline unsupervised_learning aplica tres transformaciones sobre el dataset base para generar un conjunto de datos enriquecido, el cual posteriormente es utilizado por modelos de aprendizaje supervisado para tareas de predicción.

flowchart TD

subgraph PD["Procesamiento de datos"]
    A0[data_processing]
end




subgraph UNS["Aprendizaje no supervisado"]
    A[unsupervised_learning]
    A1[dimensionality_reduction]
    A2[clustering]


    A --> A1 --> A2

    

end



A2 --> A4


A4[Dataset: model_input_PCA_and_best_clusters]


A0 --> A

subgraph MOD["Modelos supervizados"]
    B1[regression_models]
    B2[classification_models]
end

A4 --> B1
A4 --> B2

subgraph PRED["Predicción"]
    C1[regression_prediction]
    C2[classification_prediction]
end

B1 --> C1
B2 --> C2

subgraph EVAL["Evaluación de modelos"]
    D1[regression_evaluation]
    D2[classification_evaluation]
end

C1 --> D1
C2 --> D2

subgraph REP["Reportes"]
    E1[regression_report]
    E2[classification_report]
end

D1 --> E1
D2 --> E2
Loading

Para mas información: ¿Qué es el aprendizaje semisupervizado?

Kedro Viz

Haz clic en la imagen para explorar el flujo automatizado del proyecto.

Version solo con modelos supervizados

Kedro Pipeline Viz

Version completa: Flujo completo pipelines (Todos los modelos supervizados y no supervizados)

Kedro Pipeline Viz

Version seleccion de los mejores modelos de clas y reg con nosupervized

Kedro Pipeline Viz

Airflow

Modelos

Target y features de los modelos de regresión

Target variable (y) Descripción
Value_num El valor de mercado estimado del jugador expresado en euros (€).
Input features (X) Descripción
Best Overall Rating La calificación general más alta del jugador.
Special Un valor numérico que representa las habilidades especiales del jugador.
International Reputation Una calificación que indica la reputación internacional del jugador.
Reactions Rapidez de respuesta ante jugadas y cambios en el partido.
Potential La calificación potencial que representa el desarrollo futuro del jugador.

Criterio de selección

Nos basamos en algunos criterios de graifcos de x...

Target y features de los modelos de clasificación

Target variable (y) Descripción
Overall_Class_Bin (feature engineer) Clasificación de rendimiento (alto, medio/bajo) de los jugadores
Features Descripción
Age La edad del jugador en el momento de la recopilación de datos.
BallControl Control del balón al recibirlo y al mantenerlo cerca.
Finishing Capacidad para definir y marcar goles en situaciones de tiro.
Dribbling Control y habilidad en el regate para superar rivales.
International Reputation Una calificación que indica la reputación internacional del jugador.
Acceleration Velocidad con la que el jugador alcanza su máxima carrera.
SprintSpeed Velocidad máxima en carrera larga.
ShotPower Fuerza con la que el jugador ejecuta los tiros.
Offensive Skills Capacidad, técnica o acción diseñada para atacar, dañar, incapacitar o superar a un oponente.

Modelos implementados

Modelo Regresión Modelo Clasificación
Simple Linear Regression Logistic Regression
Multiple Linear Regression KNN
SVC SVR
Decision Tree Regression Decision Tree classification
Random Forest Regression Random Forest classification

Resultados de los modelos supervizados

Metricas de evaluación y interpretaciónes

Regresión** falta una metrica y un modelo

La variable objetivo Value_num contiene valores con una gran cantidad de digitos, por lo que los valores de MSE Y RMSE se validan en este caso.

Modelo MSE (×10¹²) RMSE
Simple_Linear_Regression 19.83 4,452,670 0.523
SVR_Model 32.38 5,690,346 0.221
Decision_Tree_Regression 5.20 2,280,996 0.875
Random_Forest_Regression 4.29 2,070,606 0.897

Mejor modelo obtenido

Modelo MSE MAE RMSE R2
randomforest Regression 4287408515877.631584.9908841846 2070605.833054115 0.927 0.896
  • graficos

  • interpretaciónes

  • conclusion

Clasificación

Modelo Accuracy Precision Recall F1 Score
Decision Tree 0.8950 0.8928 0.8950 0.8919
KNN 0.9141 0.9126 0.9141 0.9127
Logistic Regression 0.8247 0.8176 0.8247 0.8080
Random Forest 0.9280 0.9270 0.9280 0.9267
SVC 0.8975 0.8955 0.8975 0.8942

Mejor Modelo de clasificación

Modelo Accuracy Precision Recall F1 Score
Random Forest Classification 0.927 0.926 0.927 0.926
  • ds

Metricas de evaluación modelos semisupervizados

Comparaciónes o evaluaciones etc

Mejores modelos obtenidos

(mostrar graficos, metricas, hallazgos,etc)


Conclusión

  • metricas modelos

  • parametros

  • etc

Cierre

Reflexion

Puede incluir un "llamado a la acción" o una reflexión final que invite a nuevas investigaciones.


Herramientas y Framework

Framework

  • Kedro: Es el framework principal utilizado en este proyecto con el propósito de realizar el procesamiento y la limpieza de datos, el entrenamiento de modelos, la implementación de pipelines, entre otras tareas.

Herramientas

  • Jupyter Notebooks: En este proyecto, Kedro incorpora Jupyter Notebooks para la creación y edición de cuadernos digitales en formato .ipynb, utilizando Python.
    Dentro de la carpeta notebooks se organizan los distintos notebooks asociados a la metodología CRISP-DM, así como aquellos destinados a la implementación de modelos de aprendizaje supervisados y no supervisados.

  • DVC con Dagshub: Se utiliza la herramienta DVC (Data Version Control) que permite realizar el versionamiento de los datos generados por el proyecto, con el objetivo de mantener un respaldo seguro y reproducible.
    DVC establece una conexión con DagsHub, donde se alojan los datos en una plataforma de colaboración en la nube diseñada específicamente para científicos de datos.

  • Airflow-apache: Es una plataforma de código abierto diseñada para orquestar, programar y monitorear flujos de trabajo (pipelines) de datos complejos mediante código Python. Ver más

  • Docker Hub y Docker Desktop: Docker nos permite crear un entorno de pruebas aislado de la producción real, manteniendo controladas las dependencias, versiones de lenguajes y librerías mediante el uso de imágenes y contenedores.

Librerias

Algunas de las librerías utilizadas durante las etapas de Data Understanding, Data Preparation y Modeling en Jupyter Notebook. De la misma forma, estas librerías son aplicadas dentro de los pipelines del proyecto.

  • numpy
  • pandas
  • seaborn
  • matplotlib
  • sklearn

Instalación / Colaboración

git clone <url_del_proyecto>
cd machine_learning_project
python -m venv venv
source venv/bin/activate       # Linux/Mac
venv\Scripts\activate          # Windows
pip install --upgrade pip
# Install dependencies
pip install -r requirements.txt

# Run pipeline
kedro run

Que no subir al repositorio

  • .env file
  • docker-compose.override.yml
  • data/ directory contents
  • logs/ directory
  • sessions/ directory
  • IDE-specific files
  • Credentials or secrets

Crea un nuevo pipeline

# Create new pipeline
kedro pipeline create my_pipeline

# Implement nodes in src/spaceflights/pipelines/my_pipeline/
# Run new pipeline
kedro run --pipeline my_pipeline

Referencias

Kedro

Airflow

Metodologia CRISP-DM

Semisupervizado

Otras referencias

About

En este proyecto de Machine learning estudiaremos los atributos de los jugadores, las métricas de rendimiento, la valoración de mercado, el análisis de clubes, el posicionamiento y el desarrollo de los jugadores a lo largo del tiempo.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages