[PYTHON] [CodeIQ] Ich habe die Wahrscheinlichkeitsverteilung von Würfeln geschrieben (aus dem CodeIQ-Mathematikkurs für maschinelles Lernen [Wahrscheinlichkeitsverteilung]).

Einführung

Dieser Eintrag stammt aus CodeIQs Lernen Sie durch Programmieren mit Ayaka Ikezawa! Mathematikkurs für maschinelles Lernen [Wahrscheinlichkeitsverteilung] Ich konnte den Code im Artikel über die Wahrscheinlichkeitsverteilung von Würfeln in der zweiten Hälfte nicht verstehen. Es ist also eine Erinnerung, als ich den Code erstellt habe, soweit ich verstehen kann.

Da Python ein Anfänger ist, kann es einige seltsame Schreibstile geben.

Umgebung

Python 2.7.10

Formales Verständnis der Wahrscheinlichkeitsverteilung von Würfeln

offiziell

math-1.jpg

Aufgabe

Q. Ermitteln Sie die Wahrscheinlichkeitsverteilung, wie oft die Würfel fünfmal geworfen werden. Die Wahrscheinlichkeitsverteilung ist eine Liste von Wahrscheinlichkeiten.

Die Formel für die Wahrscheinlichkeitsverteilung von Würfeln ist die obige Formel. Die offizielle Erklärung und Wahrscheinlichkeitsverteilung sind im Artikel ausführlich beschrieben, daher werde ich hier die Informationen schreiben, die zur Erstellung des Codes erforderlich sind.

N → Da es sich um die Anzahl der Versuche handelt, besteht die Aufgabe darin, "5 Mal zu würfeln", also N = 5

N! → 5. Stock. Verwenden Sie die Fakultätsmethode der Mathematikbibliothek

k1 k2 k3 k4 k5 k6 → Wenn Sie die Würfel N-mal werfen, wird die Kombination aus der Häufigkeit, mit der jeder Würfel gewürfelt wird, berechnet Zum Beispiel, wenn Sie es 5 Mal werfen

Wenn 1 alle 5 Male gegeben wird, ist k1 = 5 k2 = 0 k3 = 0 k4 = 0 k5 = 0 k6 = 0 Wenn alle bis auf 6 von 5 einmal erscheinen, ist k1 = 1 k2 = 1 k3 = 1 k4 = 1 k5 = 1 k6 = 0

Es wird sein. In der Wahrscheinlichkeitsverteilung finden wir die Wahrscheinlichkeit für jede Kombination (Verständnis).

Finden Sie die Wahrscheinlichkeitsverteilung

Finden Sie zuerst die Kombination der Ergebnisse heraus, wenn Sie die Würfel 5 Mal werfen.

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

Da es schwierig ist, den Code unter Berücksichtigung zu schreiben, werde ich alle Kombinationen von k1 bis k6 ausgeben, sobald alle kX 0 bis 5 sind

Zum Beispiel so

#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

Alle Kombinationen werden mit der rekursiven Funktion (create_pattern (k, list)) im folgenden Code erstellt. Danach werden nur die Kombinationen, bei denen die Summe von k1 bis k6 5 ist, und die Wahrscheinlichkeit gemäß der Formel berechnet.

python


#!/usr/bin/env python
import math 

#Machen Sie alle Kombinationen mit rekursiven Funktionen
#Bilden Sie eine Kombination von Bindestrichtrennzeichen
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)


#Häufigkeit, mit der ein Würfel geworfen wird
n = 5

all_pattern_str_list = create_pattern(1, [])

#Teilen Sie die durch Bindestriche getrennten Kombinationen auf und berechnen Sie die Wahrscheinlichkeit nur für Kombinationen mit insgesamt 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

    #Offizieller Nenner(k1!k2!k3!k4!k5!k6!)Berechnung
    denom = 1
    for p in pattern_list:
      denom = denom * math.factorial(p)

    #Berechnung der Wahrscheinlichkeit
    print (math.factorial(n) / denom) * (1.0 / 6.0 ** n)

Zusammenfassung

Wie Sie im Artikel sehen können, hat das Ablegen im Code das Verständnis der Mathematik erleichtert.

Recommended Posts

