[PYTHON] Ich habe versucht, den Sieg oder die Niederlage der Premier League mit dem Qore SDK vorherzusagen

Einführung

Dies ist Qiitas erster Beitrag. Da ich fast ein Anfänger in der Datenanalyse bin, denke ich, dass es viele Fehler gibt. Bitte weisen Sie darauf hin. Dieses Mal habe ich Qore SDK von Qauntum Core Co., Ltd. verwendet.

Die Verwendung des Qore SDK wird im folgenden Artikel erläutert. Die Welt des Reservoir Computing ~ mit Qore ~ Einführung des Qore SDK und Erkennung von Arrhythmien mit Qore

Der Inhalt der Bemühungen wird die Vorhersage eines Sieges oder einer Niederlage in der Soccer Premier League sein. Insbesondere wird es eine Aufgabe sein, das Ergebnis des Spiels in den Jahren 2019-2020 anhand der Daten von 2010-2018 vorherzusagen.

Der Datensatz wurde von der folgenden Site heruntergeladen. http://football-data.co.uk/englandm.php

Datenvorverarbeitung

Ich habe alle Datensätze und Vorverarbeitungen auf GitHub veröffentlicht. https://github.com/obameyan/QoreSDK-Premire-League

Da es hier schwierig ist, die gesamte Vorverarbeitung zu beschreiben, werden nur die Daten vor der Vorverarbeitung und die Daten nach der Vorverarbeitung beschrieben. Um kurz zu erklären, was ich getan habe, habe ich die Daten so konvertiert, dass sie als Zeitreihendaten in das Qore SDK geworfen werden können. Dabei wurden verschiedene Faktoren wie das gegnerische Team, Spielergebnisse, Anzahl der Tore, Anzahl der erzielten Tore und Hattricks berücksichtigt.

Das Folgende sind die Daten vor der Vorverarbeitung. (Nur Teil anzeigen)

import pandas as pd

#Originale Daten
raw_data = pd.read_csv('./data/PremierLeague/2018-19.csv') #Es wird nur ein Teil beschrieben
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

Als nächstes folgen die Daten nach der Vorverarbeitung. (Nur Teil anzeigen)

import pandas as pd

#Nicht die Originaldaten, da sie sich mitten im Prozess befinden
data=pd.read_csv("./data/PremierLeague/allAtt_onehot_large_train.csv") #Trainingsdaten
dataT=pd.read_csv("./data/PremierLeague/allAtt_onehot_large_test.csv") #Testdaten

#Daten nach der Vorverarbeitung
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

Vorbehandlung mit Qore SDK

Hier führen wir die Vorverarbeitung mit dem Qore SDK durch. Verwenden Sie insbesondere qore_sdk.utils.sliding_window (), um die Trainingsdatendimension in (Anzahl der Daten, Zeit, tatsächliche Daten) und die richtige Etikettendimension in (Anzahl der Daten, 1) zu konvertieren.

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)

Lernen und Vorhersagen mit dem Qore SDK

Geben Sie hier die Kontoinformationen ein.

from qore_sdk.client import WebQoreClient

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

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

Lass uns tatsächlich lernen.

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

Ich konnte sofort lernen. Überprüfen Sie anschließend die Genauigkeit anhand der Testdaten.

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

Die Genauigkeit betrug 72%. Um ehrlich zu sein, ist es eine subtile Genauigkeit, aber ich denke, dies ist ein Vorverarbeitungsproblem ... Ich dachte, wir sollten vorverarbeiten, indem wir sorgfältig über das Aufblasen von Daten und mehr Korrelation nachdenken ...

Zusammenfassung

Ich wollte täglich Datenanalysen durchführen, konnte aber nichts dagegen tun, aber ich bin Quantum Core dankbar, dass ich die Möglichkeit habe, diese Art der Datenanalyse durchzuführen. Ich möchte diese Gelegenheit auch nutzen, um die Herausforderung der Datenanalyse weiter anzunehmen.

Recommended Posts

Ich habe versucht, den Sieg oder die Niederlage der Premier League mit dem Qore SDK vorherzusagen
Ich habe versucht, die Verschlechterung des Lithium-Ionen-Akkus mithilfe des Qore SDK vorherzusagen
Ich möchte den Erfolg von NBA-Spielern mit dem Qore SDK vorhersagen
Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Ich habe versucht, die Infektion mit einer neuen Lungenentzündung mithilfe des SIR-Modells vorherzusagen: ☓ Wuhan ed. ○ Hubei ed.
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Verwenden Sie das Qore SDK, um BTC-Preiserhöhungen und -senkungen vorherzusagen
Ich habe versucht, die Höhen und Tiefen des Schlusskurses des Aktienkurses von Guru Navi mit TensorFlow vorherzusagen (Fortschritt)
Ich habe versucht, das Gesichtsbild mit sparse_image_warp von TensorFlow Addons zu transformieren
Ich habe versucht, die Trefferergebnisse von Hachinai mithilfe der Bildverarbeitung zu erhalten
Ich habe versucht, die Ähnlichkeit der Frageabsicht mit Doc2Vec von gensim abzuschätzen
Ich habe versucht, die Phase der Geschichte mit COTOHA zu extrahieren und zu veranschaulichen
Mit COTOHA habe ich versucht, den emotionalen Verlauf des Laufens von Meros zu verfolgen.
Ich habe versucht, das Verhalten des neuen Koronavirus mit dem SEIR-Modell vorherzusagen.
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich habe versucht, das Update von "Hameln" mit "Beautiful Soup" und "IFTTT" zu benachrichtigen.
[Python] Ich habe versucht, das Mitgliederbild der Idolgruppe mithilfe von Keras zu beurteilen
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe versucht, das Spiel in der J League vorherzusagen (Datenanalyse)
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, die Sprache mit CNN + Melspectogram zu identifizieren
Ich habe versucht, das Wissensdiagramm mit OpenKE zu ergänzen
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Python-Übung 100 Schläge Ich habe versucht, den Entscheidungsbaum von Kapitel 5 mit graphviz zu visualisieren
Ich habe versucht, den Text in der Bilddatei mit Tesseract der OCR-Engine zu extrahieren
Ich habe versucht, die Entropie des Bildes mit Python zu finden
[Pferderennen] Ich habe versucht, die Stärke des Rennpferdes zu quantifizieren
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, das CNN-Modell von TensorFlow mit TF-Slim umzugestalten
Ich habe versucht, die Anzeigenoptimierung mithilfe des Banditenalgorithmus zu simulieren
Ich habe versucht, das Lachproblem mit Keras zu erkennen.
Beurteilung des Sieges oder der Niederlage von Shadova anhand der Bilderkennung
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
[TF] Ich habe versucht, das Lernergebnis mit Tensorboard zu visualisieren
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Ich habe versucht, das lokale Minimum der Goldstein-Preis-Funktion zu bekämpfen
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren (Re-Challenge)
Ich habe versucht, das Zugriffsprotokoll mit Node.js auf dem Server auszugeben
Ich habe versucht, die Genauigkeit von Modellen für maschinelles Lernen mit Kaggle als Thema zu vergleichen.
Ich habe versucht, das Musikgenre anhand des Songtitels im Recurrent Neural Network vorherzusagen
Ich habe versucht, die Erstellung einer praktischen Umgebung mithilfe der SoftLayer-API der IBM Cloud zu automatisieren
Ich habe versucht, den Verkauf von Spielesoftware mit VARISTA anhand des Artikels von Codexa vorherzusagen
[Linux] Ich habe versucht, die Ressourcenbestätigungsbefehle zusammenzufassen
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank zu erstellen