Кодирование данных для машинного обучения - PullRequest
0 голосов
/ 17 октября 2019

изображение набора данных У меня есть набор транспортных данных, который содержит 6 категориальных переменных (например, отправитель, получатель, имя водителя грузовика, fromcity, tocity, тип транспортного средства) и одну непрерывную переменную (например, вес). Я хочу предсказать продажу (котораяявляется непрерывной переменной). у меня есть 13000 записей в наборе данных.

Я уже пробовал одну горячую кодировку, но в каждой переменной более 300 категорий, что означает (300 * 6 = 1800 переменных). Так как можно кодировать столбцы или есть какое-то другое решение для этого?

Здесь вы можете увидеть пример набора данных:

Ответы [ 3 ]

0 голосов
/ 17 октября 2019

Я бы предложил вам сделать следующее:

1 - вам нужно найти корреляцию и решить, какие переменные необходимы. Так что вы можете удалить переменные, такие как имя. Потому что они не могут внести существенный вклад в результаты. Кодируйте только те переменные, которые являются существенно важными.

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

3 - Попробуйте использовать другую кодировку, основанную на значениях в столбцах, например, Ordinal Encoding. Что может помочь вам уменьшить количество столбцов.

0 голосов
/ 18 октября 2019

Существует три варианта кодирования меток, которые я изучил.

Удаление столбцов с категориальными данными Начните с этого, если не так много категориальных переменных.

Кодировка метки Эта вторая возможность преобразует ваши значения внапример, числовые: ['вторник', 'большинство', 'три'] до [1,2,3]. Но здесь, если вы уже разделили свои данные для обучения и проверки просьб, проверьте, не совпадают ли ваши уникальные значения в данных испытаний и данных обучения.

# Apply label encoder 
encoderlab =  LabelEncoder()
for col in cols:
    label_X_train[col] = encoderlab.fit_transform(label_X_train[col])
    label_X_valid[col] = encoderlab.transform(label_X_valid[col])

Кодирование в одно касание Эта третья возможность для каждого столбца с категориальными данными проверить количество уникальных значений в столбце. если существует много уникальных значений больше 10, то лучше метка, чтобы кодировать их , а другие с менее чем 10 уникальными значениями, одно горячее кодировать их.

oh_encod = OneHotEncoder(handle_unknown='ignore', sparse=False)
OH_X_train = pd.DataFrame(oh_encod.fit_transform(X_train[low_cardinality_cols]))
OH_X_valid = pd.DataFrame(oh_encod.transform(X_valid[low_cardinality_cols])) 

Подробнее об обработке Kaggle -категориальные переменные (подробности об упражнениях) или категориальные переменные

0 голосов
/ 17 октября 2019

Продажа - это ваша целевая переменная, а остальные являются независимыми переменными. Вы можете использовать Логистическую регрессию (есть разные типы), чтобы предсказать продажу по отношению к другим переменным. Вам нужно углубиться в регрессионную модель, соответствующую вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...