Ich bin interessiert Logarithmus von Zähldaten zu nehmen, die ich von countvectorizing Textdaten erhalten habe. Ich würde gerne testen, ob diese Transformation (Normalisierung) helfen würde, die Leistung eines Modells in Sklearn zu verbessern. DieseLogarithmus für Werte in einer Matrix im komprimierten dünnen Zeilenformat (csr_matrix) nehmen
ist, was ich habe:
TEXT = [data[i].values()[3] for i in range(len(data))]
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(min_df=0.01,max_df = 2.5, lowercase = False, stop_words = 'english')
X = vectorizer.fit_transform(TEXT)
X = [math.log(i+1) for i in X]
Wie ich diesen Code ausführen, jedoch erhalte ich einen Fehler:
File "nlpQ2.py", line 29, in <module>
X = [math.log(i+1) for i in X]
File "/opt/conda/lib/python2.7/site-packages/scipy/sparse/compressed.py", line 337, in __add__
raise NotImplementedError('adding a nonzero scalar to a '
NotImplementedError: adding a nonzero scalar to a sparse matrix is not supported
Obwohl ich keine Hoffnung hatte, dass dies, ich konnte nicht wirklich funktionieren Denken Sie nicht an einen Weg, Logarithmen für Werte in einer CSR-Matrix zu nehmen. Ich habe versucht,
import math
import numpy as np
from scipy.sparse import csr_matrix
A = csr_matrix([[1, 2, 0], [0, 0, 3], [4, 0, 5]])
[math.log(i+1) for i in A]
Diese
NotImplementedError: adding a nonzero scalar to a sparse matrix is not supported
erzeugt Gibt es eine Möglichkeit, dies zu lösen? Vielen Dank für Ihre Hilfe.
Vielen Dank !! – achimneyswallow
Würdest du bitte meine Antwort akzeptieren, indem du auf die Schaltfläche "Akzeptieren" klickst, damit ich dir eine Gutschrift für deine Hilfe geben kann? Es ist ein höfliches Signal an andere, dass das Problem behoben ist und du bekommst +2 Wiederholungen. – Tonechas
Natürlich ist es genau das Richtige! :) – achimneyswallow