非常に大きなPythonオブジェクトをロードするアプリケーションがあります。それらはシリアル化されたscikit-learn分類子とそれに関連する語彙です。
分類子は十分に大きいため(1〜100 MBのオーダー)、メモリにロードするのは簡単な作業ではありません。実際の読み取りは高速ですが、ピッキング解除には長い時間がかかり、4MBの分類子の場合は約10秒かかります。
cPickle.dumps / cPickle.loadsよりも高速にオブジェクトをシリアル化/逆シリアル化する方法はありますか?
追加情報:
分類子は、10個の要素からなる1対残りのランダムフォレストのインスタンスです。分類器は、約1,000のサンプル、約500の特徴、および52の可能なラベルでトレーニングされました。min_density
パラメータは0に設定されます。
cPickle.loadのcProfile出力:
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 300.168 300.168 <ipython-input-4-9b8a128f290d>:1(loader)
1 0.899 0.899 301.067 301.067 <string>:1(<module>)
51380 288.151 0.006 288.151 0.006 __init__.py:93(__RandomState_ctor)
51380 0.059 0.000 0.404 0.000 fromnumeric.py:1774(amax)
1 11.613 11.613 300.168 300.168 {cPickle.load}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
51380 0.344 0.000 0.344 0.000 {method 'max' of 'numpy.ndarray' objects}
1 0.000 0.000 0.000 0.000 {open}
私はgithub.com/scikitで問題を開く過程にあります-これについて学びましょう。