Artículo
· 22 ago, 2023 Lectura de 4 min

QuinielaML o cómo hacerse rico con Embedded Python e IntegratedML

Bienvenidos estimados miembros de la Comunidad a la presentación y primera entrega de un pequeño proyecto que demostrará las capacidades de InterSystems IRIS para proporcionar funcionalidades plenas de backup para una aplicación web desarrollada en Angular. Este artículo se limitará a presentar el concepto así como las funcionalidades de InterSystems IRIS utilizadas de un modo general, entrando más en detalle en posteriores artículos.

¡Bienvenidos a QuinielaML!

Introducción

Es posible que ya hayais oído hablar de funcionalidades de InterSystems IRIS como Embedded Python e IntegratedML, pero seguramente no hayáis tenido ocasión de meteros en faena con ellas o simplemente no sepáis bien como encajar dichas funcionalidades en vuestro día a día, pues bien, aprovechando el comienzo de la temporada futbolística en España se me ocurrió que qué mejor forma de explicar todas estas funcionalidades de InterSystems IRIS que desarrollar una aplicación que nos ayude a predecir los resultados futbolísticos de cara a hacernos millonarios con la Quiniela.

¿Qué es la Quiniela?

Para aquellos que no estéis familiarizados con el término la Quiniela es un tipo de apuestas deportivas muy famosa en España ya que, durante muchos años, fue la único formato de apuestas deportivas legal.

La Quiniela es, a grosso modo, un tipo de apuesta deportiva en la que debes acertar quién será el ganador de 15 partidos de cada jornada (10 partidos de Primera División y 5 de Segunda). La victoria del equipo local se marca con un 1, la del equipo visitante con un 2 y el empate con una X.

Aquí tenéis un ejemplo de un boleto de la Quiniela.

Quiniela Elige8, el nuevo juego asociado a la quiniela. - Loteria Cano

¿Cómo predecir los resultados de la Quiniela?

Pues bien, realmente no podemos predecir un resultado, pero lo que sí podemos hacer es estimar la probabilidad de cada resultado en función de determinadas variables. En este caso hemos tenido en consideración lo siguiente:

  1. Resultados históricos: resultado de los partidos entre dos equipos desde el año 2000.
  2. Racha del equipo local: victorias del equipo local los últimos 3 partidos jugados en su casa.
  3. Racha del equipo visitante: victorias del equipo visitante los últimos partidos jugados como visitante.
  4. Arbitro: resultado de los equipos en función del árbitro.

¿Cómo obtener todos esos datos para construir nuestro modelo de predicción?

¡Web scraping al rescate! Todos estos datos históricos se encuentran accesibles en la web, por lo que únicamente necesitaremos implementar desde nuestro IRIS un modo de obtener estos datos desde una web en particular, para nuestro ejemplo hemos usado BDFutbol, la cual nos proporciona datos respecto a todos los partidos disputados históricamente tanto el Primera como en Segunda división.

¿Cómo podemos realizar dicho web scraping? Muy sencillo, con Embedded Python, sólo necesitaremos importar en nuestro servidor de IRIS las librerías de Python beautifulsoup4 y requests y ya estaremos en disposición de obtener la información necesaria de dicha web.

Arquitectura del proyecto

Como antiguo desarrollador he elegido Angular para desarrollar la parte de la interfaz de usuario y así no complicarme mucho la vida. Es obvio que la selección del backend será InterSystems IRIS con la funcionalidad de IntegratedML incluida en su versión Community 

Aquí podéis ver un pequeño esquema de la arquitectura elegida:

Cómo desplegarlo

Todo el proyecto se encuentra Dockerizado, por lo que sólo necesitarás descargar el código fuente de GitHub en tu equipo local, instalar Docker y Docker Compose y ejecutar desde el terminal, en la ruta donde hayas descargado el proyecto las siguientes instrucciones:

docker-compose build
docker-compose up -d

Automáticamente desplegará una imagen de InterSystems IRIS  en el puerto 52774 (con el acceso al portal de gestión habitual) y la aplicación de Angular directamente en esta URL

Accediendo a QuinielaML

Una vez abierta la página de login deberemos introducir como usuario y contraseña:

superuser / SYS

Directamente se redirigirá a la pantalla de predicciones, pero deberemos desplegar el menú lateral haciendo click sobre el icono de la aplicación en la parte superior izquierda:

Y seleccionar en el menú Data management:

Esto nos llevará a la pantalla desde la que podremos importar los datos desde la web de BDFutbol, prepararlos para calcular las rachas y modificar los valores de textos a formato numérico y finalmente crear el modelo de datos y entrenar el modelo con los datos preparados.

Deberéis empezar por la primera opción de la izquierda y avanzar en el sentido de las flechas, esperando a que concluya el paso anterior:

Generando predicciones:

Con el modelo entrenado sólo nos quedará comenzar a introducir los partidos de la jornada que queramos predecir. Para ello volveremos a pulsar sobre el icono de la aplicación en la parte superior izquierda y seleccionaremos Result prediction

Desde esta pantalla sólo tendremos que rellenar los campos de la parte superior para generar una predicción adecuada, basta con añadir los datos de los equipos para generar la predicción, pero cuando más datos, mejor.

La parte del frontend no está totalmente revisada, así que podréis encontrar algún fallo, no dudéis en comunicármelo para ir mejorándola. 

Con cada partido que registréis veréis automáticamente la predicción que da el modelo para el resultado. Una vez pasada la jornada podréis introducir el resultado para haceros una idea de lo aproximado de la predicción pulsando sobre el partido en cuestión.

¡Bien! Ya lo tenéis todo para haceros millonarios con la Quiniela e InterSystems IRIS. En el próximo artículo explicaremos como abrimos una sesión desde Angular con InterSystems IRIS mediante JWT.

¡Hasta la próxima!

Comentarios (2)1
Inicie sesión o regístrese para continuar