[PYTHON] J'ai essayé de prédire la victoire ou la défaite de la Premier League en utilisant le SDK Qore

introduction

Ceci est le premier message de Qiita. Puisque je suis presque un débutant en analyse de données, je pense qu'il y a beaucoup d'erreurs, alors veuillez le signaler. Cette fois, j'ai utilisé le SDK Qore de Qauntum Core Co., Ltd.

L'utilisation du SDK Qore est expliquée dans l'article suivant. Le monde du calcul des réservoirs ~ avec Qore ~ Introduction du SDK Qore et détection de l'arythmie avec Qore

Le contenu de l'effort sera la prédiction de la victoire ou de la défaite en Soccer Premier League. Plus précisément, ce sera une tâche de prédire le résultat du match joué en 2019-2020 en utilisant les données de 2010-2018.

L'ensemble de données a été téléchargé à partir du site suivant. http://football-data.co.uk/englandm.php

Prétraitement des données

J'ai publié tous les ensembles de données et le prétraitement sur GitHub, veuillez donc vous y référer. https://github.com/obameyan/QoreSDK-Premire-League

Comme il est difficile de décrire ici l'ensemble du prétraitement, seules les données avant le prétraitement et les données après le prétraitement sont décrites. Pour expliquer brièvement ce que j'ai fait, j'ai converti les données afin qu'elles puissent être jetées dans le SDK Qore en tant que données de séries chronologiques, en tenant compte de divers facteurs tels que l'équipe adverse, le résultat du match, le nombre de buts, le nombre de buts marqués et le tour du chapeau.

Voici les données avant le prétraitement. (Afficher uniquement une partie)

import pandas as pd

#Données d'origine
raw_data = pd.read_csv('./data/PremierLeague/2018-19.csv') #Seule une partie est décrite
raw_data.head()
Div Date HomeTeam AwayTeam FTHG FTAG FTR HTHG HTAG HTR Referee HS AS HST AST HF AF HC AC HY AY HR AR B365H B365D B365A BWH BWD BWA IWH IWD IWA PSH PSD PSA WHH WHD WHA VCH VCD VCA Bb1X2 BbMxH BbAvH BbMxD BbAvD BbMxA BbAvA BbOU BbMx>2.5 BbAv>2.5 BbMx<2.5 BbAv<2.5 BbAH BbAHh BbMxAHH BbAvAHH BbMxAHA BbAvAHA PSCH PSCD PSCA
E0 10/08/2018 Man United Leicester 2 1 H 1 0 H A Marriner 8 13 6 4 11 8 2 5 2 1 0 0 1.57 3.9 7.50 1.53 4.0 7.50 1.55 3.80 7.00 1.58 3.93 7.50 1.57 3.8 6.00 1.57 4.0 7.00 39 1.60 1.56 4.20 3.92 8.05 7.06 38 2.12 2.03 1.85 1.79 17 -0.75 1.75 1.70 2.29 2.21 1.55 4.07 7.69
E0 11/08/2018 Bournemouth Cardiff 2 0 H 1 0 H K Friend 12 10 4 1 11 9 7 4 1 1 0 0 1.90 3.6 4.50 1.90 3.4 4.40 1.90 3.50 4.10 1.89 3.63 4.58 1.91 3.5 4.00 1.87 3.6 4.75 39 1.93 1.88 3.71 3.53 4.75 4.37 38 2.05 1.98 1.92 1.83 20 -0.75 2.20 2.13 1.80 1.75 1.88 3.61 4.70
E0 11/08/2018 Fulham Crystal Palace 0 2 A 0 1 A M Dean 15 10 6 9 9 11 5 5 1 2 0 0 2.50 3.4 3.00 2.45 3.3 2.95 2.40 3.30 2.95 2.50 3.46 3.00 2.45 3.3 2.80 2.50 3.4 3.00 39 2.60 2.47 3.49 3.35 3.05 2.92 38 2.00 1.95 1.96 1.87 22 -0.25 2.18 2.11 1.81 1.77 2.62 3.38 2.90
E0 11/08/2018 Huddersfield Chelsea 0 3 A 0 2 A C Kavanagh 6 13 1 4 9 8 2 5 2 1 0 0 6.50 4.0 1.61 6.25 3.9 1.57 6.20 4.00 1.55 6.41 4.02 1.62 5.80 3.9 1.57 6.50 4.0 1.62 38 6.85 6.09 4.07 3.90 1.66 1.61 37 2.05 1.98 1.90 1.84 23 1.00 1.84 1.80 2.13 2.06 7.24 3.95 1.58
E0 11/08/2018 Newcastle Tottenham 1 2 A 1 2 A M Atkinson 15 15 2 5 11 12 3 5 2 2 0 0 3.90 3.5 2.04 3.80 3.5 2.00 3.70 3.35 2.05 3.83 3.57 2.08 3.80 3.2 2.05 3.90 3.4 2.10 39 4.01 3.83 3.57 3.40 2.12 2.05 38 2.10 2.01 1.88 1.81 20 0.25 2.20 2.12 1.80 1.76 4.74 3.53 1.89

