Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TFM Master en Big Data Deportivo - FantasyPro
TFM Master en Big Data Deportivo - FantasyPro
3. Conclusiones 48
3.1 Arquitectura del proyecto 48
3.2 Conclusiones 49
3.3 Líneas futuras 50
4. Referencias 52
2
1. Introducción
1.1 Introducción
A. Big data
Cada día se generan en el mundo más de 2,5 exabytes de datosi. Para tener una idea de la
inmensidad de esta cifra, 5 exabytes equivalen a todas las palabras pronunciadas por todos
los seres humanos a lo largo de la Historia. Este crecimiento exponencial es tan grande que
el 90% de los datos guardados en la actualidad han sido generados en los dos últimos años.
Estos datos proceden de diferentes fuentes: vídeos, imágenes, redes sociales,
transacciones de comercio electrónico, búsquedas en internet, comunicaciones 3G, 4G, 5G
y GPS, sensores del internet de las cosas, etc.
El big dataii se refiere comúnmente a una gran cantidad de datos, expresados en términos
de petabytes (1015) o exabyties (1018), que tomaría demasiado tiempo y sería muy costoso
cargar en una base de datos relacional para analizarlos. Por otra parte, big data implica una
tendencia en el avance de la tecnología que permite un nuevo enfoque de entendimiento y
toma de decisiones para obtener, describir y analizar esta enorme información, permitiendo
sacar conclusiones útiles y valiosas.
3
Para definir y explicar big data se suele recurrir a las cinco uvesiii:
- Volumen: la gran cantidad de datos generada hoy en día ha dejado obsoletas ciertas
tecnologías que no son capaces de tratar semejante cantidad de información. Esta
información es generada de manera exponencial, por lo que aparecen nuevos
términos como terabytes, petabytes, zetabytes, etc.
- Valor: el objetivo de los datos debe dar respuesta a diferentes preguntas, según el
objetivo marcado, y sacar conclusiones útiles y valiosas.
4
B. Ligas fantasy
Las ligas fantasy soniv un juego en el cual los participantes forman un equipo de fútbol virtual
basado en jugadores reales, que forman parte de equipos reales y que sobre la base de su
actuación en los partidos de los diferentes campeonatos y ligas (La Liga española, para el
presente trabajo), obtienen una puntuación.
Para formar su equipo, el usuario dispone de un presupuesto ficticio inicial, con el que puede
adquirir jugadores que salgan al mercado pujando por ellos. Un jugador sólo puede
pertenecer a un usuario. El precio de mercado de cada jugador es calculado de forma
automática por cada fantasy, basado en su rendimiento en la vida real.
Los puntos que obtiene cada jugador tras la disputa de un partido dependen de cada liga
fantasy, pero por norma general viene determinado por los siguientes factores:
- Tiempo jugado.
- Si marcó gol.
- Si dio asistencia de gol.
- Si su equipo no recibió gol.
- Si recibe buena crítica en los medios.
- Si fue el mejor del partido.
Además, hay actuaciones que pueden ser sancionadas con pérdida de puntos para los
jugadores:
- Si su equipo recibe goles.
- Si es amonestado con tarjeta.
- Si falla un penalti.
- Si marca un gol en propia puerta.
5
La idea de fútbol fantasy fue concebida en 1990 por el italiano Riccardo Albini e introducida
en Italia en el mismo año.
Se estima que en España existen más de un millón de usuarios activosv que juegan alguna
liga fantasy, y cada vez existen más páginas dedicadas a recoger opiniones, análisis y
estadísticas relacionadas con este hobby.
6
1.2 Planteamiento del problema: big data en ligas fantasy
Actualmente existen varias páginas webvi,vii que se dedican a recopilar noticias, análisis y
estadísticas específicas para ligas fantasy. Pese a ser de gran valor lo que hacen, ya que
permiten a los usuarios obtener información de forma clara y en una sola plataforma, en
cuanto a los datos se limitan a mostrar las estadísticas básicas.
Este trabajo surge con el objetivo de ir un paso más allá, no limitarse a mostrar estadísticas
básicas, sino también crear métricas propias avanzadas para un mejor entendimiento del
rendimiento de los jugadores en cada fantasy. Además, se pretende aplicar algoritmos de
machine learning que permita dotar de mayor calidad y variedad a la información que se
ofrece a los usuarios.
Para esto, de este trabajo nace una herramienta llamada Fantasy Pro, que permite a los
usuarios de ligas fantasy interactuar con los datos y visualizarlos de una forma dinámica,
divertida y clara. Fantasy Pro persigue llenar un hueco en el nicho del análisis de las ligas
fantasy, ofreciendo algo más profundo y especializado de lo que actualmente se puede
encontrar en internet.
7
1.3 Objetivos
A. Objetivos generales
B. Objetivos específicos
8
2. Desarrollo del proyecto big data
En este bloque se exponen y describen cada uno de los pasos que componen este proyecto
de big data. Estos apartados son los siguientes:
- Obtención de datos: en este primer paso, se obtienen los datos procedentes de las
distintas fuentes de datos.
- Procesamiento de los datos: a continuación se unen todos los datos obtenidos en una
única tabla, y se limpia la información.
- Visualización de los datos: una vez realizados todos los pasos anteriores, se elabora
un dashboard para visualizar y filtrar algunas métricas de relevancia obtenidas en los
pasos anteriores.
- Desarrollo del sitio web: por último, se realiza una página web para dar visibilidad al
dashboard de visualización, y que los usuarios puedan utilizar la herramienta.
Cada uno de los pasos expuestos requieren de ciertos inputs, y generan un output. Excepto
en el primer paso, donde el input son las fuentes de datos proporcionadas por las distintas
páginas web analizadas, en los demás casos el input es un archivo csv generado en el paso
anterior (output).
9
Cada uno de los apartados está estructurado de la misma manera, constando de la siguiente
información:
10
2.1 Obtención de datos
- Comunio: el presente trabajo recopila los puntos y el precio fantasy para cada uno de
los jugadores.
- Biwenger: De este fantasy se extraen datos sobre los puntos obtenidos por los
jugadores, así como su precio.
11
Todas las estadísticas obtenidas están detalladas en el Anexo II del presente trabajo.
Para extraer los datos de los sitios web mencionados anteriormente, se utiliza la técnica web
scrapingx: durante el web scraping (del inglés scraping = arañar/raspar) se extraen y
almacenan de forma automática datos de páginas web para analizarlos o utilizarlos en otra
parte.
B. Marco práctico
Para la recogida de datos procedentes de las fuentes citadas anteriormente, son necesarias
las siguientes librerías:
- Requestxi: es una librería python que facilita el trabajo con peticiones HTTP. Permite
hacer peticiones web, ya sea para consumir un API, extraer información de una
página o enviar el contenido de un formulario de manera automatizada.
En este caso, será necesario acceder a las web de referencia mencionadas
anteriormente, desde donde después se extraerá la información.
12
En el presente trabajo se recurrirá a pandas en numerosas ocasiones para resolver
situaciones donde es necesario almacenar, ordenar y trabajar con datos; creando
para ello distintos dataframes, que no es más que una estructura de datos con dos
dimensiones (filas y columnas).
Mediante código elaborado en python, se accede a cada una de las páginas web de
referencia utilizando la técnica web scraping, y se obtienen los datos. Después se guarda la
información en un dataframe en local, y posteriormente se exporta en un archivo csv.
13
2.2 Procesamiento de datos
El siguiente paso en cualquier aplicación big data consiste en procesar los datos recogidos
anteriormente, llevando a cabo una “limpieza” que deje la información lista para ser tratada
y analizada. Algunas operaciones propias de este apartado son:
- Tratamiento de los valores nulos: existen varias posibilidades, como darles valor cero,
eliminar los registros que contengan un valor nulo, igualarlos a la media, etc.
- Tratamiento de los registros duplicados: lo habitual es eliminar uno de los dos
registros duplicados, pero es necesario un análisis detallado de cada registro
duplicado para entender mejor el conjunto de datos que se tienen y optar por la mejor
solución para cada caso.
- Asignación de tipos correctos a las columnas: en ocasiones es necesario tratar ciertas
columnas para que mantengan un tipo concreto o se ajusten mejor a la realidad que
representan.
14
B. Marco práctico
15
B.2 Comprobación
En este paso, se hace una comparación entre el dataframe final obtenido en el paso anterior
y el dataframe obtenido de Comunio, con el fin de comprobar cuantos y qué jugadores se
han quedado fuera durante el preprocesamiento.
Se observa que los jugadores que han quedado fuera son aquellos que tienen ficha en el
equipo filial de su club, o que tienen un precio muy bajo debido a que han tenido una
participación reducida en la temporada actual.
16
El flujo de trabajo seguido durante este paso de comprobación es el siguiente:
En este paso, que es propiamente el procesamiento del dataframe final que se ha obtenido
juntando todos los datos recogidos hasta ahora, se realiza una “limpieza” de los datos. Se
llevan a cabo las siguientes operaciones:
17
- Procesado de la nacionalidad: en FBref la nacionalidad viene representada de la
siguiente forma: es ESP, br BRA, fr FRA, etc.
Se selecciona únicamente la segunda cadena, por ejemplo, ESP, BRA, FRA, etc.
- Procesado de los precios y valor de mercado: se pasan a millones los valores de
mercado de Transfermarkt, y los precios de Comunio y Biwenger. Posteriormente se
redondean y se convierten a tipo float.
- Procesado de los tipos de las columnas para que se adapten al dato que representan.
- Comprobación de duplicados: uno de los dos registros idéntico es eliminado.
- Comprobación de valores nulos: se igualan a cero.
18
2.3 Enriquecimiento de datos
En este apartado se realiza el enriquecimiento de los datos obtenidos hasta ahora, entendido
comoxvi una serie de procesos de combinación de diversos conjuntos de datos de fuentes
internas y externas, con el fin de mejorar el entendimiento de este conjunto de datos.
Concretamente, en este trabajo se lleva a cabo la creación de distintas métricas, que por su
grado de complejidad se diferencian en:
19
B. Marco práctico
En primer lugar, se crean las siguientes métricas básicas, resultado de operaciones básicas
entre datos ya obtenidos anteriormente:
- Precio por punto: el sentido de esta métrica es conocer cuánto cuesta cada punto
fantasy que consigue un determinado jugador.
𝑝𝑟𝑒𝑐𝑖𝑜 𝑐𝑜𝑚𝑢𝑛𝑖𝑜
𝑝𝑟𝑒𝑐𝑖𝑜 / 𝑝𝑢𝑛𝑡𝑜 (𝑐𝑜𝑚𝑢𝑛𝑖𝑜) =
𝑝𝑢𝑛𝑡𝑜𝑠 𝑐𝑜𝑚𝑢𝑛𝑖𝑜
𝑝𝑟𝑒𝑐𝑖𝑜 𝑏𝑖𝑤𝑒𝑛𝑔𝑒𝑟
𝑝𝑟𝑒𝑐𝑖𝑜 / 𝑝𝑢𝑛𝑡𝑜 (𝑏𝑖𝑤𝑒𝑛𝑔𝑒𝑟) =
𝑝𝑢𝑛𝑡𝑜𝑠 𝑏𝑖𝑤𝑒𝑛𝑔𝑒𝑟
- Puntos por partido: esta medida permite conocer el rendimiento regular durante la
temporada de un jugador determinado.
𝑝𝑢𝑛𝑡𝑜𝑠 𝑐𝑜𝑚𝑢𝑛𝑖𝑜
𝑝𝑢𝑛𝑡𝑜𝑠 / 𝑝𝑎𝑟𝑡𝑖𝑑𝑜 (𝑐𝑜𝑚𝑢𝑛𝑖𝑜) =
𝑝𝑎𝑟𝑡𝑖𝑑𝑜𝑠 𝑗𝑢𝑔𝑎𝑑𝑜𝑠
𝑝𝑢𝑛𝑡𝑜𝑠 𝑏𝑖𝑤𝑒𝑛𝑔𝑒𝑟
𝑝𝑢𝑛𝑡𝑜𝑠 / 𝑝𝑎𝑟𝑡𝑖𝑑𝑜 (𝑏𝑖𝑤𝑒𝑛𝑔𝑒𝑟) =
𝑝𝑎𝑟𝑡𝑖𝑑𝑜𝑠 𝑗𝑢𝑔𝑎𝑑𝑜𝑠
𝑝𝑟𝑒𝑐𝑖𝑜 𝑐𝑜𝑚𝑢𝑛𝑖𝑜
𝑝𝑟𝑒𝑐𝑖𝑜 𝑓𝑎𝑛𝑡𝑎𝑠𝑦 / 𝑟𝑒𝑎𝑙𝑖𝑑𝑎𝑑 (𝑐𝑜𝑚𝑢𝑛𝑖𝑜) =
𝑣𝑎𝑙𝑜𝑟 𝑡𝑟𝑎𝑛𝑠𝑓𝑒𝑟𝑚𝑎𝑟𝑘𝑡
𝑝𝑟𝑒𝑐𝑖𝑜 𝑏𝑖𝑤𝑒𝑛𝑔𝑒𝑟
𝑝𝑟𝑒𝑐𝑖𝑜 𝑓𝑎𝑛𝑡𝑎𝑠𝑦 / 𝑟𝑒𝑎𝑙𝑖𝑑𝑎𝑑 (𝑏𝑖𝑤𝑒𝑛𝑔𝑒𝑟) =
𝑣𝑎𝑙𝑜𝑟 𝑡𝑟𝑎𝑛𝑠𝑓𝑒𝑟𝑚𝑎𝑟𝑘𝑡
20
B.2 Métricas avanzadas
Tras normalizar los datos numéricos, se calculan los siguientes índices de rendimiento para
cada jugador, estando comprendidos entre 0 y 10:
21
- Índice específico: para cada jugador se calcula un índice específico basado en
medidas concretas a la posición en la que juega.
22
Figura 4. Índice específico, centrocampistas
23
Para que se realce el cálculo de los índices expuestos anteriormente, tanto el general como
los específicos, es necesario que el jugador haya disputado un mínimo del 10% de partidos
respecto al jugador que más partidos ha jugado. De esta forma, se evita que jugadores con
baja participación, puedan crear confusión alterando el sentido y entendimiento de los datos.
24
2.4 Analítica avanzada. Machine learning
Según el tipo de implementación, dentro del machine learning se pueden encontrar dos
grandes grupos:
25
- Machine learning no supervisado: tiene lugar cuando no se dispone de datos
“etiquetados” para el entrenamiento. Sólo se conocen los datos de entrada, pero no
existen datos de salida que correspondan a un determinado input. Por tanto, sólo se
puede describir la estructura de los datos, para intentar encontrar algún tipo de
organización que simplifique el análisis. Por ello, tienen un carácter exploratorio.
26
B. Marco práctico
B.1 No supervisado
27
Después se obtiene una matriz de correlación entre todos los jugadores, a partir de la
cual es posible conocer el jugador más similar (con mayor valor de correlación) para
cada uno de los jugadores.
28
2) Clustering: se ejecuta un proceso de clustering para agrupar a los jugadores según
las siguientes métricas:
valor biwenger, valor comunio, puntos biwenger, puntos comunio, puntos biwenger
/partido, puntos comunio/partido, índice general e índice específico.
29
Después, tras visualizar los resultados de inercia y sillhoute score, se decide
establecer en 4 el número de clústeres a visualizar.
30
Finalmente se obtienen los 4 clústeres, y se le asigna a cada uno una etiqueta (C, B
y A).
31
B.2 Supervisado
Después se ejecutan otros dos algoritmos de machine learning supervisado: regresión lineal
y K-nearest neighbours (knn).
En primer lugar se realiza una división de los datos que se disponen, para obtener un
dataset de entrenamiento (75%), y otro dataset para testear el modelo obtenidos
(25%).
32
Tras entrenar el modelo con los datos de entrenamiento, se obtienen las siguientes
fórmulas:
𝑝𝑢𝑛𝑡𝑜𝑠 𝑐𝑜𝑚𝑢𝑛𝑖𝑜 = 13,67 ∗ 𝑝𝑟𝑒𝑐𝑖𝑜 𝑐𝑜𝑚𝑢𝑛𝑖𝑜 + 60,74
Con esta fórmula generada, se evalúan los datos de test. Obteniendo los siguientes
resultados para fantasy Comunio.
33
Obteniéndose los siguientes resultados de error:
34
2) K-nearest neighbours (knn): el objetivo de este algoritmo es predecir cuántos
puntos ha conseguido un jugador en una liga fantasy, en función de los puntos
conseguidos por los 5 jugadores más similares.
En primer lugar se realiza una división de los datos que se disponen, para obtener un
dataset de entrenamiento (66,6%), y otro dataset para testear los resultados
obtenidos (33,3%).
Las métricas a utilizar para obtener los vecinos más cercanos son (variables de
entrada):
valor biwenger, valor comunio, puntos biwenger (para variable objetivo comunio),
puntos comunio (para variable objetivo puntos biwenger), puntos biwenger /partido,
puntos comunio/partido.
Tras entrenar el modelo con los datos de entrenamiento, se realizan las predicciones
con el modelo entrenado sobre los datos de test, obteniendo los siguientes resultados
de error (raíz cuadrada del error cuadrático medio):
35
Por último, se añade en el dataframe para cada jugador el cálculo aplicando este
modelo, obteniendo sus puntos esperados en relación a sus vecinos en Comunio
(comunio vecinos) y en Biwenger (biwenger vecinos).
36
2.5 Visualización de los datos
Por último, en este paso se presentan los datos obtenidos,xxvii permitiendo a los tomadores
de decisiones ver la analítica presentada de forma visual, de modo que puedan captar
conceptos difíciles o identificar nuevos patrones. Con la visualización interactiva, es posible
profundizar en diagramas y gráficas para observar mayor detalle, cambiando de forma
interactiva qué datos se ven y cómo se procesan.
37
B. Marco práctico
Existe la posibilidad de que un jugador haya jugado en la misma temporada en dos equipos
de La Liga, ya sea porque se ha producido un traspaso, o por una cesión. En este caso en
el dataframe existen dos registros para el mismo jugador, por lo que en este paso se elimina
el más antiguo, permaneciendo sólo el registro correspondiente al equipo actual.
38
B.2 Dashboard de visualización
El dashboard creado para la visualización de los datos consta de 4 páginas, desde ahora
llamadas módulos, y se puede acceder a través de este enlace. A continuación se describen
las funcionalidades de cada módulo:
1. Módulo top (portada): en esta página estática se muestran los jugadores con
mejores estadísticas:
39
2. Módulo jugador: en esta página el usuario puede elegir un jugador, del que se
muestra la siguiente información:
40
Figura 21. Módulo jugador
41
3. Módulo comparador: el usuario debe elegir un mínimo de tres jugadores para
comparar las siguientes métricas entre ellos:
42
4. Módulo similares: en esta página el usuario puede visualizar jugadores similares
a un jugador determinado, o que jueguen en una posición o equipo en concreto.
Las uniones se realizan en base a los puntos obtenidos en Comunio o en
Biwenger, datos obtenidos en el apartado 1. Obtención de datos del presente
bloque.
5. Por último, para navegar entre los distintos módulos descritos se presenta el
siguiente menú en el lateral, coloreándose el icono correspondiente a la página en
la que está el usuario en cada momento.
43
2.6 Desarrollo del sitio web
Por último, se crea una página web para dar visibilidad a la herramienta generada, y que los
usuarios puedan interactuar con el dashboard y los módulos elaborados.
44
B. Marco práctico
- Home: esta es la página principal. Aquí se hace una breve introducción presentando
las funcionalidades que se ofrecen, los datos de los que se dispone y los módulos
que componen el dashboard de visualización.
45
Figura 26. Web, módulos
- Blog: bajo el nombre de ‘Análisis Fantasy’ se crea una página donde periódicamente
se publican artículos relacionados con el análisis de datos en distintos fantasy,
estudiando y analizando métricas obtenidas durante el presente trabajo.
46
Figura 27. Web, blog
47
3. Conclusiones
3.1 Arquitectura del proyecto
Tras llevar a cabo todos los pasos explicados en el bloque anterior, se puede definir la
arquitectura del proyecto, desde la obtención de los datos hasta el desarrollo del sitio web,
de la siguiente manera:
48
3.2 Conclusiones
La realización del presente trabajo me ha servido para poner en práctica todos los
conocimientos adquiridos en este Máster en Big Data Deportivo, así como para aplicar tantas
herramientas y lenguajes de programación como han sido posibles.
Fantasy Pro espera ocupar un espacio en un nicho en el que actualmente no existe ninguna
opción similar, ofreciendo a los usuarios la posibilidad de analizar y visualizar datos
específicos fantasy para confeccionar una mejor plantilla. Además, espero seguir
desarrollando nuevas funcionalidades asociadas al big data y machine learning, para a
través de las sugerencias que puedan tener los usuarios, hacer de esta herramienta una
referencia en el mundo fantasy y que esté en continua evolución.
Por último, la realización de este trabajo me ha servido para llegar a las siguientes
conclusiones:
49
3.3 Líneas futuras
El resultado de este trabajo se encuentra en un estado completo, totalmente operativo en
todas las funcionalidades expuestas durante los distintos apartados. No obstante, el ámbito
en el que se encuadra el contenido de este trabajo permite que la herramienta desarrollada
pueda seguir evolucionando y esté en constante crecimiento, añadiendo nuevas opciones y
funcionalidades.
A. Obtención de datos
- Añadir más fuentes de datos genéricas: sería interesante añadir datos procedentes
de SofaScore xxx: es una página de resultados en vivo y una aplicación que cubre un
total de 23 deportes, entre ellos todas las principales ligas y torneos de fútbol.
Además, SofaScore ofrece una variedad de estadísticas para cada liga, cada partido
y cada jugador, incluidas las notas por rendimiento de los jugadores. En total,
SofaScore otorga calificaciones a los jugadores de más de 35 competiciones.
- Añadir más fuentes de datos de ligas fantasy: para poder llegar al máximo número de
usuarios, sería interesante añadir datos de otros fantasy, como pueden ser LaLiga
Fantasy Marca, FutMondo o Mister Fantasy.
50
B. Procesamiento de los datos
- Automatización del proceso: para evitar tener que realizar cada uno de los pasos de
forma manual ejecutando cada uno de los scripts python, sería interesante
automatizar todo el proceso desde la obtención de datos hasta la obtención del
dataframe final para su visualización.
C. Enriquecimiento de datos
- Elaborar un índice específico para la posición de portero: debido a que las estadísticas
relativas a los porteros procedentes de FBref se encuentran en un formato y directorio
distinto, no se ha realizado en el presente trabajo un índice específico para esta
posición.
- Obtener el análisis del sentimiento en Twitte para cada jugador: durante la realización
de este trabajo se han llevado a cabo diferentes pruebas para obtener tuits de todos
los jugadores de La Liga española, para posteriormente evaluarlos y obtener el
análisis del sentimiento en Twitter. No obstante, no se ha conseguido el resultado
deseado, por lo que queda pendiente para futuras incorporaciones a la herramienta
Fantasy Pro.
- Con el fin de llegar a más usuarios y visitantes, mejorar el posicionamiento del sitio
web, buscar colaboradores, patrocinadores, mejorar la presencia en redes sociales,
etc.
51
4. Referencias
i
https://www.elmundo.es/elmundo/2011/02/08/navegante/1297179889.html
ii
Manual Módulo 2 MBDD
iii
Manual Módulo 1 MBDD
iv
https://es.wikipedia.org/wiki/F%C3%BAtbol_fantasy
v
https://as.com/futbol/2018/09/28/mas_futbol/1538098376_153042.html
vi
https://futbolfantasy.es/
vii
https://www.comuniazo.com/
viii
https://fbref.com/es/about/
ix
https://es.wikipedia.org/wiki/Transfermarkt
x
https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/que-es-el-web-scraping/
xi
https://j2logo.com/python/python-requests-peticiones-http/
xii
https://clouding.io/hc/es/articles/360010618600-Introducci%C3%B3n-a-BeautifulSoup-4-en-Python-2
xiii
https://aprendeconalf.es/docencia/python/manual/pandas/
xiv
https://www.geeksforgeeks.org/fuzzywuzzy-python-library/
xv
https://interactivechaos.com/es/manual/tutorial-de-pandas/dataframes-la-funcion-merge
xvi
https://anyconnector.com/es/enterprise-application/what-is-data-enrichment.html
xvii
https://interactivechaos.com/es/manual/tutorial-de-machine-learning/minmaxscaler
xviii
https://jarroba.com/machine-learning-python-ejemplos/
xix
https://empresas.blogthinkbig.com/que-algoritmo-elegir-en-ml-aprendizaje/
xx
https://blog.bismart.com/es/diferencias-machine-learning-supervisado-no-supervisado
xxi
https://www.cienciadedatos.net/documentos/py19-pca-python.html
xxii
https://www.aprendemachinelearning.com/k-means-en-python-paso-a-paso/
xxiii
https://github.com/RicardoMoya/KMeans_Python
xxiv
https://es.wikipedia.org/wiki/Silhouette_(clustering)
xxv
https://aprendeia.com/libreria-scikit-learn-de-python/
xxvi
https://www.aprendemachinelearning.com/clasificar-con-k-nearest-neighbor-ejemplo-en-python/
xxvii
https://www.sas.com/es_pe/insights/big-data/data-visualization.html
xxviii
Manual Módulo 8 MBDD
xxix
https://institutocajasol.com/que-es-wordpress-y-como-funciona/
xxx
https://magazine.comunio.es/sofascore-puntos-preguntas-mas-frecuentes/
xxxi
https://football-observatory.com/-values-134692
52
ANEXO I
Figuras, ilustraciones y tablas
Comunio
Jugador Puntos Precio
Biwenger
Jugador Equipo Puntos Precio
Partidos jugados Puntos en casa Puntos visitante Puntos temporada
anterior
Transfermarkt
Jugador Valor de mercado
FBref
Jugador Nacionalidad Edad Equipo Posición
Presiones Partidos Titularidades Minutos jugados Goles + asistencias
ganadas por 90’
1. Módulo top (portada): en esta página estática se muestran los jugadores con
mejores estadísticas:
5. Por último, para navegar entre los distintos módulos descritos se presenta el
siguiente menú en el lateral, coloreándose el icono correspondiente a la
página en la que está el usuario en cada momento.