2016-10-01 71 views
1

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

回答

1

根据文档,fit_transform可以采取迭代。如果内存问题来自列表大小,请考虑使用生成器而不是list,因为迭代它会一次产生一个dict

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

这将帮助不大,如果fit_transform累计dict S或Mapping的只有我,你做之前。