[PYTHON] [CodeIQ] J'ai écrit la distribution de probabilité des dés (du cours de mathématiques CodeIQ pour l'apprentissage automatique [Distribution de probabilités])

introduction

Cette entrée est de CodeIQ's Apprenez en programmant avec Ayaka Ikezawa! Cours de mathématiques pour l'apprentissage automatique [Distribution de probabilité] Je n'ai pas pu comprendre le code de l'article sur la distribution de probabilité des dés dans la seconde moitié. Donc, c'est un rappel quand j'ai fait le code pour autant que je puisse comprendre.

Puisque python est un débutant, il peut y avoir des styles d'écriture étranges.

environnement

Python 2.7.10

Compréhension formelle de la distribution de probabilité des dés

officiel

math-1.jpg

Tâche

Q. Trouvez la distribution de probabilité du nombre de fois où les dés sont lancés 5 fois. La distribution de probabilité est une liste de probabilités.

La formule de la distribution de probabilité des dés est la formule ci-dessus. L'explication officielle et la distribution de probabilité sont décrites en détail dans l'article, alors j'écrirai ici les informations nécessaires pour créer le code.

N → Puisqu'il s'agit du nombre d'essais, la tâche est de "lancer les dés 5 fois", donc N = 5

N! → 5ème étage. Utilisez la méthode factorielle de la bibliothèque mathématique

k1 k2 k3 k4 k5 k6 → Lorsque vous lancez les dés N fois, la combinaison du nombre de lancers de chaque dé Par exemple, si vous le lancez 5 fois

Si 1 est donné toutes les 5 fois, k1 = 5 k2 = 0 k3 = 0 k4 = 0 k5 = 0 k6 = 0 Si tous sauf 6 sur 5 apparaissent une fois, k1 = 1 k2 = 1 k3 = 1 k4 = 1 k5 = 1 k6 = 0

Ce sera. Dans la distribution de probabilité, nous trouverons la probabilité pour chaque combinaison (compréhension).

Trouvez la distribution de probabilité

Tout d'abord, découvrez la combinaison des résultats lorsque vous lancez les dés 5 fois.

Lorsque k1 = 5 k2 = 0 k3 = 0 k4 = 0 k5 = 0 k6 = 0 Lorsque k1 = 4 k2 = 1 k3 = 0 k4 = 0 k5 = 0 k6 = 0 Lorsque k1 = 4 k2 = 0 k3 = 1 k4 = 0 k5 = 0 k6 = 0 ,,,

Puisqu'il est difficile d'écrire le code compte tenu, je vais afficher toutes les combinaisons de k1 à k6 une fois que kX est tout de 0 à 5

Par exemple, comme ça

#k1-k2-k3-k4-k5-k6
0-0-0-0-0-5
0-0-0-0-1-4
0-0-0-0-2-3
...
5-5-5-5-5-3
5-5-5-5-5-4
5-5-5-5-5-5

Toutes les combinaisons sont créées avec la fonction récursive (create_pattern (k, list)) dans le code ci-dessous. Après cela, seules les combinaisons pour lesquelles le total de k1 à k6 est de 5, et la probabilité est calculée selon la formule.

python


#!/usr/bin/env python
import math 

#Faire toutes les combinaisons avec des fonctions récursives
#Faire une combinaison de séparateurs de tirets
def create_pattern(k, list):
  if k ==  1:
     for i in xrange(0, 6):
      list.append(str(i))
  else:
    new_list = []
    for pattern in list:
      for j in xrange(0, 6):
        new_list.append(pattern + '-' + str(j))

    list = new_list

  if k == 6:
    return list
  else:
    k = k + 1
    return create_pattern(k, list)


#Nombre de fois pour lancer un dé
n = 5

all_pattern_str_list = create_pattern(1, [])

#Décomposez les combinaisons séparées par des tirets et calculez la probabilité uniquement pour les combinaisons avec un total de 5.
for all_pattern_str in all_pattern_str_list:
  tmp_list = all_pattern_str.split('-')

  pattern_sum = 0
  pattern_list = []
  for tmp_str in tmp_list:
    pattern_list.append(int(tmp_str))

  if sum(pattern_list) == 5:
    print pattern_list

    #Dénominateur officiel(k1!k2!k3!k4!k5!k6!)Calculer
    denom = 1
    for p in pattern_list:
      denom = denom * math.factorial(p)

    #Calcul de la probabilité
    print (math.factorial(n) / denom) * (1.0 / 6.0 ** n)

Résumé

