#python #pandas #scikit-learn #one-hot-encoding #countvectorizer
#python #pandas #scikit-learn #one-hot-encoding #countvectorizer
Вопрос:
Я пытаюсь выполнить одноразовое кодирование категориальной переменной с помощью CountVectorizer(). Я могу реализовать это во всех столбцах, кроме одного столбца с именем «Центр детализации». Этот столбец содержит три уникальных значения ‘A’, ‘B’, ‘C’. Когда я реализую CountVectorizer в этом столбце, он выдает ошибку пустого словаря; возможно, документы содержат только стоп-слова
vec=CountVectorizer()
train_drill=vec.fit_transform(X_train['Drill Centre']).toarray()
test_drill=vec.transform(X_test['Drill Centre']).toarray()
Комментарии:
1. Count vectorizer не генерирует одноразовые кодировки. Он генерирует ngrams.
2. Почему бы не использовать кодировщик one-hot напрямую: scikit-learn.org/stable/modules/generated /…
3. В CountVectorizer есть шаблон tokenizer (параметр), который не распознает отдельные буквы как слова. Вот почему пустой вокабуляр.
4. Count vectorizer с категориальными данными создает разреженные представления, а не одноразовые представления. Если вы хотите one-hot, используйте one-hot, как предлагает @Metropolis.
5. Как сказал @SergeyBushmanov, CountVectorizer игнорирует отдельные буквы; он обрабатывает их как «стоп-слова». CountVectorizer предназначен для работы с данными на естественном языке: со словами и предложениями.