분류 문제로 sklearn의 RandomForestClassifier
을 사용하고 있습니다. 나는 각 나무에 대한 (아주) 큰 세트의 부분 집합을 잡으면서 숲의 나무들을 개별적으로 훈련시키고 싶다. 그러나 수동으로 나무에 딱 들어 맞으면 메모리 사용량이 늘어납니다.sklearn의 수동 트리밍 메모리 사용량
다음은 RandomForestClassifier
의 fit
기능을 사용하는 사용자 정의 적합의 memory_profiler
을 사용하는 라인 별 메모리 프로필입니다. 내가 알 수있는 한, 소스 피팅 함수는 사용자 정의 피팅과 동일한 단계를 수행합니다. 그래서 모든 여분의 기억을주는 것은 무엇입니까 ??
정상 적합 :
Line # Mem usage Increment Line Contents
================================================
17 28.004 MiB 0.000 MiB @profile
18 def normal_fit():
19 28.777 MiB 0.773 MiB X = random.random((1000,100))
20 28.781 MiB 0.004 MiB Y = random.random(1000) < 0.5
21 28.785 MiB 0.004 MiB rfc = RFC(n_estimators=100,n_jobs=1)
22 28.785 MiB 0.000 MiB rfc.n_classes_ = 2
23 28.785 MiB 0.000 MiB rfc.classes_ = array([False, True],dtype=bool)
24 28.785 MiB 0.000 MiB rfc.n_outputs_ = 1
25 28.785 MiB 0.000 MiB rfc.n_features_ = 100
26 28.785 MiB 0.000 MiB rfc.bootstrap = False
27 37.668 MiB 8.883 MiB rfc.fit(X,Y)
사용자 정의에 맞게 :
Line # Mem usage Increment Line Contents
================================================
4 28.004 MiB 0.000 MiB @profile
5 def custom_fit():
6 28.777 MiB 0.773 MiB X = random.random((1000,100))
7 28.781 MiB 0.004 MiB Y = random.random(1000) < 0.5
8 28.785 MiB 0.004 MiB rfc = RFC(n_estimators=100,n_jobs=1)
9 28.785 MiB 0.000 MiB rfc.n_classes_ = 2
10 28.785 MiB 0.000 MiB rfc.classes_ = array([False, True],dtype=bool)
11 28.785 MiB 0.000 MiB rfc.n_outputs_ = 1
12 28.785 MiB 0.000 MiB rfc.n_features_ = 100
13 73.266 MiB 44.480 MiB for i in range(rfc.n_estimators):
14 72.820 MiB -0.445 MiB rfc._make_estimator()
15 73.262 MiB 0.441 MiB rfc.estimators_[-1].fit(X,Y,check_input=False)
sklearn의 버전은 무엇입니까? –
나는 0.14.1을 사용하고있다 –
'X' 대신'X.T'로 이것을 시도 할 수 있습니까? –