pykalman でカルマンフィルタを試す

Python でカルマンフィルタを勉強しようと思いましたが、Python-Control でどうやってカルマンフィルタを使えるのかわからなかったので、pykalman というパッケージを試してみました。

ここ の SciPy のドキュメントにカルマンフィルタの実装が載っていますが、pykalman を使えばもっとパラメトリックにカルマンフィルタを設計できそうです。

pykalman は pip でインストールできます。scipy 等を先にインストールしておく必要があります。
なお、Python3 でも問題なく使えます。

pip install pykalman

一番シンプルな使い方は以下のような感じです。パラメータ設定の仕方がよくわかっていないので、これから勉強していきます。

# coding: utf-8
import numpy as np
from matplotlib import pylab as plt
from pykalman import KalmanFilter

x = -0.37727
observations = np.random.normal(x, 0.1, size=50)

kf = KalmanFilter(transition_matrices=np.array([[1, 1], [0, 1]]),
		  transition_covariance=0.0000001*np.eye(2))

smoothed_states_pred = kf.em(observations).smooth(observations)[0]
filtered_states_pred = kf.em(observations).filter(observations)[0]

plt.figure(figsize=(12, 9))
plt.plot(observations, "-xc", label="observations")
plt.plot(smoothed_states_pred[:, 0], "b", label="smoothed")
plt.plot(filtered_states_pred[:, 0], "r", label="filtered")
plt.axhline(x, color="k", label="truth value")
plt.legend()
plt.show()

15071401.png

コメント

Comments powered by Disqus
書籍更新情報
2016-10-21
Pythonによる科学技術計算 基礎編
PDF版の販売を開始しました。
販売ページはこちら

2016-09-09
Pythonによる科学技術計算 基礎編
1.2版への更新が可能になりました。
サポートページはこちら
電子書籍
Pythonによる科学技術計算 基礎編
Kindle ストア、Leanpubで販売中です
Pythonによる科学技術計算 基礎編
PDF版の販売はこちら
同人誌
技術書典(2016/6/25)
Emacs/org-modeのPDF作成術
電子版をBOOTHで販売中です
Emacs/org-modeのPDF作成術
Share