具有大型数据集的DictVectorizer



我有一个具有分类值的大型数据集,并试图使用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)中。我想知道什么是解决这个问题的有效方法。

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

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

如果fit_transform像以前那样累积dict s或Mapping s,那么这将没有多大帮助。

最新更新