2016-10-01 112 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的只有我,你做之前。