MemoryError при умножении разреженных матриц CSR - PullRequest
0 голосов
/ 06 июня 2019

Я создал матрицу условий документа, используя Sklearn и TfidfVectorizer.

tfidf = TfidfVectorizer(use_idf = True, 
                        norm = normalization,
                        min_df = min_doc_freq) 

dtm = tfidf.fit_transform(text) 

Это дает разреженную матрицу 128 111 x 3469, формат CSR с 1 865 094 сохраненными элементами.Я хочу умножить это на транспонирование, но каждый раз, когда я делаю, я получаю ошибку памяти.

Матрица 128,111 x 3469, что означает, что результирующая матрица должна быть 128,111 x 128,111, что не кажется БОЛЬШИМ.

Я использую Python 3.7.2, 64 бит.На момент написания этой статьи у используемой виртуальной машины было 84 гигабайта оперативной памяти (всего более 125).

Я пробовал следующий код и каждый раз получал одну и ту же ошибку:

sim = dtm * dtm.T #(also used dtm.transpose()) 

sim = dtm @ dtm.T 

sim = dtm.dot(dtm.T) 

Я ожидал, что будет возвращена разреженная матрица, но я получаю "MemoryError".

 ~/utilities/anaconda3/lib/python3.7/site-packages/scipy/sparse/compressed.py in _mul_sparse_matrix(self, other) 
 500 maxval=nnz) 
 501 indptr = np.asarray(indptr, dtype=idx_dtype) 
 --> 502 indices = np.empty(nnz, dtype=idx_dtype) 
 503 data = np.empty(nnz, dtype=upcast(self.dtype, other.dtype)) 
 504 MemoryError:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...