사용자 정의 거리 측정을 사용하여 계층 적 클러스터링을 수행하려고합니다. 나는 다음 dist
로 변환 그래서 내 거리를 측정 파이썬 목록에서 개최된다 R/rpy2의 as.dist 기능과 관련된 메모리 문제
import rpy2.robjects as robjects
r=robjects.r
from rpy2.robjects.packages import importr
stats = importr('stats')
m = r.matrix(robjects.FloatVector(list_of_data), ncol=size, byrow=True)
dist_mat=stats.as_dist(m)
hc=stats.hclust(new_dist_mat)
이는 R 행렬로 변환 클러스터링을 수행하는 R에 데이터 구조를 파이썬에서 모든 계산을 수행 한 후 통과 클러스터링에 필요한 오브젝트. 이것은 어느 정도 효과가 있습니다.
python(18944,0xb0081000) malloc: *** mmap(size=168898560) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Error: cannot allocate vector of size 161.1 Mb
이 나는 dist
객체 (as.dist
)로 변환 지점에서 발생 매트릭스가 너무 큰되고 그러나, 나는이 오류가 발생합니다. 나는 어떤 크기로 분해되었는지 테스트하지 않았지만 3000x3000 행렬로 작동하지만 6500x6500 행렬로는 실패합니다. 파이썬에서 del
함수를 사용하여 메모리에서 불필요한 객체를 제거하려고 시도했지만, 읽은 바대로 메모리를 즉시 사용할 수 있음을 보장하지 않습니다.
따라서 궁극적으로 dist
개체를 가져 오는 메모리 효율적인 방법이 있습니까? 아니면 내가 사용할 수있는 대체 방법이 있을까요? 나는 dist
객체를 사용하지 않는 R의 cluster
라이브러리에서 몇 가지 다른 방법을 찾았지만 이러한 방법은 내장 된 거리 메트릭을 사용합니다.
미리 감사드립니다.
감사합니다. 내 접근 방식을 재고해야 겠네요. – steiny