具有大型数据集的DictVectorizer

时间:2016-10-01 06:20:11

标签: python scikit-learn

我有一个包含分类值的大型数据集,并尝试使用DictVectorizer对其进行编码。以下是我尝试过的代码片段。

dv = DictVectorizer(sparse=True)
_dicts = []
for line in fp:
    _dict = create_dict_feature(line)
    _dicts.append(_dict)
dv.fit_transform(_dicts)

但是,MemoryError出现在_dicts.append(_dict)中。我想知道解决这个问题的有效方法是什么。

1 个答案:

答案 0 :(得分:1)

根据文档,fit_transform可以采用迭代。如果内存问题来自列表的大小,请考虑使用生成器而不是list,这将在迭代时一次生成dict个生成器。

_dicts = (create_dict_feature(line) for line in fp)
dv = DictVectorizer(sparse=True)
dv.fit_transform(_dicts)

如果fit_transform像以前一样累积dictMapping,这将无济于事。