커다란 파이썬 객체를로드하는 응용 프로그램이 있습니다.이 클래스는 직렬화 된 scikit-learn 분류 자 및 관련 어휘입니다.scikit-learn의 느린 unpickling 문제를 해결합니다. OneVsRest RandomForests
분류기는 크기가 커서 메모리에로드하는 것이 중요하지 않습니다 (1-100MB 정도). 실제 판독은 빠르지 만, unpickling에는 4MB 분류 자의 경우 약 10 초가 소요됩니다.
cPickle.dumps/cPickle.loads보다 개체를 serialize/deserialize하는 빠른 방법이 있습니까?
추가 정보 :
분류기는 10 개 요소 중 하나 - 대 - 나머지 랜덤 포레스트의 인스턴스입니다. 분류기는 약 1,000 개의 샘플, 약 500 개의 특징 및 52 개의 가능한 라벨에 대해 교육을 받았습니다. 이것에 대해 github.com/scikit-learn에서 문제를 개방 과정에있어
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}
다음 min_density
파라미터 cPickle.load 0.1
cprofile 명령 출력으로 설정된다.
현재 저는 cPickle 덤프를 사용 중이며 HIGHEST_PROTOCOL을 (를)로드하고 있습니다. 나는 joblib을 시도하지 않았지만 나는 그것을 줄 수 있다고 생각한다. 어쩌면 내가 평행하게 욕설을 나눌 수 있을까? – Maus
로드를 먼저 프로파일 링하는 것이 좋습니다. – ogrisel
프로파일 링 출력에 감사드립니다. 제 대답의 두 번째 편집을 참조하십시오. – ogrisel