[PYTHON] Maschinelles Lernen (TensorFlow) + Lotto 6

Es ist ein Stück, um zu versuchen, mithilfe von Deep Learning sogar die Anzahl der Lotterien 6 vorherzusagen. Natürlich gibt die Lotterie jedes Mal nur Zufallszahlen aus, daher sollte es nicht funktionieren, aber es scheint, dass einige Leute es ernsthaft erwarten, und ich habe den Code schnell geschrieben, anstatt ihn auf der Festplatte zu vergraben. Ich werde es veröffentlichen. Ich mache es nicht sehr ernst, daher ist die Erklärung auch angemessen. Bitte kommentieren Sie, wenn Sie Bedenken haben.

Ziel

Überblick

Ich habe mich gefragt, was ich eingeben soll, aber ich habe die Gewinnzahlen für die letzten 5 Male ausgewählt. Lotto 6 ist ein Mechanismus, bei dem 6 aus 43 Zahlen ausgewählt werden. Wenn alle 6 gewonnen sind, wird der erste Preis vergeben. Die Ausgabe beträgt also 43 Flags, wenn beispielsweise 1,3,4,11,20,43 die Gewinnzahl ist [1,0,1,1,0,0, ..... 0, Ich nahm an, eine Flagge wie 0,1 zu erwarten. (Genau genommen ist es etwas anders, weil es durch Softmax geht) Die Daten wurden durch Scraping von der Website der Mizuho Bank gesammelt. Es werden ungefähr 1000 Daten sein.

Umgebung

TensorFlow 0.7 Ubuntu 14.04 AWS EC2 microinstance

Implementierung

Es werden nur die Teile extrahiert, bei denen es sich wahrscheinlich um Punkte handelt.

Es gibt zwei versteckte Schichten und die Anzahl der Einheiten beträgt 1000 bzw. 500. Die Ausgabe ist 43.

def inference(x_ph, keep_prob):

    with tf.name_scope('hidden1'):
        weights = tf.Variable(tf.truncated_normal([data_num * NUM_CLASSES, NUM_HIDDEN1], stddev=stddev), name='weights')
        biases = tf.Variable(tf.zeros([NUM_HIDDEN1]), name='biases')
        hidden1 = tf.nn.relu(tf.matmul(x_ph, weights) + biases)

    with tf.name_scope('hidden2'):
        weights = tf.Variable(tf.truncated_normal([NUM_HIDDEN1, NUM_HIDDEN2], stddev=stddev), name='weights')
        biases = tf.Variable(tf.zeros([NUM_HIDDEN2]), name='biases')
        hidden2 = tf.nn.relu(tf.matmul(hidden1, weights) + biases)

    # DropOut
    dropout = tf.nn.dropout(hidden2, keep_prob)

    with tf.name_scope('softmax'):
        weights = tf.Variable(tf.truncated_normal([NUM_HIDDEN2, NUM_CLASSES], stddev=stddev), name='weights')
        biases = tf.Variable(tf.zeros([NUM_CLASSES]), name='biases')
        y = tf.nn.softmax(tf.matmul(dropout, weights) + biases)

    return y

Verlustberechnungsteil. Das richtige Antwortetikett (Ziel) ist ein Flag von 0 oder 1, aber da y durch Softmax kommt, ist es eine Trübung, die insgesamt 1 ergibt, und da die Skala nicht so übereinstimmt, wie sie ist, passiert das Ziel auch Softmax. ..

def loss(y, target):

    softmax_target = tf.nn.softmax(target)
    cross_entropy = tf.nn.softmax_cross_entropy_with_logits(y, softmax_target, name='xentropy')
    loss = tf.reduce_mean(cross_entropy, name='xentropy_mean')

    return loss

Ausbildung.

def training(sess, train_step, loss, x_train_array, y_train_array):

    summary_op = tf.merge_all_summaries()

    init = tf.initialize_all_variables()
    sess.run(init)

    summary_writer = tf.train.SummaryWriter(LOG_DIR, graph_def=sess.graph_def)

    for i in range(int(len(x_train_array) / bach_size)):
        batch_xs = getBachArray(x_train_array, i * bach_size, bach_size)
        batch_ys = getBachArray(y_train_array, i * bach_size, bach_size)
        sess.run(train_step, feed_dict={x_ph: batch_xs, y_ph: batch_ys, keep_prob: 0.8})
        ce = sess.run(loss, feed_dict={x_ph: batch_xs, y_ph: batch_ys, keep_prob: 1.0})

        summary_str = sess.run(summary_op, feed_dict={x_ph: batch_xs, y_ph: batch_ys, keep_prob: 1.0})
        summary_writer.add_summary(summary_str, i)

Ergebnis

Verlust loto.jpg Sie können sehen, dass es kein Chaos geworden ist (lacht) Ich habe gelernt, dass es so wäre, wenn ich nicht anders könnte.

Prognose

Ich weiß, dass es völlig nutzlos ist, aber lassen Sie es uns tatsächlich vorhersagen. Lassen Sie uns den 1046. anhand der Daten des 1045. bis 1041 vorhersagen. Die Eingabe sieht wie folgt aus

[[01,19,21,30,31,43],[03,07,16,26,34,39],[21,29,30,32,38,42],[04,10,11,12,18,25],[14,22,27,29,33,37]]

Das Ergebnis ist unten.

[6, 10, 12, 23, 27, 38]

Die tatsächlichen Gewinnzahlen sind [06, 13, 17, 18, 27, 43]. Ich treffe zwei. Übrigens kostet es 1.000 Yen, drei zu treffen. Ich bin mir nicht sicher, wie viele Treffer der Durchschnitt sind (ich weiß nicht, wie ich rechnen soll), aber lassen Sie uns die seltsamen Erwartungen wegwerfen.

Recommended Posts

Maschinelles Lernen (TensorFlow) + Lotto 6
Maschinelles Lernen
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Beispiel für maschinelles Lernen
TensorFlow Kochbuch zum maschinellen Lernen Kapitel 2 Persönlich verstopft
TensorFlow Kochbuch zum maschinellen Lernen Kapitel 3 Persönlich verstopft
Zusammenfassung des Lernprogramms für maschinelles Lernen
Eine Geschichte über einfaches maschinelles Lernen mit TensorFlow
Maschinelles Lernen Über Overlearning
TensorFlow Machine Learning Cookbook Kapitel 6 (oder besser gesagt die dritte Zeile), in dem ich persönlich feststeckte
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Maschinelles Lernen: Betreut --AdaBoost
Logistische Regression beim maschinellen Lernen
Maschinelles Lernen studieren ~ matplotlib ~
Lineare Regression des maschinellen Lernens
Memo zum Kurs für maschinelles Lernen
Bibliothek für maschinelles Lernen dlib
Lerne irgendwie maschinelles Lernen
Bibliothek für maschinelles Lernen Shogun
Maschinelles Lernen Kaninchen Herausforderung
Installieren Sie die Bibliothek für maschinelles Lernen TensorFlow auf fedora23
Einführung in das maschinelle Lernen
Maschinelles Lernen: k-Nächste Nachbarn
Was ist maschinelles Lernen?
Installation von TensorFlow, einer Bibliothek für maschinelles Lernen von Google
Modell des maschinellen Lernens unter Berücksichtigung der Wartbarkeit
Maschinelles Lernen mit Pokemon gelernt
Datensatz für maschinelles Lernen
Japanische Vorverarbeitung für maschinelles Lernen
Versuchen Sie es mit TensorFlow
Maschinelles Lernen in Delemas (Praxis)
Eine Einführung in das maschinelle Lernen
Techniken im Zusammenhang mit maschinellem Lernen / Klassifizierung
Maschinelles Lernen: Überwacht - Lineare Regression
Grundlagen des maschinellen Lernens (Denkmal)
Anfänger des maschinellen Lernens versuchten RBM
[Maschinelles Lernen] Zufällige Gesamtstruktur verstehen
Maschinelles Lernen mit Python! Vorbereitung
Lernressourcen-Lernblock für maschinelles Lernen
Maschinelles Lernen ② Naive Bayes Zusammenfassung
Verstehe maschinelles Lernen ~ Ridge Regression ~.
Super-Resolution-Technologie-SRCNN-I hat versucht, sie zu implementieren (Tensorflow 2.0) Lernphase
Zusammenfassung der Artikel zum maschinellen Lernen (selbst verfasst)
Über maschinelles Lernen gemischte Matrix
Maschinelles Lernen: Überwacht - Zufälliger Wald
Praktisches Memo zum maschinellen Lernsystem
Maschinelles Lernen Minesweeper mit PyTorch
Erstellen Sie eine maschinelle Lernumgebung
Python Machine Learning Programming> Schlüsselwörter
Algorithmus für maschinelles Lernen (einfaches Perzeptron)
Wird in EDA für maschinelles Lernen verwendet
Bedeutung von Datensätzen für maschinelles Lernen
Maschinelles Lernen und mathematische Optimierung
Maschinelles Lernen: Überwacht - Support Vector Machine
Überwachtes maschinelles Lernen (Klassifikation / Regression)
Ich habe versucht, die Extreme-Lernmaschine zu implementieren
Beginnend mit maschinellem Python-Lernen
Algorithmus für maschinelles Lernen (Support Vector Machine)
Super Einführung in das maschinelle Lernen