Категориальные переменные в MultinomialNB Python

Я новичок в Python, и вот простой вопрос о настройке X_train в MultinomialNB.

Итак, я хочу предсказать цель ("A1", "A2,..." A5"), используя две категориальные функции: день недели с 7 уникальными значениями ("Mon" , "Вт", "Ср", "Чт", "Пт", "Сб", "Вс") и Местоположение с 5 уникальными значениями ("A", "B", "C"). ', 'Д', 'Е').

Вот что я делаю:

  • используя pd.getdummies для преобразования дня недели и местоположения в вектор двоичного ввода
  • используя LabelEncoder для преобразования цели в числовые значения
  • разделить данные на обучение/тестирование

Затем я делаю следующее (используя scikit-learn):

clf=MultinomialNB()
clf.fit(X_train,y_train)

Итак, мои вопросы:

  • Вышеуказанные шаги верны? В частности, является ли get_dummies лучшим способом обработки категориальных функций?

  • Сделав выше, X_train будет иметь форму (N_samples, 12), в которой 12 получается из 7 (векторизованный день недели) и 5 ​​(векторизованное местоположение). Это правильная настройка для этой проблемы?

Спасибо большое!


person Crane Huang    schedule 19.01.2016    source источник


Ответы (1)


В целом ваши шаги звучат правильно. Я считаю, что get_dummies() — это самый простой способ подготовить неупорядоченные категориальные функции для scikit-learn. Однако вы можете отказаться от «базового уровня» для каждой категориальной переменной, уменьшив количество признаков до 10 (6 + 4 вместо 7 + 5). Кроме того, имейте в виду, что если у вас есть упорядоченная категориальная характеристика, возможно, имеет смысл сохранить ее как одну характеристику и преобразовать категории в "разумные" числовые значения.

Во второй части этого блокнота Jupyter я показываю примеры всего упомянутое выше.

person Kevin Markham    schedule 24.02.2016