問題タブ [dtw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
869 参照

python - Python リストでのメモリ エラーの問題を回避するか、Numpy でより賢い方法を使用する

それぞれ13から24の観測値を持つ150,000の時系列を調べるDTW距離行列を計算しようとしています-つまり、生成された距離行列は約(150,000 x 150,000)/2 = 11,250,000,000のサイズのリストになります。

これを 200GB のサイズのビッグ データ クラスターで実行していますが、メモリ エラーが発生しています。

私はdtaidisatanceライブラリを使用しており、時系列全体を一度にリストに渡すことができるdistance_matrix_fast関数を使用しましたが、同様のメモリエラーが発生しましたが、パッケージから出てきました。ただし、実行するとすぐにエラーがスローされました。パッケージのブロック機能も使ったのですが、そもそも時系列を一気に取り込めないようです。

そこで、ループを実行して時系列の 2 つのペアごとの距離を計算し、それをリストに追加することにしました。ただし、長時間実行した後、次のように同じメモリエラーが再び発生します。

ファイル「/root/anaconda2/test/final_clustering_2.py」、93 行目、distance_matrix_scaled.append(dtw.distance_fast(Series_scaled[i], Series_scaled[j])) の MemoryError

これは以下の私のコードです:

このメモリ エラーが発生する理由を教えてください。これはpythonリストの制限ですか、それとも私のクラスタサイズですか? この問題をナビゲートするために使用できるnumpyの巧妙な方法または形式はありますか?