Viennent ensuite les données après le prétraitement. (Afficher uniquement une partie)

import pandas as pd

#Pas les données d'origine car elles sont au milieu du processus
data=pd.read_csv("./data/PremierLeague/allAtt_onehot_large_train.csv") #Données d'entraînement
dataT=pd.read_csv("./data/PremierLeague/allAtt_onehot_large_test.csv") #données de test

#Données après prétraitement
data = data[['HTGS','ATGS','HTP','ATP','HM1','AM1', 'DiffLP','final1']]
dataT = dataT[['HTGS','ATGS','HTP','ATP','HM1','AM1','DiffLP','final1']]
df = data[200:210]
HTGS ATGS HTP ATP HM1 AM1 DiffLP final1
0.4737 0.2568 1.3333 1.0476 3 3 1 0
0.3289 0.3784 0.9048 1.0476 1 1 -3 1
0.4342 0.3243 2.0952 1.2857 3 3 -12 1
0.4342 0.2703 1.8571 1.8095 3 3 1 0
0.3553 0.2432 1.0000 1.2857 0 1 -1 0
0.2763 0.3378 1.1905 1.1905 3 1 9 1
0.4342 0.3919 1.3810 0.9524 1 1 -2 0
0.3289 0.3378 1.0476 1.7143 1 3 2 1
0.4474 0.3784 1.1905 0.8095 3 0 -8 1
0.3816 0.3919 0.8571 1.6667 1 0 15 1

Prétraitement avec Qore SDK

Ici, nous allons effectuer un prétraitement à l'aide du SDK Qore. Plus précisément, utilisez qore_sdk.utils.sliding_window () pour convertir la dimension des données d'entraînement en (nombre de données, heure, données réelles) et la dimension d'étiquette correcte en (nombre de données, 1).

from qore_sdk.utils import sliding_window

x = np.array(data)
x_t = np.array(dataT)

x_train = np.array(x[:, :7])
x_test = np.array(x_t[:, :7])
y_train = np.array(x[:, 7])
y_test = np.array(x_t[:, 7])

X, y= sliding_window(x_train, 10, 5, axis=0, y=y_train,y_def='mode', y_axis=0)
X_test, y_test = sliding_window(x_test, 10, 5, axis=0, y=y_test,y_def='mode', y_axis=0)
print(X.shape, y.shape, X_test.shape, y_test.shape)
>>  (653, 10, 7), (653, 1), (159, 10, 7), (159, 1)

Apprentissage et prédiction à l'aide du SDK Qore

Entrez les informations de compte émises ici.

from qore_sdk.client import WebQoreClient

username = '*****'
password = '*****'
endpoint = '*****'

client = WebQoreClient(username, password, endpoint=endpoint)

Apprenons réellement.

client.classifier_train(X, y)
>> {'res': 'ok', 'train_time': 0.8582723140716553}

J'ai pu apprendre en un instant. Ensuite, vérifiez la précision à l'aide des données de test.

res = client.classifier_predict(X_test)
report = classification_report(y_test, res['Y'])
print(report)
              precision    recall  f1-score   support

         0.0       0.73      0.90      0.81       104
         1.0       0.68      0.38      0.49        55

   accuracy                            0.72       159
   macro avg       0.71      0.64      0.65       159
weighted avg       0.71      0.72      0.70       159

La précision était de 72%. Pour être honnête, c'est une précision subtile, mais je pense que c'est un problème de pré-traitement ... J'ai pensé que nous devrions prétraiter en considérant attentivement le gonflement des données et plus de corrélation ...

Résumé

