1
我有興趣從countvectorizing文本數據中獲取計數數據的對數。我很想測試這種轉換(標準化)是否有助於提高sklearn模型的性能。以壓縮稀疏行格式(csr_matrix)的矩陣中的值取對數
這是我有:
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]
當我運行此代碼,但是,我得到一個錯誤:
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
雖然我不希望這將實際工作,我不能沒有想到在CSR矩陣中取值爲對數的方式。我試圖
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]
這產生
NotImplementedError: adding a nonzero scalar to a sparse matrix is not supported
有沒有辦法解決這個問題的方法嗎?非常感謝您的幫助。
非常感謝! – achimneyswallow
您是否願意考慮通過點擊接受按鈕來接受我的答案,以便我可以獲得信貸幫助您?對其他人來說,這個問題已經解決,你會得到+2代表的禮貌信號。 – Tonechas
當然,這是正確的做法! :) – achimneyswallow