[PYTHON] Apprentissage automatique (TensorFlow) + Lotto 6

C'est un jeu pour essayer de prédire même le nombre de loterie 6 en utilisant le deep learning. Bien sûr, la loterie ne donne que des nombres aléatoires à chaque fois, donc cela ne devrait pas fonctionner, mais il semble que certaines personnes s'y attendent sérieusement, et j'ai écrit le code rapidement, donc plutôt que de l'enterrer dans le disque dur. Je vais le publier. Je ne le fais pas très au sérieux, donc l'explication est également appropriée. Veuillez commenter si vous avez des inquiétudes.

Cible

Aperçu

Je me demandais quoi entrer, mais j'ai choisi les numéros gagnants pour les 5 dernières fois. Le Lotto 6 est un mécanisme où 6 sont sélectionnés parmi 43 numéros, et si les 6 sont gagnés, le premier prix est donné. Ainsi, la sortie est de 43 indicateurs, par exemple, si 1,3,4,11,20,43 est le numéro gagnant, [1,0,1,1,0,0, ..... 0, J'ai supposé m'attendre à un drapeau comme 0,1]. (Strictement parlant, c'est un peu différent car ça passe par Softmax) Les données ont été collectées par grattage du site Web de Mizuho Bank. Ce sera environ 1000 données.

environnement

TensorFlow 0.7 Ubuntu 14.04 AWS EC2 microinstance

la mise en oeuvre

Seules les parties susceptibles d'être des points sont extraites.

Il y a deux couches cachées et le nombre d'unités est de 1000 et 500, respectivement. La sortie est 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

Partie de calcul des pertes. L'étiquette de réponse correcte (cible) est un indicateur de 0 ou 1, mais comme y passe par softmax, c'est un brouillard qui ajoute jusqu'à 1 dans son ensemble, et comme l'échelle ne correspond pas telle qu'elle est, la cible passe également par 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

Entraînement.

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)

résultat

perte loto.jpg Vous pouvez voir que ce n'est pas devenu un gâchis (rires) J'ai appris que ce serait comme ça si je ne pouvais pas m'en empêcher.

Prévoir

Je sais que c'est totalement inutile, mais prévoyons-le. Prédisons le 1046e en utilisant les données du 1045e au 1041e. L'entrée ressemble à ce qui suit

[[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]]

Le résultat est ci-dessous.

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

Les numéros gagnants réels sont [06, 13, 17, 18, 27, 43]. J'en frappe deux. Au fait, il en coûte 1000 yens pour en atteindre trois. Je ne sais pas combien de hits sont la moyenne (je ne sais pas comment calculer), mais jetons les attentes étranges.

Recommended Posts

Apprentissage automatique (TensorFlow) + Lotto 6
Apprentissage automatique
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Exemple d'apprentissage automatique
TensorFlow Machine Learning Cookbook Chapitre 2 Personnellement bouché
TensorFlow Machine Learning Cookbook Chapitre 3 Personnellement bouché
Résumé du didacticiel d'apprentissage automatique
Une histoire sur l'apprentissage automatique simple avec TensorFlow
Apprentissage automatique sur le surapprentissage
TensorFlow Machine Learning Cookbook Chapitre 6 (ou plutôt, la troisième ligne) où je suis personnellement resté coincé
Apprentissage automatique ⑤ Résumé AdaBoost
Apprentissage automatique: supervisé - AdaBoost
Régression logistique d'apprentissage automatique
Étudier l'apprentissage automatique ~ matplotlib ~
Régression linéaire d'apprentissage automatique
Mémo du cours d'apprentissage automatique
Bibliothèque d'apprentissage automatique dlib
Apprenez en quelque sorte le machine learning
Bibliothèque d'apprentissage automatique Shogun
Défi de lapin d'apprentissage automatique
Installez la bibliothèque d'apprentissage automatique TensorFlow sur fedora23
Introduction à l'apprentissage automatique
Apprentissage automatique: k-voisins les plus proches
Qu'est-ce que l'apprentissage automatique?
Installation de TensorFlow, une bibliothèque d'apprentissage automatique de Google
Modèle d'apprentissage automatique prenant en compte la maintenabilité
L'apprentissage automatique appris avec Pokemon
Ensemble de données pour l'apprentissage automatique
Prétraitement japonais pour l'apprentissage automatique
Essayez l'apprentissage en profondeur avec TensorFlow
Apprentissage automatique dans Delemas (s'entraîner)
Une introduction à l'apprentissage automatique
Techniques liées à l'apprentissage automatique / à la classification
Machine Learning: Supervision - Régression linéaire
Bases de l'apprentissage automatique (mémoire)
Un débutant en apprentissage automatique a essayé la RBM
[Apprentissage automatique] Comprendre la forêt aléatoire
Apprentissage automatique avec Python! Préparation
Bloc-notes de ressources d'étude d'apprentissage automatique
Apprentissage automatique ② Résumé Naive Bayes
Comprendre l'apprentissage automatique ~ régression de crête ~.
Technologie de super-résolution-SRCNN-J'ai essayé de l'implémenter (Tensorflow 2.0) Phase d'apprentissage
Résumé de l'article sur l'apprentissage automatique (auto-écrit)
À propos de la matrice mixte d'apprentissage automatique
Apprentissage automatique: forêt supervisée - aléatoire
Mémo pratique du système d'apprentissage automatique
Démineur d'apprentissage automatique avec PyTorch
Créer un environnement d'apprentissage automatique
Programmation Python Machine Learning> Mots-clés
Algorithme d'apprentissage automatique (perceptron simple)
Utilisé en EDA pour l'apprentissage automatique
Importance des ensembles de données d'apprentissage automatique
Apprentissage automatique et optimisation mathématique
Machine Learning: Supervisé - Support Vector Machine
Machine learning supervisé (classification / régression)
J'ai essayé d'implémenter Extreme Learning Machine
Commencer avec l'apprentissage automatique Python
Algorithme d'apprentissage automatique (machine vectorielle de support)
Super introduction à l'apprentissage automatique