Je voulais faire des analyses de données au quotidien, mais je ne pouvais rien y faire, mais je suis reconnaissant à QuantumCore de m'avoir donné l'opportunité d'effectuer une telle analyse de données. Je voudrais également profiter de cette occasion pour continuer à relever le défi de l'analyse des données.

Recommended Posts

J'ai essayé de prédire la victoire ou la défaite de la Premier League en utilisant le SDK Qore
J'ai essayé de prédire la détérioration de la batterie lithium-ion en utilisant le SDK Qore
Je veux prédire le succès des joueurs NBA utilisant le SDK Qore
J'ai essayé l'histoire courante de l'utilisation du Deep Learning pour prédire la moyenne Nikkei
J'ai essayé de prédire la présence ou l'absence de neige par apprentissage automatique.
J'ai essayé de prédire l'infection d'une nouvelle pneumonie en utilisant le modèle SIR: ☓ Wuhan edition ○ Hubei province edition
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
Utilisez le SDK Qore pour prédire les augmentations et les baisses de prix BTC
J'ai essayé de prédire les hauts et les bas du cours de clôture du cours de l'action de Guru Navi en utilisant TensorFlow (progression)
J'ai essayé de transformer l'image du visage en utilisant sparse_image_warp de TensorFlow Addons
J'ai essayé d'obtenir les résultats de Hachinai en utilisant le traitement d'image
J'ai essayé d'estimer la similitude de l'intention de la question en utilisant Doc2Vec de gensim
J'ai essayé d'extraire et d'illustrer l'étape de l'histoire à l'aide de COTOHA
En utilisant COTOHA, j'ai essayé de suivre le cours émotionnel de la course aux meros.
J'ai essayé de prédire le comportement du nouveau virus corona avec le modèle SEIR.
J'ai essayé de corriger la forme trapézoïdale de l'image
J'ai essayé d'utiliser le filtre d'image d'OpenCV
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
J'ai essayé de notifier la mise à jour de "Hameln" en utilisant "Beautiful Soup" et "IFTTT"
[Python] J'ai essayé de juger l'image du membre du groupe d'idols en utilisant Keras
J'ai essayé de résumer la forme de base de GPLVM
J'ai essayé de prédire le match de la J League (analyse des données)
J'ai essayé d'approcher la fonction sin en utilisant le chainer
J'ai essayé d'utiliser l'API de Sakenowa Data Project
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé d'effacer la partie négative de Meros
J'ai essayé d'identifier la langue en utilisant CNN + Melspectogram
J'ai essayé de compléter le graphe de connaissances en utilisant OpenKE
J'ai essayé de classer les voix des acteurs de la voix
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé de notifier la mise à jour de "Devenir romancier" en utilisant "IFTTT" et "Devenir un romancier API"
Python pratique 100 coups J'ai essayé de visualiser l'arbre de décision du chapitre 5 en utilisant graphviz
J'ai essayé d'extraire le texte du fichier image en utilisant Tesseract du moteur OCR
J'ai essayé de trouver l'entropie de l'image avec python
[Courses de chevaux] J'ai essayé de quantifier la force du cheval de course
J'ai essayé d'obtenir les informations de localisation du bus Odakyu
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
J'ai essayé de refactoriser le modèle CNN de TensorFlow en utilisant TF-Slim
J'ai essayé de simuler l'optimisation des publicités à l'aide de l'algorithme Bandit
J'ai essayé la reconnaissance faciale du problème du rire en utilisant Keras.
Juger la victoire ou la défaite de Shadova par reconnaissance d'image
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
[TF] J'ai essayé de visualiser le résultat de l'apprentissage en utilisant Tensorboard
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
J'ai essayé de combattre le minimum local de la fonction Goldstein-Price
J'ai essayé d'approcher la fonction sin en utilisant chainer (re-challenge)
J'ai essayé de sortir le journal d'accès au serveur en utilisant Node.js
J'ai essayé de comparer la précision des modèles d'apprentissage automatique en utilisant kaggle comme thème.
J'ai essayé de prédire le genre de musique à partir du titre de la chanson sur le réseau neuronal récurrent
J'ai essayé d'automatiser la construction d'un environnement pratique à l'aide de l'API SoftLayer d'IBM Cloud
J'ai essayé de prédire les ventes de logiciels de jeux avec VARISTA en me référant à l'article du Codexa
[Linux] J'ai essayé de résumer les commandes de confirmation des ressources
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas