2015-12-03 2 views
0

Im работая с питона, sklearn и NumPy и я создаю следующую разреженную матрицу:Как применять журнал на Numpy разреженной матрицы поэлементно

feats = tfidf_vect.fit_transform(np.asarray(tweets)) 
    print(feats) 

    feats=np.log(np.asarray(feats)) 

, но я получаю следующее сообщение об ошибке, когда я применяю журнал:

Traceback (most recent call last): 
    File "src/ef_tfidf.py", line 100, in <module> 
    feats=np.log(np.asarray(feats)) 
    AttributeError: log 

ошибка связана с тем, что подвигов это разреженная матрица, я был бы признателен за любую помощь в этом, я имею в виду способ применить журнал в разреженную матрицу.

+2

Вы действительно хотите сделать это? Если большинство входов равно 0, большинство выходов будут в -inf. Если входные данные не в основном равны 0, почему имеется разреженная матрица? – user2357112

+0

да, я уверен, танки для поддержки. – neo33

+0

жаль, что я согласен с вами, вместо этого я хочу применить журнал ко всем входам матрицы, которые отличны от нуля. – neo33

ответ

3

Правильный способ преобразования разреженной матрицы к ndarray является с помощью метода toarray:

feats = np.log(feats.toarray()) 

np.array не понимает разреженные матрицы входов.


Если вы хотите только взять журнал ненулевых элементов и возвращает разреженную матрицу результатов, лучший способ, вероятно, будет брать логарифм Матрицы data и построить новую разреженную матрицу с этим данные.

Как это работает через открытый интерфейс, отличается для разных разреженных типов матриц; вы хотите найти конструктор для любого типа, который у вас есть. В качестве альтернативы существует частный метод _with_data:

feats = feats._with_data(np.log(feats.data), copy=True) 
+0

спасибо за поддержку, я попробую с этим. – neo33

Смежные вопросы