[PYTHON] Ich habe versucht, das Spiel in der J League vorherzusagen (Datenanalyse)

Überblick

Ich habe versucht, die Spielprognose der J League auf der Grundlage früherer Daten zu erstellen 55% Chance, Gewinne, Verluste und Unentschieden vorherzusagen (Lerndaten 2573 Spiele, Testdaten 200 Spiele)

Haftungsausschluss

Wir sind nicht verantwortlich für die Verwendung des Inhalts des Artikels

Auslöser und vergangene Bemühungen

Google prognostizierte für 2014 Weltcup-Siege und -Verluste "Wenn Google Big Data analysiert und die Weltmeisterschaft vorhersagt, wird es in allen Spielen das Viertelfinale erreichen. Wird es enden? " Als ich mir diesen Artikel ansah, beschloss ich, eine Vorhersage für die J League zu machen. Was mich an Googles Bemühungen interessiert hat Informationen zu allen Spieler- und Ballpositionen können den Fußballdaten OPTA entnommen werden. (Ich habe nach Daten gesucht, aber es scheint unvernünftig, sie einzeln abzurufen.) Zum Beispiel das ganze Spiel mit der Monte-Carlo-Methode simulieren.

Datensammlung

Es gibt einige Websites über die J League. Ich habe die Daten leise gesammelt, um keine Unannehmlichkeiten zu verursachen.


Eingabedaten

Spielstatus
> ・ ・ Wetter, Anzahl der Zuschauer, Tage, Feiertage, Anstoßzeit usw.

Die Geschichte der letzten 6 Spiele der Heim- und Auswärtsmannschaften
> ・ ・ Viele Variablen wie die Anzahl der Schüsse, die Anzahl der Pässe und die Erfolgsquote der Pässe sowie die Punktzahl pro Spiel werden eingegeben. Eingabe durch Anschließen ohne Mittelung.

Daten aller Startspieler
> ・ ・ Position, Größe, Gewicht, Geburtsort und Punktzahl der letzten Spiele

(Die Gesamtzahl der Lernvariablen beträgt 754)


Richtige Antwortdaten

Beschriftet mit 0,1,2 für Gewinnen, Verlieren oder Unentschieden

Datenverarbeitung, Formen

Dieses Mal habe ich zum ersten Mal ernsthaft mit beautifulsoup gearbeitet, um Daten aus HTML zu extrahieren. Es ist zu bequem. Ich hätte es früher benutzen sollen. Sie sollten auch auf 0 zu 1 normalisieren. Mit np.max können Sie dies problemlos in etwa 2 Zeilen tun.

Quellcode lernen

Ziemlich gewöhnlicher Scicit-Lerncode

import numpy as np
from sklearn.metrics import accuracy_score
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import classification_report
from sklearn.svm import SVC

all_input_np = np.load('input.npy')
all_label_np = np.load('label.npy')
train_input = all_input_np[:-200]
test_input = all_input_np[-200:]
train_result = all_label_np[:-200]
test_result = all_label_np[-200:]

tuned_parameters = [{'kernel': ['linear'], 'C': [1, 10, 100, 1000]}]

clf = GridSearchCV(SVC(), tuned_parameters, n_jobs=4, scoring="accuracy")

print(">>>START")
clf.fit(train_input, train_result)
print("Best parameters set found on development set: %s" % clf.best_params_)

print("Grid scores on development set:")
means = clf.cv_results_['mean_test_score']
stds = clf.cv_results_['std_test_score']
for mean, std, params in zip(means, stds, clf.cv_results_['params']):
        print("%0.3f (+/-%0.03f) for %r" % (mean, std * 2, params))

print("The scores are computed on the full evaluation set.")
y_true, y_pred = test_result, clf.predict(test_input)
print(classification_report(y_true, y_pred))
print(accuracy_score(y_true, y_pred))

Ergebnis

             precision    recall  f1-score   support

        0.0       0.61      0.56      0.59        87
        1.0       0.51      0.78      0.62        78
        2.0       0.00      0.00      0.00        35
avg / total       0.46      0.55      0.50       200

0.55

55% ist die richtige Antwortrate Was das Label betrifft, verliert 0, 1 gewinnt und 2 zieht.

Hier ist ein Einfallsreichtum. Es scheint, dass ungefähr 20% aller Fußballspiele gezogen werden Um die insgesamt korrekte Antwortrate zu erhöhen, sagt das Lernen daher voraus, dass die Auslosung gewinnen wird. Ich habe versucht, nur Gewinne und Verluste vorherzusagen. (Umgekehrt ist die Auslosung nicht vorhersehbar)

Ergebnisse unter Verwendung eines neuronalen Netzwerks

Die richtige Rücklaufquote lag bei ca. 50% Mehrschichtiges Perceptron (3 Schichten, Elu, Abbrecherquote 0,5)

