[PYTHON] Ich habe den Code für Gibbs Sampling geschrieben

Es beschreibt fast den gleichen Inhalt (und die Erklärung ist einfach!) [[MH-Methode] Ich habe MCMC in Python [Gibbs-Sampler] geschrieben](http://www.fisproject.jp/2015/12/mcmc Ich habe einen Beispielcode für Gibbs-Sampling geschrieben, obwohl es -in-python /) gibt. (Obwohl es voller Neuerfindungen von Rädern ist (Tränen))

Warum ist es öffentlich?

Zu Beginn wird Python-Code veröffentlicht. Warum wird er veröffentlicht? Da MCMC sowohl in Kaninchen als auch in Ecken eine komplizierte Geschichte ist, hielt ich es für eine gute Idee zu glauben, dass es für Anfänger einen "Code gibt, der vorerst funktioniert".

Anstatt "Ich habe es geschrieben", war die Menge an Code, die ich geschrieben habe, überraschend kurz, und ich habe die Frustration: "Ich weiß nicht, was es ist, aber was ist es schließlich!" Wenn Sie noch ein wenig hinzufügen können, ...

Was ist MCMC?

Ich habe auch versucht, die [MCMC] meines Vorgängers zu organisieren. ](Http://qiita.com/shogiai/items/bab2b915df2b8dd6f6f2).

Diesmal wurde eine Verteilung generiert

Es ist eine zweidimensionale Normalverteilung: $ p(x,y)=\frac{1}{Z}\exp\big(-\frac{x^2-2bxy+y^2}{2}\big), Z=\frac{2\pi}{\sqrt{1-b^2}} $ Übereinstimmend mit den Variablen, die im folgenden Python-Code verwendet werden. $ Z $ ist eine Normalisierungskonstante.

Python-Code

##Vorbereitung
import seaborn as sns
import numpy as np
from scipy.stats import norm

##Konstanten, die die Korrelation der zweidimensionalen Normalverteilung bestimmen
b = 0.8
##Bestimmung der Stichprobengröße
N = 10000

##Eine Liste von Dingen, die abgetastet werden können
x = []
y = []

##Der Anfangspunkt ist wie folgt
x_init = 3.0
y_init = 9.0

##Zufällige Erzeugung nach einer zweidimensionalen Normalverteilung.
##Wo sich das Sonstige und das Nachher des for-Satzes bewegen, wie es allgemein genannt wird
for i in range(N):
    if i==0:
        x.append(x_init) ##Anfangspunkt(x-Koordinate)
        y.append(y_init) ##Anfangspunkt(y-Koordinate)
    else:
        x.append(norm(loc=y[i-1]*b, scale=1.0).rvs(size=1.0)[0]) #Fixieren Sie die y-Koordinate und setzen Sie die x-Koordinate auf N.(Mittelpunkt=Feste y-Koordinate,1)Wählen aus
        y.append(norm(loc=x[i]*b, scale=1.0).rvs(size=1.0)[0]) #Fixiere die x-Koordinate und setze die x-Koordinate auf N.(Mittelpunkt=Feste x-Koordinate,1)Wählen aus

%matplotlib inline ##Wenn Sie mit Jupyter Notebook zeichnen möchten, ist dies fantastisch!
sns.jointplot(np.array(x),np.array(y))

Unknown.png

Ein Wort, das sich auf den Anfangswert bezieht

Selbst wenn Sie den Anfangswert ändern, wird er schließlich zu einer stetigen Verteilung. Wenn Sie also nur die "stetige Verteilung" möchten, sollten Sie die Abtastung um den Anfangswert etwas später abschneiden. Dieses Mal lautete das Motto "Kaninchen sind geiler, einfacher Code!"

Reference

Recommended Posts

Ich habe den Code für Gibbs Sampling geschrieben
Ich habe den Code für die japanische Satzgenerierung mit DeZero geschrieben
Ich habe gerade das Originalmaterial für den Python-Beispielcode geschrieben
Ich habe versucht, den für TensorFlow geschriebenen Code nach Theano zu portieren
[Python] Ich habe versucht, marginalisiertes Gibbs-Sampling zu implementieren
Ich habe die Warteschlange in Python geschrieben
Ich habe den Stack in Python geschrieben
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Ich habe zum ersten Mal Tensorflow ausprobiert
Schriftliche Auswahlsortierung in C.
Ich habe einen Unit-Test für verschiedene Sprachen geschrieben
[Python-Anfänger] Ich habe die Artikel gesammelt, die ich geschrieben habe
Ich habe den Gleitflügel in der Schöpfung geschrieben.
Ich habe in der Bibliothek nach der Verwendung der Gracenote-API gesucht
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Ich habe nach Railway Kawayanagi aus den Daten gesucht
Irgendwie hat der Code, den ich geschrieben habe, funktioniert und ich war beeindruckt, also werde ich ihn veröffentlichen
Ich habe vorerst mit Floydhub gespielt
Ich habe zum ersten Mal versucht, Python zu programmieren.
[Python] Ich habe nach dem längsten Pokemon Shiritori gesucht
Ich habe Mind Meld zum ersten Mal ausprobiert
Code zum Überprüfen des Betriebs von Python Matplot lib
Eine Geschichte, von der ich sehr überzeugt war, als ich den Code für das Monty Hall-Problem schrieb und die Gewinnrate berechnete
[CodeIQ] Ich habe die Wahrscheinlichkeitsverteilung von Würfeln geschrieben (aus dem CodeIQ-Mathematikkurs für maschinelles Lernen [Wahrscheinlichkeitsverteilung]).
Was ich zum ersten Mal in Python bekommen habe
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
Ich habe ein automatisches Kitskript für OpenBlocks IoT geschrieben
Erstellen Sie unter Linux einen QR-Code für die URL
Ich habe Python zum ersten Mal mit Heroku ausprobiert
Zum ersten Mal habe ich etwas über Unix (Linux) gelernt.
Ich habe ein automatisches Installationsskript für Arch Linux geschrieben
Versuchen Sie vorerst, Arch Linux zu installieren.
Ich hatte das Gefühl, dass ich den Python-Code nach C ++ 98 portiert habe.
AI Gaming Ich habe es zum ersten Mal versucht
Ich habe nach dem Inhalt von CloudWatch Logs Agent gesucht
Ich habe versucht, den Beispielcode des Ansible-Moduls auszuführen
Ich habe dir geschrieben, dass du das Signal mit Go sehen sollst
Installierte die Retro-Game-Engine pyxel für Python auf dem Mac und startete den Beispielcode
Techniken zum Testen von Code?
Ich habe die Körner gezählt
[TensorFlow] Ich möchte die Indizierung für Ragged Tensor beherrschen
Ich war 2 Minuten lang süchtig nach Python-Debugger-PDF
Testcode, um auf der Seite nach defekten Links zu suchen
Ich habe das neueste automatische Testtool "Playwright for Python" berührt.
Ich möchte vorerst Selen bewegen [für Mac]
Ich habe vorerst versucht, PIFuHD unter Windows auszuführen
Praktisch für die Ausbildung von Neulingen? Ich habe einen Telnet-Übungsserver geschrieben
Ich habe die grundlegende Grammatik von Python in Jupyter Lab geschrieben
Ich habe ein Demo-Programm zur linearen Transformation einer Matrix geschrieben
Ich habe die Grundoperation von Seaborn im Jupyter Lab geschrieben
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
Ich habe es in der Sprache Go geschrieben, um das SOLID-Prinzip zu verstehen
Ich wusste nicht, wie ich die [Python] für die Anweisung verwenden sollte
Verschiedene Hinweise zur Verwendung von Python für Projekte
Ich habe die Grundoperation von Numpy im Jupyter Lab geschrieben.
Ich habe die Google Cloud Vision-API zum ersten Mal ausprobiert
Ich möchte den EDINET-Code und die Wertpapiernummer zuordnen
Ich habe die Grundoperation von matplotlib in Jupyter Lab geschrieben