2017-04-11 1 views
2

저는 500 개의 치수가있는 640 만 개의 샘플 인 데이터 세트로 작업 중이며이를 200 개의 클러스터로 그룹화하려고합니다. 90GB의 RAM으로 제한되며 sklearn.cluster에서 MiniBatchKmeans를 실행하려고하면 OS가 너무 많은 메모리를 사용하여 프로세스를 중지시킵니다.미니 배치 kmeans의 메모리 사용을 줄이는 방법이 있습니까?

data = np.loadtxt('temp/data.csv', delimiter=',') 
labels = np.genfromtxt('temp/labels', delimiter=',') 

kmeans = cluster.MiniBatchKMeans(n_clusters=numClusters, random_state=0).fit(data) 
predict = kmeans.predict(data) 
Tdata = kmeans.transform(data) 

그것은 과거의 클러스터링을하지 않습니다

는 코드입니다.

+0

죄송합니다. 이전 답변이 잘못되었습니다. GPU를 사용하지 않고 메인 RAM이 실제로 부족하다는 사실을 놓쳤습니다. –

+0

GPU에 액세스 할 수 있습니다. 메모리를 많이 사용하지 않고도 GPU에서이 작업을 다시 작성할 수 있다고 생각하십니까? – user1816679

+0

아니요, 원하는 것은 데이터 파일을 게으른로드하는 것입니다. 이자형. 한 장씩. 나는 그것이 가능하고 끔찍하게 어렵지 않다는 것을 안다. 그러나 불행하게도 지금은 구체적인 것을 기억할 수 없다. –

답변

1

해결책은 sklearn의 partial_fit 방법을 사용하는 것입니다. 모든 알고리즘에이 옵션이 있지만, MiniBatchKMeans이 있습니다.

"부분적으로"훈련 할 수 있지만 데이터를 분할하여 한 번에 모두 읽지 않아야합니다. 발전기로 수행 할 수 있습니다. 팬더를 사용하면 여러 가지 방법이 있습니다. 예를 들어 this을 사용할 수 있습니다.

그런 다음 fit을 사용하는 대신 partial_fit을 사용해야합니다.

관련 문제