Кодирование категориальных переменных, таких как "Имена состояний"
У меня есть категориальный столбец с именами состояний. Я не уверен, какой тип категориального кодирования мне нужно будет выполнить, чтобы преобразовать их в числовой тип.
Имеется 83 уникальных названия штатов.
Label Encoder используется для порядковых категориальных переменных, но OneHot увеличит количество столбцов, так как имеется 83 уникальных имени состояний.
Что еще я могу попробовать?
2 ответа
Я бы использовал Scikit OneHotEncoder (https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html) или Категориальный Encoder с кодировкой, установленной на 'onehot'. Он автоматически находит уникальные значения для каждой функции и преобразует их в один горячий вектор. Это увеличивает входную размерность для этой функции, но это необходимо, если вы занимаетесь каким-либо типом работы с данными. Если вы преобразуете функцию в порядковое целое число (т.е. только одно целое число), а не в вектор двоичных значений, алгоритм может сделать неверные выводы между двумя (возможно, полностью отдельными) категориальными значениями, которые просто оказываются близко друг к другу в категориальном пространстве..
Помимо одной горячей, существуют и другие мощные схемы кодирования, которые не увеличивают количество столбцов. Вы можете попробовать следующее (в порядке возрастания сложности):
count encoding: кодируйте каждую категорию по количеству раз, когда она встречается в данных, что полезно в некоторых случаях. Например, если вы хотите закодировать информацию о том, что Нью-Йорк - большой город, количество NY в данных действительно содержит эту информацию, поскольку мы ожидаем, что NY будет часто встречаться.
целевое кодирование: кодировать каждую категорию по среднему значению цели / результата (если цель непрерывна) в этой категории; или вероятностью попадания в цель, если она дискретна. Например, вы хотите закодировать район, что, очевидно, важно для прогнозирования цены на дом; определенно, вы можете заменить каждое название района средней ценой на дом в этом районе. Это невероятно улучшает прогноз (как показано в моем блокноте Kaggle для прогнозирования цен на жилье).
Есть и другие полезные схемы кодирования, такие как Catboost, вес доказательств и т. Д. Очень хорошо, что все эти схемы уже реализованы в библиотеке. categorical encoder
здесь.