的我在SQL Server 2008中,其有28万行的表。我只对一列感兴趣,并希望对该列执行一些文本分析。作为第一步,我限制了我的查询返回大约120万行(只有1列有文本数据)。我使用下面的一段代码来向量化和计算每列的平均值,其中每列表示整个词汇表中的一个词。np.mean()导致内存不足的错误
vectorizer = TfidfVectorizer(min_df=2, stop_words='english',tokenizer=tokenize)
X_train = vectorizer.fit_transform(trainer)
meanArray = np.mean(X_train.toarray(),axis=0)
的那一刻X_train.toarray()遇到,我收到以下错误:
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/Support_Dot_Com/PROD1_Analysis.py", line 69, in <module>
meanArray = np.mean(X_train.toarray(),axis=0)
File "C:\Anaconda\lib\site-packages\scipy\sparse\compressed.py", line 790, in toarray
return self.tocoo(copy=False).toarray(order=order, out=out)
File "C:\Anaconda\lib\site-packages\scipy\sparse\coo.py", line 239, in toarray
B = self._process_toarray_args(order, out)
File "C:\Anaconda\lib\site-packages\scipy\sparse\base.py", line 699, in _process_toarray_args
return np.zeros(self.shape, dtype=self.dtype, order=order)
MemoryError
我知道.toarray()稀疏矩阵转换成是吃了内存中的numpy的ndarray 。有没有办法做同样的事情,而不使用.toarray()?
在这方面的任何帮助深表感谢。
如果X_train是SciPy的稀疏矩阵,你可以调用它的均值函数: HTTP:/ /docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.lil_matrix.mean.html#scipy.sparse.lil_matrix.mean –
我用下面的:meanArray = scipy.sparse.lil_matrix.mean(X_train,轴= 0),得到了以下错误:回溯(最近最后调用): 文件 “C:/Users/Administrator/PycharmProjects/Support_Dot_Com/PROD1_Analysis.py”,线76,在 meanArray = scipy.sparse.lil_matrix.mean(X_train,axis = 0) TypeError:unbound方法必须使用lil_matrix实例调用mean()作为第一个参数(改为获得csr_matrix实例) –
Patthebug
您可以轻松地在不同格式之间进行转换稀疏矩阵,文档显示如何(我认为你可以只说X_train = lil_matrix(X_train),但验证) –