我试图在我的数据上实现SelectKBest算法以获得最佳功能。为此,我首先使用DictVectorizer预处理数据,数据由1061427行和15个特征组成。每个功能都有很多不同的值,我相信由于高基数,我正在收到内存错误。使用Scikit的DictVectorizer学习时出现MemoryError学习
我得到以下错误:
File "FeatureExtraction.py", line 30, in <module>
quote_data = DV.fit_transform(quote_data).toarray()
File "/usr/lib64/python2.6/site-packages/scipy/sparse/compressed.py", line 563, in toarray
return self.tocoo(copy=False).toarray()
File "/usr/lib64/python2.6/site-packages/scipy/sparse/coo.py", line 233, in toarray
B = np.zeros(self.shape, dtype=self.dtype)
MemoryError
有没有办法,我能做到这一点任何替代办法?当我在具有256GB RAM的计算机上处理时,为什么会出现内存错误。
任何帮助表示赞赏!
似乎你的错误来自'toarray'方法,而不是'DictVectorizer'。你必须把它变成数组吗? – Korem
是的,我必须将它转换为一个数组。是否有任何其他方式来做到这一点? – Gayatri
@TalKremerman我也尝试删除toarray()和改变Sparse = False的参数,我仍然得到相同的错误。这里是代码:DV = DictVectorizer(sparse = False) data = DV.fit_transform(data)and早些时候我写过DV = DictVectorizer(sparse = True) data = DV.fit_transform(data).toarray()。无论哪种方式,它都会给出一个0和1的二维数组,这是我需要输入到SelectKBest的。 – Gayatri