Comme vous pouvez le voir dans l'article, le déposer dans le code a facilité la compréhension des mathématiques.

Recommended Posts

[CodeIQ] J'ai écrit la distribution de probabilité des dés (du cours de mathématiques CodeIQ pour l'apprentissage automatique [Distribution de probabilités])
J'ai essayé d'appeler l'API de prédiction du modèle d'apprentissage automatique de WordPress
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
J'ai considéré la méthode d'apprentissage automatique et son langage d'implémentation à partir des informations de balise de Qiita
Comment utiliser l'apprentissage automatique pour le travail? 01_ Comprendre l'objectif de l'apprentissage automatique
Notez que je comprends l'algorithme du classificateur Naive Bayes. Et je l'ai écrit en Python.
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer jusqu'à la fin du chapitre 2
Notes d'apprentissage depuis le début de Python 1
J'ai écrit le code pour l'échantillonnage Gibbs
Notes d'apprentissage depuis le début de Python 2
J'ai essayé de résumer la relation entre les distributions de probabilité à partir de la distribution de Bernoulli
J'ai essayé de prédire la présence ou l'absence de neige par apprentissage automatique.
Retour sur le concours d'apprentissage automatique sur lequel j'ai travaillé pour la première fois
J'ai essayé de prédire l'évolution de la quantité de neige pendant 2 ans par apprentissage automatique
J'ai essayé de traiter et de transformer l'image et d'élargir les données pour l'apprentissage automatique
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
GTUG Girls + PyLadiesTokyo Meetup Je suis allé au premier machine learning
L'histoire selon laquelle le coût d'apprentissage de Python est faible
Apprentissage automatique à partir de 0 pour les étudiants en physique théorique # 1
J'ai recherché Railway Kawayanagi à partir des données
Battre la fonction de densité de probabilité de la distribution normale
Vue d'ensemble des techniques d'apprentissage automatique apprises grâce à scikit-learn
À propos du contenu de développement de l'apprentissage automatique (exemple)
Apprentissage automatique à partir de 0 pour les étudiants en physique théorique # 2
La première étape de l'apprentissage automatique ~ Pour ceux qui veulent essayer l'implémentation avec python ~
[Deep Learning from scratch] J'ai implémenté la couche Affine
[Balisage recommandé dans le machine learning # 2] Extension du script de scraping
[Balisage recommandé dans le machine learning # 2.5] Modification du script de scraping
J'ai essayé le tutoriel MNIST de tensorflow pour les débutants.
Impressions d'avoir obtenu le nano-diplôme Udacity Machine Learning Engineer
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer du chapitre 2
Installation de TensorFlow, une bibliothèque d'apprentissage automatique de Google
À propos des tests dans la mise en œuvre de modèles d'apprentissage automatique
Techniques pour comprendre la base des décisions d'apprentissage en profondeur
Prédire le sexe des utilisateurs de Twitter grâce à l'apprentissage automatique
Othello ~ De la troisième ligne de "Implementation Deep Learning" (4) [Fin]
[Python] J'ai créé un classificateur pour les iris [Machine learning]
Résumé du flux de base de l'apprentissage automatique avec Python
Méthode d'étude pour apprendre le machine learning à partir de zéro (version mars 2020)
Bilan du premier défi du machine learning avec Keras
Pip la bibliothèque d'apprentissage automatique à partir d'une extrémité (Ubuntu)
J'ai étudié l'algorithme d'apprentissage de renforcement du trading d'algorithmes
Vérifiez la nature atrophique de la distribution de probabilité en Python
J'ai recherché le contenu de l'agent CloudWatch Logs
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
Création d'un environnement d'apprentissage automatique à partir de zéro (version windows10 + Anaconda + VSCode + Tensorflow + GPU)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en créant le script Python faisant partie du devoir (5)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (16)
J'ai essayé de comparer la précision des modèles d'apprentissage automatique en utilisant kaggle comme thème.
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (10)
Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python à la tâche (2)
Un exemple de mécanisme qui renvoie une prédiction par HTTP à partir du résultat de l'apprentissage automatique
[Pour les débutants] Je souhaite expliquer le nombre d’apprentissage d’une manière facile à comprendre.
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (13)
Comment trouver la quantité moyenne d'informations (entropie) de la distribution de probabilité d'origine à partir de l'échantillon
J'ai essayé de vérifier la classification yin et yang des membres hololive par apprentissage automatique
J'ai créé une API avec Docker qui renvoie la valeur prédite du modèle d'apprentissage automatique
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (9)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (4)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (12)