#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 так же, как вы делали раньше.