私は時間ベースのスライディングウィンドウ(Pythonで)を実装しようとしています。つまり、データソースは新しいデータアイテムを挿入し、 、1hは自動的に削除されます。さらに、データソースがアイテムを挿入するレート、つまりレートの変化を測定する必要があります。時間ベースのスライディングウィンドウとデータ到着率の測定(変更)
私の質問は2倍です。まず、どのように時間ベースのウィンドウを実装するための最良の方法です。私の現在、おそらく素朴な解決策では、私は単純にPythonリストwindow = []
を使用します。新しいデータitem
の場合は、現在のタイムスタンプ:window.append((current_time, item))
で項目を追加します。これは動作しますが、これにより巧妙な解決策があるかどうか、私は疑問に思う、
threshold = int(time.time()*1000) - self.WINDOW_SIZE_IN_MS
while True:
try:
if window[0][0] < threshold:
del self.word_lists[0]
else:
break
except:
break
:次に、タイマー、I pop
ごとに1秒(タイムスタンプ-1H)、現在よりも古いタイムスタンプを持つすべての最初の要素を使用して。
さらに重要なことは、レートデータ項目の変化を測定する良い方法は、ウィンドウに入ることです。ここでは、どのようにこれにアプローチするか、少なくとも効率的に聞こえるものはありません。私は非常に素朴な何かを思いついた:私は5分ごとに20間隔で1時間窓を分割し、項目の数を数えます。最新の5分間隔が20間隔の平均よりも大幅に多い場合、私はバーストがあると言います。しかし、私はこれを1分ごとにしなければならないでしょう。これは効率的ではないと思われ、多くのパラメータがあります。
要するに、新しいアイテムが私のウィンドウに入る加速度を測定する必要があります。このためのベストプラクティスのアプローチはありますか?
毎分リストの 'len'を記録することができます。 1-diffを計算すると、毎分の変化率が得られます。 – James