2016-10-01 16 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の代わりにジェネレータを使用することを検討してください。繰り返し発生時に一度に1つずつdictが生成されます。

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

fit_transformはあなたが前にやっていただけのようdict SまたはMapping Sを蓄積場合、これはあまり助けにはなりません。

関連する問題