У меня есть Pandas DataFrame, train
, кодирование которого у меня одноразовое. Это выглядит примерно так:
car
0 Mazda
1 BMW
2 Honda
Если я использую pd.get_dummies
, я получу это:
car_BMW car_Honda car_Mazda
0 0 0 1
1 1 0 0
2 0 1 0
Пока все хорошо.
Однако у меня нет доступа к моему тестовому набору, поэтому мне нужно учесть вероятность того, что в тесте появится значение для car
, которого не было в train
.
Предположим, test
это:
car
0 Mazda
1 Audi
Тогда, если я использую pd.get_dummies
на test
, я получу:
car_Audi car_Mazda
0 0 1
1 1 0
Что не так, потому что у меня есть новый столбец, car_Audi
и отсутствует car_BMW
.
Хотелось бы, чтобы вывод кодирования * hot-код test
был:
car_BMW car_Honda car_Mazda
0 0 0 1
1 0 0 0
Так что он просто игнорирует ранее невидимые значения в тесте. Я определенно не хочу создавать новые столбцы для ранее невидимых значений в тесте.
Я посмотрел на sklearn.preprocessing.LabelBinarizer
, но он выводит массив с пустым фрагментом, и порядок для столбцов неясен:
lb = LabelBinarizer()
train_transformed = lb.fit_transform(train_df)
возвращает меня:
array([[0, 0, 1],
[1, 0, 0],
[0, 1, 0]])
Есть идеи здесь?
Спасибо!