Для установки pykalman я использовал:
pip install pykalman --user
Флаг --user устанавливается в мой домашний каталог, избегая необходимости использовать sudo для установки. Мне сказали, что Сципи отсутствует, поэтому я установил и Пипа. На странице github проекта есть список зависимых библиотек, поэтому вас могут попросить установить любую из них.
Вы используете отдельные значения для каждого из ваших показаний. Большинство примеров имеют больше, чем, например, положение и скорость для каждого чтения. Чтобы получить что-то для построения графиков перехода и наблюдения, которые вы предоставили, я добавил второе фиктивное значение «1» к каждому из ваших измерений. Следующий скрипт ноутбука Jupyter создаст график, но результат будет плохим, так как значения матриц необходимо скорректировать для вашего набора данных.
%matplotlib inline
from pykalman import KalmanFilter
import numpy as np
kf = KalmanFilter(transition_matrices = [[1, 1], [0, 1]],
observation_matrices = [[0.1, 0.5], [-0.3, 0.0]])
# measurements = np.asarray([(250.1),(248.5),(262.3),(265.3), (270.2)])
measurements = np.array([[250.1,1],[248.5,1],[262.3,1],[265.3,1], [270.2,1]])
kf = kf.em(measurements, n_iter=5)
filtered_state_estimates = kf.filter(measurements)[0]
(smoothed_state_estimates, smoothed_state_covariances)=kf.smooth(measurements)
# draw estimates
pl.figure()
lines_true = pl.plot(measurements, color='b')
lines_filt = pl.plot(filtered_state_estimates, color='r')
lines_smooth = pl.plot(smoothed_state_estimates, color='g')
pl.legend((lines_true[0], lines_filt[0], lines_smooth[0]),
('true', 'filt', 'smooth'),
loc='lower right'
)
pl.show()
Для предлагаемого набора данных быстрым и простым способом создания отфильтрованного вывода будет использование альфа-фильтра с одним минусом. Посмотрите на эту ссылку для более подробной информации об этом типе фильтра:
http://stats.stackexchange.com/questions/44650/a-simpler-way-to-calculate-exponentially-weighted-moving-average