3

그래서, 나는 약 5,700,000 페이지의 페이지 랭크를 계산하기 위해 위키 피 디아 (Wikipedia) 덤프를 만들고 있습니다. 파일이 사전 처리되어 XML이 아닙니다.
는 그들은 http://haselgrove.id.au/wikipedia.htm 에서 가져온 형식은됩니다Scipy를 사용하여 거대한 스파 스 매트릭스 구성을 처리하는 방법은 무엇입니까?

from_page(1): to(12) to(13) to(14).. 
from_page(2): to(21) to(22).. 
. 
. 
. 
from_page(5,700,000): to(xy) to(xz) 

을 등등. 그래서. 기본적으로 이것은 [5,700,000*5,700,000] 매트릭스의 구성으로 4 기가의 RAM을 깨뜨릴 수 있습니다. , 매우 - 매우 희소하기 때문에, 그게 지금 내 문제가 scipy.lil.sparse 또는 scipy.dok.sparse를 사용하여 저장할 쉽게 :

땅에서 나는 희소 행렬에 링크 정보로 .txt 파일을 변환 가야합니까? 그것을 읽고 정상적인 N * N 행렬로 계산 한 다음 변환하십시오. 나는 잘 모른다.

또한 링크가 여러 줄에 걸쳐있는 경우도 있으므로이를 처리하는 올바른 방법은 무엇입니까?
예 : 임의의 선이 같은입니다 .. 정확히 같은

[ 
1: 2 3 5 64636 867 
2:355 776 2342 676 232 
3: 545 64646 234242 55455 141414 454545 43 
4234 5545345 2423424545 
4:454 6776 
] 

: 없음 쉼표 & 분리 문자.

희소 행렬 구성 및 행을 통한 데이터 처리에 대한 정보는 도움이됩니다.

답변

1

Scipy는 스파 스 매트릭스의 여러 구현을 제공합니다. 각각에는 그것의 자신의 이점 및 불리가있다. 매트릭스 형식에 대한 정보는 here입니다.

원하는 희소 매트릭스를 얻는 데는 여러 가지 방법이 있습니다. 전체 NxN 행렬을 계산하고 변환하는 것은 아마도 높은 메모리 요구 사항 (약 10^12 개 항목!)으로 인해 가능하지 않을 수 있습니다.

귀하의 경우 데이터를 준비하여 coo_matrix을 구성하십시오.

coo_matrix((data, (i, j)), [shape=(M, N)]) 

data[:] the entries of the matrix, in any order 
i[:] the row indices of the matrix entries 
j[:] the column indices of the matrix entries 

는 또한 점진적으로 당신의 매트릭스를 구축하는 데 사용할 수있는 lil_matrix 한 번 봐 가지고 할 수 있습니다.

매트릭스를 만든 후에는 유스 케이스에 따라 계산에 더 적합한 형식으로 변환 할 수 있습니다.

데이터 형식을 인식하지 못하기 때문에 파서가있을 수 있습니다. 자신의 파서를 작성하는 것은 그렇게 어렵지는 않습니다. 콜론을 포함하는 각 행은 새로운 행을 시작하고 콜론 뒤에 오는 모든 색인은 콜론이없는 연속 된 행에서 해당 행에 대한 열 항목입니다.

+0

스파 스 행 목록에서 (각 행은 (열, 값) 쌍의 목록이 됨) 직접'lil_matrix'를 빌드하는 방법이 있습니까? 이는 명백한 접근 방식처럼 보이지만 지원되지 않는 것 같습니다. – nealmcb