DictVectorizer с большим набором данных

#python #scikit-learn

#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:

Согласно документам, fit_transform может принимать итерируемый. Если проблема с памятью возникает из-за размера списка, рассмотрите возможность использования генератора вместо a list , который будет выдавать ваши dict s по одному по мере итерации.

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

Это не сильно поможет, если fit_transform накапливает dict s или Mapping s так же, как вы делали раньше.