Есть ли метод кодирования категориальной переменной, которая имеет более 500 различных значений?

У меня есть категориальный столбец с именем "activityNum", который важен для прогнозирования "количества" в наборе данных. В наборе данных activityNum более 500 значений. Значения представлены в формате "AP.507". Я пробовал использовать однократное кодирование, но оно увеличивает размер набора данных, а также очень низкий показатель R2 при использовании RandomForest. "Активность" - важная переменная для прогнозирования "количества" в наборе данных.

Может ли кто-нибудь подсказать мне, как я могу обрабатывать переменные, а также какой алгоритм машинного обучения может работать лучше?

Извините, не могу разглашать данные.

2 ответа

Решение

Помимо оценки того, как значения каждой из этих категорий могут отличаться от вашей зависимой переменной, вы можете рассмотреть возможность использования PCA.

Если вы "горячо кодируете" эти переменные, PCA может помочь вам сжать их в нечто более управляемое и, возможно, полезное для вас.

https://towardsdatascience.com/pca-using-python-scikit-learn-e653f8989e60

Вы можете использовать двоичное кодирование. Это уменьшает количество добавляемых столбцов с 500 доfloor(log2(500))+1. Вы можете использоватьScikit-Learn:

from sklearn.preprocessing import LabelBinarizer

или category_enocder:

import category_encoder as ce    
ce.BinaryEncoder(...)
Другие вопросы по тегам