[CodeIQ] Ich habe die Wahrscheinlichkeitsverteilung von Würfeln geschrieben (aus dem CodeIQ-Mathematikkurs für maschinelles Lernen [Wahrscheinlichkeitsverteilung]).
Ich habe versucht, die Vorhersage-API des maschinellen Lernmodells von WordPress aus aufzurufen
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Ich habe die Methode des maschinellen Lernens und ihre Implementierungssprache anhand der Tag-Informationen von Qiita betrachtet
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
Beachten Sie, dass ich den Algorithmus des maschinell lernenden Naive Bayes-Klassifikators verstehe. Und ich habe es in Python geschrieben.
Python-Lernnotiz für maschinelles Lernen von Chainer bis zum Ende von Kapitel 2
Notizen vom Anfang von Python 1 lernen
Ich habe den Code für Gibbs Sampling geschrieben
Notizen vom Anfang von Python 2 lernen
Ich habe versucht, die Beziehung zwischen Wahrscheinlichkeitsverteilungen ausgehend von der Bernoulli-Verteilung zusammenzufassen
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Rückblick auf den Wettbewerb für maschinelles Lernen, an dem ich zum ersten Mal gearbeitet habe
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
Richten Sie die Anzahl der Stichproben zwischen Datenklassen für maschinelles Lernen mit Python aus
GTUG Girls + PyLadiesTokyo Meetup Ich ging zum ersten maschinellen Lernen
Die Geschichte, dass die Lernkosten von Python niedrig sind
Maschinelles Lernen ab 0 für theoretische Physikstudenten # 1
Ich habe nach Railway Kawayanagi aus den Daten gesucht
Besiege die Wahrscheinlichkeitsdichtefunktion der Normalverteilung
Überblick über maschinelle Lerntechniken, die aus Scikit-Learn gelernt wurden
Über die Entwicklungsinhalte des maschinellen Lernens (Beispiel)
Maschinelles Lernen ab 0 für theoretische Physikstudenten # 2
Der erste Schritt des maschinellen Lernens ~ Für diejenigen, die versuchen möchten, mit Python zu implementieren ~
[Deep Learning von Grund auf neu] Ich habe die Affine-Ebene implementiert
[Empfohlenes Tagging beim maschinellen Lernen # 2] Erweiterung des Scraping-Skripts
[Empfohlenes Tagging beim maschinellen Lernen # 2.5] Änderung des Scraping-Skripts
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
Eindrücke vom Udacity Machine Learning Engineer Nano-Abschluss
Python-Lernnotiz für maschinelles Lernen von Chainer aus Kapitel 2
Installation von TensorFlow, einer Bibliothek für maschinelles Lernen von Google
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Techniken zum Verständnis der Grundlagen von Deep-Learning-Entscheidungen
Prognostizieren Sie das Geschlecht von Twitter-Nutzern durch maschinelles Lernen
Othello ~ Aus der dritten Zeile von "Implementation Deep Learning" (4) [Ende]
[Python] Ich habe einen Klassifikator für Iris erstellt [Maschinelles Lernen]
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Lernmethode zum Lernen von maschinellem Lernen von Grund auf neu (Version März 2020)
Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras
Pip die maschinelle Lernbibliothek von einem Ende (Ubuntu)
Ich untersuchte den stärkenden Lernalgorithmus des Algorithmushandels
Überprüfen Sie die atrophische Natur der Wahrscheinlichkeitsverteilung in Python
Ich habe nach dem Inhalt von CloudWatch Logs Agent gesucht
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Aufbau einer Umgebung für maschinelles Lernen von Grund auf neu (Windows 10 + Anaconda + VSCode + Tensorflow + GPU-Version)
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (5).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (16).
Ich habe versucht, die Genauigkeit von Modellen für maschinelles Lernen mit Kaggle als Thema zu vergleichen.
Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (10).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (2).
Ein Beispiel für einen Mechanismus, der eine Vorhersage von HTTP aus dem Ergebnis des maschinellen Lernens zurückgibt
[Für Anfänger] Ich möchte die Anzahl der Lernerfahrungen leicht verständlich erklären.
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (13).
So ermitteln Sie die durchschnittliche Informationsmenge (Entropie) der ursprünglichen Wahrscheinlichkeitsverteilung aus der Stichprobe
Ich habe versucht, die Yin- und Yang-Klassifikation hololiver Mitglieder durch maschinelles Lernen zu überprüfen
Ich habe mit Docker eine API erstellt, die den vorhergesagten Wert des maschinellen Lernmodells zurückgibt
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (9).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (4).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (12).