17

私はPythonで時系列に取り組んでいます。私が便利で有望だと思ったライブラリは

  • パンダ;
  • statsmodel (ARIMA 用);
  • 単純な指数平滑法は pandas から提供されます。

視覚化用にも: matplotlib

指数平滑化のためのライブラリを知っている人はいますか?

4

3 に答える 3

24

Pandas には、指数関数的に重み付けされた移動モーメント関数があります

http://pandas.pydata.org/pandas-docs/dev/computation.html?highlight=exponential#exponentially-weighted-moment-functions

ちなみに、scikits.timeseries パッケージには、pandas にもない機能が残っていてはなりません。

編集:これはまだよくある質問であるため、ここで統計モデルにさらに完全な機能を備えた指数平滑化を追加するための進行中のプルリクエストがあります

于 2012-10-04T13:04:01.953 に答える
8

どういうわけか、いくつかの質問がマージまたは削除されたので、ここに回答を投稿します。

Python ネイティブでの Exp 平滑化。

'''
simple exponential smoothing
go back to last N values
y_t = a * y_t + a * (1-a)^1 * y_t-1 + a * (1-a)^2 * y_t-2 + ... + a*(1-a)^n * y_t-n
'''
from random import random,randint

def gen_weights(a,N):
    ws = list()
    for i in range(N):
        w = a * ((1-a)**i)
        ws.append(w)
    return ws

def weighted(data,ws):
    wt = list()
    for i,x in enumerate(data):
        wt.append(x*ws[i])
    return wt

N = 10
a = 0.5
ws = gen_weights(a,N)
data = [randint(0,100) for r in xrange(N)]
weighted_data = weighted(data,ws)
print 'data: ',data
print 'weights: ',ws
print 'weighted data: ',weighted_data
print 'weighted avg: ',sum(weighted_data)
于 2012-10-25T14:05:14.860 に答える