Как преобразовать массив разреженной матрицы в JSON Python - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь преобразовать TF-IDF разреженную матрицу в формат json. Преобразование его в pandas datafram (toarray() или todense()) вызывает ошибку памяти. Поэтому я хотел бы избежать этих подходов. Есть ли другой способ конвертировать его в JSON?

Ниже приведен мой подход к получению разреженной матрицы и мой предпочтительный результат JSON

Спасибо за помощь ...!


матрица TF-IDF

pip = Pipeline([('hash', HashingVectorizer(ngram_range=(1, 1), non_negative=True)), ('tfidf', TfidfTransformer())])
result_uni_gram = pip.fit_transform(df_news_noun['content_nouns'])

матрица возврата

result_uni_gram

<112537x1048576 sparse matrix of type '<class 'numpy.float64'>'
    with 12605888 stored elements in Compressed Sparse Row format>



print(result_uni_gram)

(0, 1041232)    0.03397010691200069
(0, 1035546)    0.042603425242006505
(0, 1031141)    0.05579563771771019
(0, 1029045)    0.03985981185871279
(0, 1028867)    0.14591155976555212
(0, 1017328)    0.03827279930970525
:   :
(112536, 9046)  0.04444360144902461
(112536, 4920)  0.07335227778871069
(112536, 4301)  0.06667794684006756

Ожидаемый результат

output_json = {
                0: {1041232 : 0.03397, 1035546 : 0.04260, 1031141 : 0.055795 ... }, 
                ...
                ... 112536: {9046 : 0.04444, 4920 : 0.07335, 112536 : 0.06667}
               }

Спасибо, что помогли мне ...!

1 Ответ

0 голосов
/ 06 марта 2019

Так что мне удалось сделать это следующим образом: учитывая, что «test_samples» является вашим «scipy.sparse.csr.csr_matrix»

 import json
 import base64
 np_test_samples=test_samples.toarray()
 jason_test_samples=json.dumps({"data": np_test_samples.tolist()})
...