Как преобразовать данный массив данных или список в разреженную матрицу - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть фрейм данных

Pre_Final =pd.DataFrame({'Tfidf-value':tfidf_value,'row-no':row_no,'column-
no':column_no})

, и я хочу преобразовать этот фрейм данных Pre_Final в разреженную матрицу, которая должна выглядеть следующим образом ->

(row_no , column_no) tfidf_value

один пример реального вывода вБлокнот Jupyter выглядит следующим образом ->

(0 , 2655) 0.333458

Я попробовал два подхода, которые я не могу понять, в любом случае я попытался


Подход 1: -

Pre_Final = pd.DataFrame({'Tfidf-value':tfidf_value,'row-no':row_no,'column-no':column_no})

arr = np.array(Pre_Final)

Normalized_arr = normalize(arr,norm = 'l2')    # Also normalization required.

Final_matrix = csr_matrix(np.matrix(Normalized_arr))

print(Final_matrix)

Подход 2: - (Учитывая, что у меня есть список для tfidf_value, row_no, column_no)

(Здесь корпус - это основной файл, содержащий все тексты в виде строк в списке. Здесь vocab - это словарь, содержащийвсе извлеченные из корпуса уникальные слова в алфавитном порядке с индексным примером vocab: - 'award': 159 ', где наградой является слово, а 159 - его позиция в словаре словаря)

len(vocab) = 2886

len(corpus) = 746

len(tfidf_value) = len(row_no) = len(column_no) = 7610

Pre_Final = pd.DataFrame({'Tfidf-value':tfidf_value,'row-no':row_no,'column-no':column_no})

Sparse_matrix = csr_matrix((Pre_Final['Tfidf-value'], (Pre_Final['row-
no'],Pre_Final['column-no'])), [(len(corpus),len(vocab))])

print(Sparse_matrix)

Дляподход 1 Я получил эту ошибку: -

ValueError: Вход содержит NaN, бесконечность или значение, слишком большое для dtype ('float64').


для подхода 2 Я получил эту ошибку: -

ValueError: недостаточно значенийраспаковать (ожидал 2, получил 1)


Хотя результат, на который я рассчитывал, похож (после регуляризации L2, покажите мне, как это сделать)

  (0, 2287) 0.3377679916467555

  (0, 1653) 0.35781145622317734

  (0, 53)   0.4123943870778812

  (0, 1651) 0.16192317905848022

  (0, 688)  0.4123943870778812

  (0, 720)  0.4123943870778812

  (0, 2878) 0.35781145622317734

ии так далее.

Пожалуйста, покажите мне точный код, чтобы сделать выше.

...