[PYTHON] Ableiten der MAP-Schätzung von HMM mit PyStruct

Maximale posteriore Wahrscheinlichkeitsschätzung von Markierungsreihen durch HMM unter Verwendung von PyStruct.

Vorbereitung


import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

from pystruct.inference import inference_dispatch

Die Daten sind wie folgt. Versuchen Sie die Ganzzahl und Glättung von Zeitreihendaten.

Daten


d = '17.2 19.7 21.6 21.3 22.1 20.5 16.3 18.4 21.0 16.1 17.5 18.5 18.4 18.3 16.0 21.2 18.8 24.3 23.3 20.5 16.9 22.4 20.1 24.5 24.2 22.7 19.6 23.6 23.3 24.6 25.0 24.3 22.2 22.7 19.5 20.5 17.3 17.2 22.0 20.9 21.5 22.3 24.0 22.4 20.2 15.7 20.4 16.3 17.7 14.3 18.4 16.6 13.9 15.2 14.8 15.0 11.5 13.4 13.5 17.0 15.0 17.5 12.3 11.8 14.5 12.4 12.9 15.8 13.8 11.4 6.5 5.9 7.2 5.6 4.6 7.5 8.9 6.6 3.9 5.7 7.3 6.1 6.8 3.1 2.6 7.9 5.2 2.0 4.0 3.4 5.7 8.1 4.7 5.4 5.9 3.6 2.9 5.7 2.1 1.6 2.3 2.4 1.2 4.2 4.2 2.4 5.6 2.5 3.0 6.1 4.9 7.1 5.0 7.2 5.2 5.1 10.4 8.3 6.9 6.8 7.8 4.2 8.0 3.2 7.9 5.9 9.5 6.4 9.2 11.7 11.6 15.5 16.7'
d = np.array([ float(c) for c in d.split()])

Erstellen Sie nun das HMM-Modell und führen Sie die Inferenz aus.

Lauf!


nClasses = 20 #Anzahl der diskreten Klassen. 20
p = 10 #Kosten, wenn die Klassen benachbarter Knoten unterschiedlich sind. (0 wenn gleich)

#Datenbegriff. Absoluter Wert der Differenz zum Etikett
unaries = np.array([ [ abs(i-j) for j in range(nClasses) ]  for i in d  ])

#Paarweiser Begriff. 0 für das gleiche Etikett, p für verschiedene
pairwise = np.array((np.ma.ones((nClasses, nClasses)) - np.eye(nClasses)) * p)

#Festlegen der Kante, die die Knoten verbindet. Da es sich um ein HMM handelt, ist es eindimensional.
edges = np.array([ [i, i+1] for i in range(unaries.shape[0]-1) ])


#Inferenzausführung. Da diese Funktion maximiert wird, fügen wir Unaryies und paarweise ein Minus hinzu.
res = inference_dispatch(-unaries, -pairwise, edges, inference_method='max-product')

#Handlung.
plt.plot(d, label="data")
plt.plot(res, label="result")
plt.legend()

Unknown.png

Recommended Posts

Ableiten der MAP-Schätzung von HMM mit PyStruct
Ableiten der MAP-Schätzung von HMM mit OpenGM
Wie man strukturiertes SVM von ChainCRF mit PyStruct lernt
So legen Sie Attribute mit Mock of Python fest
So implementieren Sie "named_scope" von RubyOnRails mit Django
So geben Sie die CSV eines mehrzeiligen Headers mit Pandas aus
Zusammenfassung, wie der Status mit mehreren Funktionen geteilt wird
So schätzen Sie die Kerneldichte
Wie aktualisiere ich mit SQLAlchemy?
Wie man mit Theano besetzt
Wie mit SQLAlchemy ändern?
So trennen Sie Zeichenfolgen mit ','
Wie man RDP auf Fedora31 macht
Wie lösche ich mit SQLAlchemy?
So zeigen Sie eine Liste der mit pyenv installierbaren Versionen an
So brechen Sie RT mit tweepy ab
So extrahieren Sie Funktionen von Zeitreihendaten mit PySpark Basics
Python: So verwenden Sie Async mit
[Rails] So zeigen Sie Google Map an
[Hugo] Zusammenfassung zum Hinzufügen von Seiten zu der mit Learn erstellten Site
Zusammenfassung der Verwendung von pandas.DataFrame.loc
So erhalten Sie die ID von Type2Tag NXP NTAG213 mit nfcpy
So verwenden Sie virtualenv mit PowerShell
So installieren Sie Python-Pip mit Ubuntu20.04LTS
Umgang mit unausgeglichenen Daten
Zusammenfassung der Verwendung von pyenv-virtualenv
Wie fange ich mit Scrapy an?
Erste Schritte mit Python
Wie fange ich mit Django an?
So überwachen Sie den Ausführungsstatus von sqlldr mit dem Befehl pv
Aufblasen von Daten (Datenerweiterung) mit PyTorch
Erklärt, wie TensorFlow 2.X mit der Implementierung von VGG16 / ResNet50 verwendet wird
Node.js: So töten Sie Nachkommen eines Prozesses, der von child_process.fork () gestartet wurde
So berechnen Sie das Datum mit Python
So installieren Sie den MySQL-Connector mit pip3
Zusammenfassung der Verwendung von csvkit
So verbinden Sie INNER mit SQL Alchemy
So installieren Sie Anaconda mit pyenv
[Bilderkennung] Lesen des Ergebnisses der automatischen Annotation mit VoTT
Umgang mit SSL-Fehlern beim Herstellen einer Verbindung zu S3 mit Python boto
Wie man mit verstümmelten Charakteren in json von Django REST Framework umgeht
Zusammenfassung zum Erstellen einer LAMP + Wordpress-Umgebung mit Sakura VPS
So führen Sie eine arithmetische Verarbeitung mit der Django-Vorlage durch
[Blender] So legen Sie shape_key mit dem Skript fest
[Python] Zusammenfassung der Verwendung von Pandas
Wie man mit matplotlib mehrere Figuren betitelt
Wie man lange Einschlüsse loswird
So fügen Sie ein Paket mit PyCharm hinzu
So überprüfen Sie die Version von Django
So installieren Sie CatBoost [Stand Januar 2020]
So installieren Sie DLIB mit aktiviertem 2020 / CUDA
Verwendung von ManyToManyField mit Djangos Admin
Verwendung von OpenVPN mit Ubuntu 18.04.3 LTS
So verhindern Sie Paketaktualisierungen mit apt
Berechnen Verwenden Sie% des Befehls df
Wie man Ass / Alembic mit HtoA benutzt
Umgang mit Enum-Kompatibilitätsfehlern