Impressionen

Schließlich ist es schwierig, nur auf begrenzte Daten zuzugreifen. Mit den diesmal gesammelten Daten denke ich, dass selbst wenn das mathematische Modell bis an die Grenze angehoben wird, die korrekte Antwortrate höchstens etwa 60% beträgt. Ich denke, es ist eine gute Idee für eine ganze Spielsimulation wie Google Es ist skeptisch, dass Fußball nur durch die Erfolgsquote des Passes und andere Zahlen reproduziert werden kann. Schließlich haben die Menschen durch das Verknüpfen der Daten eines Bildes des Spiels dies nicht bemerkt, oder Ein Punkt ist, dass es möglich sein kann, Analyseverarbeitungen durchzuführen, die Menschen nicht ertragen können. Das andere ist, wenn wir den Prozess der Datenanalyse visualisieren können Ich denke, wir können die Richtung der Verbesserung des Modells und der Eingabedaten erkennen.

Recommended Posts

Ich habe versucht, das Spiel in der J League vorherzusagen (Datenanalyse)
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, scRNA-seq-Daten mithilfe der topologischen Datenanalyse (TDA) zu analysieren.
[Erste Datenwissenschaft ⑤] Ich habe versucht, meinem Freund zu helfen, die erste Eigenschaft durch Datenanalyse zu finden
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, Faktoren mit Titanic-Daten zu analysieren!
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Verwenden Sie die Swagger-Benutzeroberfläche. Wenn Sie einen Swagger-UI-ähnlichen Stil wünschen, kopieren Sie einfach die gesamte Datei unter / dist unter https://github.com/swagger-api/swagger-ui. Danach schreiben Sie einfach hier in index.html die URL der yml-Datei um. Wenn Sie der Meinung sind, dass Sie @ApiModel oder @ApiModelProperty nicht finden können, wurden übrigens anscheinend alle Anmerkungen zur Schemadefinition in @Schema integriert. Emotionsanalyse mit Java, Swagger, OpenAPI, Micronaut Natural Language Processing! Ich habe versucht, die Bewertung anhand des Überprüfungstextes vorherzusagen
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen
Ich habe versucht, die COTOHA-API zu berühren
Ich ließ RNN Sin Wave lernen und versuchte vorherzusagen
Ich habe versucht, fMRI-Daten mit Python zu analysieren (Einführung in die Dekodierung von Gehirninformationen)
Ich habe versucht, eine Clusteranalyse von Kunden anhand von Kaufdaten durchzuführen
Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
Ich habe versucht, das Verhalten des neuen Koronavirus mit dem SEIR-Modell vorherzusagen.
Ich habe versucht, nächstes Jahr mit AI vorherzusagen
Ich habe Web Scraping versucht, um die Texte zu analysieren.
Ich habe versucht, die Wetterkarte einer Clusteranalyse zu unterziehen
Ich habe versucht, beim Trocknen der Wäsche zu optimieren
Ich habe zuerst die SARS-Analyse vor dem Corona-Virus versucht
Ich habe versucht, die Hauptkomponenten mit Titanic-Daten zu analysieren!
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, die Trapezform des Bildes zu korrigieren
[Datenanalyse] Soll ich die Harumi-Flagge kaufen?
Ich habe versucht, das Überleben der Titanic mit PyCaret vorherzusagen
Qiita Job Ich habe versucht, den Job zu analysieren
LeetCode Ich habe versucht, die einfachen zusammenzufassen
Ich habe versucht, das Problem des Handlungsreisenden umzusetzen
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich habe versucht zu debuggen.
Ich habe versucht, die Verschlechterung des Lithium-Ionen-Akkus mithilfe des Qore SDK vorherzusagen
Ich habe versucht, die Pferde vorherzusagen, die mit LightGBM unter den Top 3 sein werden
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Ich habe versucht, die Veränderung der Schneemenge für 2 Jahre durch maschinelles Lernen vorherzusagen
Ich habe versucht, das Bild zu verarbeiten und zu transformieren und die Daten für maschinelles Lernen zu erweitern
Ich habe versucht, die Daten des Laptops durch Booten unter Ubuntu zu retten
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich habe versucht, Iris aus dem Kamerabild zu erkennen
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, EKG-Daten mit der K-Shape-Methode zu gruppieren
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren
Ich habe versucht, Pytest in die eigentliche Schlacht zu bringen
[Python] Ich habe versucht, die Top 10 der Lidschatten grafisch darzustellen
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, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, die Methode zur Mittelung der Dollarkosten zu simulieren
Ich habe versucht, die nicht negative Matrixfaktorisierung (NMF) zu wiederholen.
Ich habe versucht, die Sprache mit CNN + Melspectogram zu identifizieren