Article
· Oct 6, 2023 5m de lecture

QuinielaML ou Faire fortune avec Embedded Python et IntegratedML

Bienvenue chers membres de la Communauté à la présentation et au premier article d'un petit projet qui présentera les capacités d'InterSystems IRIS à fournir une fonctionnalité de sauvegarde complète pour une application web développée en Angular. Dans cet article, nous nous contenterons de présenter le concept ainsi que les fonctionnalités d'InterSystems IRIS utilisées de manière générale, en allant plus en détail dans les articles suivants.

Bienvenue à QuinielaML !

Introduction

Peut-être avez-vous déjà entendu parler des fonctionnalités d'InterSystems IRIS comme Embedded Python et IntegratedML, mais certainement n'avez-vous pas eu l'occasion de les utiliser ou vous ne savez tout simplement pas comment intégrer ces fonctionnalités dans votre quotidien. Profitant du début de la saison de football en Espagne, j'ai pensé que ce serait une excellente occasion d'expliquer toutes ces fonctionnalités d'InterSystems IRIS en développant une application qui nous aide à prédire les résultats du football et à devenir millionnaires avec le Quiniela.

Qu'est-ce que Quiniela ?

Lord Of The Rings Smeagol GIF - Lord Of The Rings Smeagol Gollum - DDécouvrez et partagez des

Pour ceux d'entre vous qui ne connaissent pas ce terme, la Quiniela est un type de pari sportif très célèbre en Espagne car, pendant plusieurs années, il s'agissait du seul format de pari sportif légal.

Grosso modo, la Quiniela est un type de pari sportif qui consiste à deviner qui sera le vainqueur de 15 matchs à chaque tour (10 matchs de première division et 5 matchs de deuxième division). La victoire de l'équipe locale est marquée par un 1, celle de l'équipe visiteuse par un 2 et l'égalité par un X.

Voici un billet de la Quiniela.

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

Comment prédire les résultats du Quiniela ?

Nous ne pouvons pas vraiment prédire un résultat, mais nous pouvons estimer la probabilité de chaque résultat en fonction de certaines variables. Ici, nous avons pris en compte les éléments suivants :

  1. Résultats historiques : résultats des matches entre deux équipes depuis 2000.
  2. Série de victoires de l'équipe locale : L'équipe qui reçoit a gagné les 3 derniers matchs à domicile.
  3. Série de victoires de l'équipe jouant à l'extérieur : Victoire de l'équipe jouant à l'extérieur lors des derniers matches joués à l'extérieur.
  4. Arbitre : résultat des équipes selon l'arbitre.

Comment obtenir toutes ces données pour construire notre modèle de prédiction ?

Le web scraping à la rescousse ! Toutes ces données historiques sont accessibles sur le web, il nous suffira donc d'implémenter à partir de notre IRIS un moyen d'obtenir ces données depuis un site web particulier, pour notre exemple nous avons utilisé BDFutbol, qui nous fournit des données concernant tous les matchs joués historiquement à la fois en première et en deuxième division.

Comment pouvons-nous effectuer un tel web scraping ? Très simplement, avec Embedded Python, il nous suffit d'importer les bibliothèques Python beautifulsoup4 et requests dans notre serveur IRIS et nous serons en mesure d'obtenir les informations nécessaires à partir du site web en question.

Architecture du projet

En tant qu'ancien développeur, j'ai choisi Angular pour développer la partie interface utilisateur et ainsi éviter de trop me compliquer la vie. Il est évident que le choix du backend se portera sur InterSystems IRIS avec la fonctionnalité IntegratedML incluse dans sa version communautaire.

Voici un petit schéma de l'architecture choisie :

Comment le déployer et le former :

L'ensemble du projet est Dockerisé, donc il vous suffit de télécharger le code source depuis GitHub sur votre ordinateur local, d'installer Docker et Docker Compose et d'exécuter les instructions suivantes depuis le terminal, dans le chemin d'accès où vous avez téléchargé le projet :

docker-compose build
docker-compose up -d

Une image IRIS d'InterSystems sera automatiquement déployée sur le port 52774 (en utilisant l'accès habituel au portail de gestion) et l'application Angular directement à cette URL.

Accès à QuinielaML

Une fois la page de connexion ouverte, il faut saisir le nom d'utilisateur et le mot de passe :

superuser / SYS

Celle-ci sera redirigée directement vers l'écran des prédictions, mais il est nécessaire d'afficher le menu latéral en cliquant sur l'icône de l'application en haut à gauche :

Et choisir Gestion des données  dans le menu :

Nous accédons ainsi à l'écran à partir duquel nous pouvons importer les données du site web BDFutbol, les préparer pour calculer les stries et modifier les valeurs textuelles en format numérique, et enfin créer le modèle de données et le former à l'aide des données préparées.

Vous devez commencer par la première option à gauche et vous déplacer dans la direction des flèches, en attendant que l'étape précédente soit terminée :

Génération de prédictions :

Une fois le modèle formé, il ne nous reste plus qu'à entrer les matchs de la journée que nous voulons prédire. Pour ce faire, nous cliquerons sur l'icône de l'application en haut à gauche et choisirons Prédiction de résultats

Sur cet écran, il suffit de remplir les champs en haut pour générer une prédiction adéquate, il suffit d'ajouter les données des équipes pour générer la prédiction, mais plus il y a de données, mieux c'est.

La partie frontend n'a pas été entièrement revue, donc vous pouvez trouver un bug, n'hésitez pas à me le faire savoir pour que je puisse l'améliorer.

Pour chaque match que vous enregistrez, vous verrez automatiquement la prédiction du résultat fournie par le modèle. Une fois la ronde terminée, vous pouvez entrer le résultat pour avoir une idée de la prédiction approximative en cliquant sur le match en question.

C'est bien ! Vous avez déjà tout pour devenir millionnaire avec la Quiniela et InterSystems IRIS. Dans le prochain article, nous expliquerons comment ouvrir une session depuis Angular avec InterSystems IRIS via JWT.

À la prochaine fois !

Discussion (2)2
Connectez-vous ou inscrivez-vous pour continuer