Gay*_*tri 3 python scipy scikit-learn
我正在尝试在我的数据上实现SelectKBest算法,以获得最佳功能.为此,我首先使用DictVectorizer预处理我的数据,数据由1061427行和15个功能组成.每个功能都有许多不同的值,我相信由于高基数,我会收到内存错误.
我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以做到这一点?当我在具有256GB RAM的计算机上处理时,为什么会出现内存错误.
任何帮助表示赞赏!
我解决了这个问题.
当我删除一个具有非常高基数的列时,DictVectorizer工作正常.该列有数百万个不同的唯一值,因此dictvectorizer给出了内存错误.
在执行 fit_transform 时,不要将整个字典传递给它,而是创建一个仅包含唯一出现次数的字典。这是一个例子:
转换字典:
前
[ {A:1,B:22.1,C:Red,D:AB12},
{A:2,B:23.3,C:Blue,D:AB12},
{A:3,B:20.2,C:Green,D:AB65},
]
Run Code Online (Sandbox Code Playgroud)
后
[ {A:1,B:22.1,C:Red,D:AB12},
{C:Blue},
{C:Green,D:AB65},
]
Run Code Online (Sandbox Code Playgroud)
这节省了很多空间。
| 归档时间: |
|
| 查看次数: |
7141 次 |
| 最近记录: |