Schreiben Sie den tatsächlichen Entwicklungsinhalt (*) des Inhalts in Letzter Blog.
Es dauert nicht so, als würde ich studieren.
Selbst wenn Sie Leute fragen, wird es fragmentiert sein, so dass Sie denken, dass Sie es geschafft haben. Auch wenn ich die Ingenieure auf dieser Straße frage, verstehe ich oft nicht einmal, was ich sage, weil es extrem schwierig ist (lacht). .. .. Auch wenn eine Formel durch eine neue Formel erklärt wurde ... es war wie!
(*) Über die Entwicklung von SIVA [facebook] https://www.facebook.com/AIkeiba/ [Twitter] https://twitter.com/Siva_keiba Ich mag es, weil es von Zeit zu Zeit live sein wird! Bitte folgen Sie mir.
Dann zum Hauptthema!
Beim Starten des maschinellen Lernens für die Vorhersage von Pferderennen haben wir zuerst die Zielinformationen gesammelt. Ich verstand Pferderennen überhaupt nicht und war auch nicht daran interessiert, also verstand ich es überhaupt nicht, aber ich bezog mich darauf, weil es Informationen im Internet gab, die verschiedene Leute tatsächlich versuchten.
http://stockedge.hatenablog.com/entry/2016/01/03/103428 http://www.mm-lab.jp/analysis/expect_the_arima_kinen_in_multiple_regression_analysis/
Als ich verschiedene Leute auf Facebook fragte, hörte ich, dass das Wetter, das Geschlecht des Pferdes, das Alter des Pferdes und Informationen zu früheren Rennen notwendig sind, und beschloss, sie zu sammeln.
Glücklicherweise habe ich eine Person gefunden, die Daten sammelt, also habe ich die Daten erhalten. Ich werde es zusammen mit dem Programm geben, damit Sie es verwenden können.
https://github.com/tsunaki00/horse_racing
Ich wollte die Informationen bis zu einem gewissen Grad klassifizieren, gab aber auf, weil ich ein Amateur im Pferderennen war. .. Daher wurden die Renninformationen und Pferdeparameterinformationen im Programm gemastert und quantifiziert.
Bereiten Sie das folgende Programm vor und erstellen Sie ein Modell
Markenname | Erläuterung |
---|---|
Veranstaltungsdatum | yyyy-mm-dd |
Rennbahn | |
Startnummer | |
Name des Rennens | |
Kurs | Schmutz |
Orbit | Bei Schmutz oder Rasen "rechts" für die Drehung im Uhrzeigersinn, "links" für die Drehung gegen den Uhrzeigersinn |
Entfernung | [m] |
Baba Staat | Ryo |
Preis | [Zehntausend Yen] |
Anzahl der Köpfe | |
Reihenfolge der Ankunft | |
Rahmennummer | |
Pferdenummer | |
Pferdename | |
Sex | |
Alter | |
Reiter | |
Zeit | [s] |
Unterschied | Der Unterschied zum ersten Pferd,Hals, |
Bestellung übergeben | |
Bergauf 3F | Letzte 600m Zeit[s] |
Abstoßungsmenge | [kg] |
Pferdegewicht | [kg] |
Erhöhen verringern | Änderung des Pferdegewichts gegenüber dem vorherigen Rennen[kg] |
Beliebt | Gewinnchancen absteigende Zahl |
Chancen | |
Blinker | Blinker(Augenbinde)Wenn ja, "B" |
Trainer | |
Trainingskommentar | |
Trainingsbewertung |
$ pip install numpy
$ pip install sklearn
#coding:utf-8
import csv
from sklearn.externals import joblib
from sklearn.ensemble import RandomForestClassifier
class Predict:
def __init__ (self) :
self.model = None
self.horse_data = []
self.train_data = []
self.train_target = []
#Testziel
self.test_row_no = -1
self.master = {
1 : {
"Fukushima": 0, "Ogura": 1, "Kyoto": 2, "Hakodate": 3,
"Nakayama": 4, "Sapporo": 5, "Tokio": 6,
"Hanshin": 7, "Chukyo": 8, "Niigata": 9
},
4 : { "Shiba" : 0, "Schmutz" : 1, "Hindernis" : 2 },
5 : { "richtig" : 0, "links" : 1, "Shiba" : 2, "Gerade Linie" : 3, "richtig2周" : 4 },
7 : { "Schlecht" : 0, "Schwer" : 1, "稍Schwer" : 2, "Gut" : 3 },
14 : {"Männlich" : 0, "Weiblich" : 1, "Sen." : 2},
29 : {"A" : 0, "B" : 1, "C" : 2, "D" : 3, "E" : 4, "nan" : -1 }
}
def train(self):
hurdle_race_count = 0
header = []
label = []
with open("data/jra_race_result.csv", "r") as f:
reader = csv.reader(f)
#Erstellen Sie Vorhersagedaten mit Daten ohne Fehler
for idx, row in enumerate(reader):
if idx == 0:
for i, col in enumerate(row):
header = row
continue
elif row[4] == 'Hindernis' :
hurdle_race_count += 1
continue
horse = []
parameter = []
#Mit Stammdaten quantifizieren
for i, col in enumerate(row):
if i in {3, 13, 16, 18, 19, 26, 27, 28}:
horse.append(col)
continue
elif i == 0 :
if self.test_row_no == -1 and col == '2016-09-17' :
self.test_row_no = (idx - hurdle_race_count)
parameter.append(col.replace('-',''))
elif i == 10 :
label.append(header[i])
horse.append(col)
self.train_target.append(col)
elif self.master.has_key(i) :
if i == 1 :
horse.append(col)
label.append(header[i])
parameter.append(self.master[i][col])
else :
if i in (2, 12) :
horse.append(col)
label.append(header[i])
if col == '' or col == ' - ':
col = -1
parameter.append(float(col))
self.horse_data.append(horse)
self.train_data.append(parameter)
#Erstellen Sie ein Lernmodell(Der Algorithmus ist Random Forest)
#Parameterbeispiel n_estimators=xx, max_features="auto", n_jobs=-1
self.model = RandomForestClassifier()
#Lernen Sie mit fit(9/Lerne bis zu 17)
self.model.fit(self.train_data[0 : self.test_row_no - 1], self.train_target[0 : self.test_row_no - 1])
#Bei der Serialisierung eines Modells
# joblib.dump(model, 'model.pkl')
#Bedeutung der Identität (Bedeutung im Zweig von Random Forest)
for i, xi in enumerate(self.model.feature_importances_):
print '{0}\t{1:.1f}%'.format(label[i], xi * 100)
def predict(self):
for i, val in enumerate(self.train_data[self.test_row_no:]):
#Vorhersagen mit Vorhersagen
predict = self.model.predict([val])[0]
if int(predict) == 1 :
result = "☓"
if int(predict) == int(self.horse_data[i][3]) :
result = "○"
print '{0} {1}R {2} {3} {4}Tatsächliche Reihenfolge der Ankunft: {5}Ankunft{6}'.format(self.horse_data[i][0],
self.horse_data[i][1],
self.horse_data[i][2],
self.horse_data[i][4],
self.horse_data[i][5],
self.horse_data[i][3], result )
if __name__ == "__main__":
predict = Predict()
predict.train()
predict.predict()
Es trifft überhaupt nicht (lacht)
Nakayama 01R Sarah 3 Jahre alt, nicht gewonnen 14 Diap Pira Tatsächliche Reihenfolge der Ankunft:16. ☓
Nakayama 02R Sarah 3 Jahre alt nicht gewonnen 1 Keiai Libra Tatsächliche Reihenfolge der Ankunft:1. ○
Nakayama 05R Sarah 3 Jahre alt, nicht gewonnen 16 Mieno Wonder Tatsächliche Reihenfolge der Ankunft:1. ○
Nakayama 05R Sarah 3 Jahre alt, nicht gewonnen 13 Belmure Tatsächliche Reihenfolge der Ankunft:12. ☓
Nakayama 06R Sarah 4 Jahre alt und unter 5 Millionen Yen 14 Symbolis Wift Tatsächliche Reihenfolge der Ankunft:12. ☓
Nakayama 07R Sarah 4 Jahre alt und unter 5 Millionen Yen 6 Symboli Sonne Tatsächliche Reihenfolge der Ankunft:12. ☓
Nakayama 08R Sarah 4 Jahre alt und unter 10 Millionen Yen 13 Asakusa Marineba Tatsächliche Reihenfolge der Ankunft:11. ☓
Nakayama 09R Erster Einsatz bei Sonnenaufgang 5 Zuschlagspreis Tatsächliche Reihenfolge der Ankunft:9. ☓
Nakayama 10R Junior Cup 14 Red Vivo Tatsächliche Reihenfolge der Ankunft:9. ☓
Nakayama 10R Junior Cup 11 Red Jive Tatsächliche Reihenfolge der Ankunft:10. ☓
Nakayama 11R Daily Sports Award Nakayama Gold Cup (GIII) 9 Justaway Tatsächliche Reihenfolge der Ankunft:3. ☓
Nakayama 11R Daily Sports Award Nakayama Gold Cup (GIII) 16 Ike Dragon Tatsächliche Reihenfolge der Ankunft:15. ☓
Nakayama 12R Sarah 4 Jahre alt und unter 10 Millionen Yen 2 Omega Blue Hawaii Tatsächliche Reihenfolge der Ankunft:3. ☓
Kyoto 01R Sarah 3 Jahre alt, nicht gewonnen 8 Lorraine Cross Tatsächliche Reihenfolge der Ankunft:3. ☓
Kyoto 01R Sarah 3 Jahre alt, nicht gewonnen 4 Denkou Showin Tatsächliche Reihenfolge der Ankunft:15. ☓
Kyoto 04R Sarah 4 Jahre alt und unter 5 Millionen Yen 1 Mickey Chris S Tatsächliche Reihenfolge der Ankunft:8. ☓
Kyoto 05R Sarah 3 Jahre alt, nicht gewonnen 13 Tanino Tuxedo Tatsächliche Reihenfolge der Ankunft:8. ☓
Kyoto 06R Sarah 3 Jahre Shinma 11 Meishou Oniguma Tatsächliche Reihenfolge der Ankunft:8. ☓
Kyoto 07R Sarah 4 Jahre alt und unter 5 Millionen Yen 5 Western Musashi Tatsächliche Reihenfolge der Ankunft:8. ☓
Kyoto 07R Sarah 4 Jahre alt und unter 5 Millionen Yen 14 Soni Tatsächliche Reihenfolge der Ankunft:16. ☓
Kyoto 09R Fukujusou Special 12 Bewundern Sie Dubai Tatsächliche Reihenfolge der Ankunft:2. ☓
Kyoto 10R New Year Stakes 2 Taiki Percival Tatsächliche Reihenfolge der Ankunft:2. ☓
Kyoto 11R Sports Nippon Award Kyoto Gold Cup (GIII) 11 Sound of Heart Tatsächliche Reihenfolge der Ankunft:4. ☓
Kyoto 12R Sarah 4 Jahre alt und unter 10 Millionen Yen 2 Suzuka Jonburu Tatsächliche Reihenfolge der Ankunft:4. ☓
Nakayama 02R Sarah 3 Jahre alt, nicht gewonnen 9 Belmont Joey Tatsächliche Reihenfolge der Ankunft:7. ☓
Nakayama 03R Sarah 3 Jahre Shinma 8 Schlagkraft Tatsächliche Reihenfolge der Ankunft:7. ☓
Nakayama 05R Sarah 3 Jahre alt, nicht gewonnen 8 Ogonchacha Tatsächliche Reihenfolge der Ankunft:9. ☓
Nakayama 05R Sarah 3 Jahre alt, nicht gewonnen 9 Eaglemore Tatsächliche Reihenfolge der Ankunft:10. ☓
Nakayama 06R Sarah 3 Jahre Shinma 9 Macolon Tatsächliche Reihenfolge der Ankunft:8. ☓
Nakayama 07R Sarah 4 Jahre alt und unter 5 Millionen Yen 7 Torsen Airence Tatsächliche Reihenfolge der Ankunft:13. ☓
Nakayama 07R Sarah 4 Jahre alt und unter 5 Millionen Yen 14 Cosmo dictat Tatsächliche Reihenfolge der Ankunft:14. ☓
Nakayama 08R Sarah 4 Jahre alt und unter 10 Millionen Yen 4 Danon Schnaps Tatsächliche Reihenfolge der Ankunft:14. ☓
Nakayama 09R Kantake Award 12 Hikaru Pegasus Tatsächliche Reihenfolge der Ankunft:11. ☓
Nakayama 09R Kantake Award 4 Millionen Frische Tatsächliche Reihenfolge der Ankunft:12. ☓
Nakayama 10R First Fuji Stakes 6 Stella Rossa Tatsächliche Reihenfolge der Ankunft:1. ○
Nakayama 10R First Fuji Stakes 2 Full Accelerator Tatsächliche Reihenfolge der Ankunft:2. ☓
Nakayama 10R First Fuji Stakes 3 Maine Epona Tatsächliche Reihenfolge der Ankunft:11. ☓
Nakayama 11R January Stakes 5 Everest O Tatsächliche Reihenfolge der Ankunft:13. ☓
Nakayama 12R Sarah 4 Jahre alt und unter 10 Millionen Yen 7 Symbolischer Kardinal Tatsächliche Reihenfolge der Ankunft:13. ☓
Kyoto 02R Sarah 3 Jahre alt, nicht gewonnen 6 Bamboo Baggio Tatsächliche Reihenfolge der Ankunft:14. ☓
Kyoto 03R Sarah 3 Jahre alt, nicht gewonnen 3 Road Crosite Tatsächliche Reihenfolge der Ankunft:13. ☓
Kyoto 05R Sarah 3 Jahre Shinma 7 Bright Idea Tatsächliche Reihenfolge der Ankunft:6. ☓
Kyoto 05R Sarah 3 Jahre Shinma 3 Unshackled Tatsächliche Reihenfolge der Ankunft:7. ☓
Kyoto 06R Sarah 3 Jahre alt 5 Millionen Yen oder weniger 4 Makototan Hoiser Tatsächliche Reihenfolge der Ankunft:12. ☓
Kyoto 07R Sarah 4 Jahre alt und unter 5 Millionen Yen 9 Daisy Burrows Tatsächliche Reihenfolge der Ankunft:14. ☓
Kyoto 08R Sarah 4 Jahre alt und unter 10 Millionen Yen 14 Nangoku Universe Tatsächliche Reihenfolge der Ankunft:14. ☓
Kyoto 09R Hatsume Stakes 2 Takao Noboru Tatsächliche Reihenfolge der Ankunft:1. ○
Kyoto 09R Hatsume Stakes 7 Albaton Tatsächliche Reihenfolge der Ankunft:11. ☓
Kyoto 09R Hatsume Stakes 5 Mickey Ballard Tatsächliche Reihenfolge der Ankunft:12. ☓
Kyoto 10R Manyo Stakes 5 Fogetable Tatsächliche Reihenfolge der Ankunft:6. ☓
Kyoto 10R Manyo Stakes 4 Seika Presto Tatsächliche Reihenfolge der Ankunft:9. ☓
Kyoto 11R Daily Sports Award Shinzan-Denkmal (GIII) 16 Nach Belieben Tatsächliche Reihenfolge der Ankunft:6. ☓
Das ist alles für heute. Wir werden in Zukunft auch die Parameteroptimierungsmethode und die Datennormalisierungsmethode aktualisieren.
Der Grund für dieses Projekt war, dass mein Freund mich während des Mitte Oktober abgehaltenen Informationsverarbeitungstests kontaktierte und sagte: "Ich habe den Test möglicherweise nicht bestanden!".
Deshalb habe ich mich entschlossen, die Prüfungsfragen für das maschinelle Lernen im nächsten Jahr vorherzusagen, über die ich lange nachgedacht hatte.
Die für das Programm verwendete Bibliothek verwendete scicit-learn, das viele Informationen enthält. [Was ich getan habe] Ich habe die Probleme von GJ2013 bis GJ2016 kategorisiert und die Problemkategorien vorhergesagt, die nächstes Jahr auftreten werden.
Als ich es zum ersten Mal berührte, hatte ich das Gefühl, dass die Schwierigkeit des Programms gering war, aber ich war ratlos, als ich einen Algorithmus auswählte. (Ich weiß immer noch nicht, was richtig ist (lacht)) Ich habe einige nützliche Informationen gefunden, daher werde ich sie weitergeben.
Ich möchte die Probleme des Informationsverarbeitungstests vorhersagen und sofort überprüfen, aber ich kenne das Ergebnis nicht, da es bis zum nächsten Frühjahr keinen Test geben wird ... Da es ein solches Problem gab, entschied ich mich für SIVA, damit ich sofort Ergebnisse erzielen konnte.
Ich werde wieder schreiben! SIVA wird jederzeit live sein, also mag ich es! Bitte folgen Sie mir. [facebook] https://www.facebook.com/AIkeiba/ [Twitter] https://twitter.com/Siva_keiba
Recommended Posts