2017-10-02 21 views
0

내 자체 데이터 세트에서 스탠포드 강의에서 언급 한 SVD 방법을 재현하고 싶습니다. 강의 슬라이드는 다음과 같다스파 스 대칭 행렬에서 SVD를 수행 할 때 파이썬 커널이 죽었습니다.

stanford lecture

내 데이터 세트가 생성 CountVectorizer로부터 처리

<13840x13840 sparse matrix of type '<type 'numpy.int64'>' 
with 597828 stored elements in Compressed Sparse Column format> 

의 크기 워드 동시 발생 행렬 M이며 동일한 종류이며()는 대칭 행렬임을 유의하십시오. 내가 SVD에서 특징을 추출하려고 할 때

그러나, 그러나, 다음 코드 중 어느 것도 작동하지 않습니다,

첫 번째 시도 : 나는 스파 스 CSR의 todense에서 행렬을 (시도

scipy.linalg.svd(M) 

) 및 toarray(), 제 컴퓨터가 꽤 오래 걸렸습니다. 그리고 커널 정지를 표시합니다. 나는 또한 다른 매개 변수 설정

와 함께 놀았

번째 시도 :

scipy.sparse.linalg.svds(M) 

가 나는 또한 float64하는 INT64에서 매트릭스 유형을 변경하는 것을 시도했다, 그러나 30 초 정도 후에 죽은 커널.

누구나이 매트릭스에서 SVD를 수행 할 수있는 방법을 제안 할 수 있습니까?

고맙습니다.

답변

1

행렬이 메모리에 스트레스를주는 것 같습니다.

  1. 가 적응 SVD,
  2. 사용 modred, dask에서
  3. 사용 SVD를 수행 : 당신은 몇 가지 옵션이 있습니다.

후자의 두 개는 상자에서 작동합니다. 이 옵션은 모두 메모리 용량 만로드합니다.

+0

사실 내가 dask 패키지를 설치 한 후에도 위 코드는 dask svd 기능을 사용하지 않고 있어도 훨씬 빠릅니다. 어떤 생각? – FF0605

+0

@ FF0605 어쩌면 blas/lapack/mkl 자료를 업데이트했습니다. – Y0da