Я работаю над проектом анализа настроений. Я использую сумку слов на склеарне. Я хочу nomalize строки, как в:Применить пользовательские функции к разреженной матрице в sklearn
a = [1, 0, 1, 0, 0, 0, 0, 1, 0, 1]
#a -> 4 non zero values
нормированный вектор должен быть:
[0.25, 0.0, 0.25, 0.0, 0.0, 0.0, 0.0, 0.25, 0.0, 0.25]
При Ь -> 8 не являющиеся нулями значения:
b = [1, 0, 1, 1, 0, 1, 1, 1, 1, 1]
нормированный вектор должен быть :
[0.125, 0.0, 0.125, 0.125, 0.0, 0.125, 0.125, 0.125, 0.125, 0.125]
class 'scipy.sparse.csr.csr_matrix
(0, 2111) 1
(0, 2812) 1
(0, 2848) 1
......
......
(0, 5745) 1
(0, 5823) 1
Как можно применять o на такую матрицу?
Я знаю, что могу преобразовать это в обычную матрицу с использованием метода «.toarray», но это вызывает проблему памяти, матрица - несколько Гб.
Это не решение, а просто предложение преодолеть проблему памяти. Поскольку вы имеете дело с разреженной матрицей, вы можете сохранить матрицу в формате Matrix Market. Затем вы можете нормализовать каждое значение матрицы очень простым способом, как вы делаете для вектора. –
Вы рассмотрели методы матрицы csr. Есть сумма, вероятно, средняя. Сделайте небольшой массив редким и экспериментируйте. – hpaulj
Я должен добавить, что 'sklearn' также имеет некоторые пользовательские разреженные функции - чтобы ускорить выполнение общих задач в этом пакете. Я просмотрел их код для других вопросов, но не обращал внимания на то, где и как они документируются. – hpaulj