У меня есть несколько столбцов, состоящих из категориальных переменных, которые имеют форму целых значений в диапазоне от 0 до 4.Но все столбцы принадлежат к одной категории.Я попытался использовать OneHotEncoder из scikit learn, но он не заботится о пропущенных категориях в столбце, что может вызвать проблемы при тестировании невидимых данных в моей модели нейронной сети.В приведенном ниже коде показан тип данных, которые мне нужно кодировать
>>> df = pd.DataFrame(np.random.randint(low=0, high=4, size=(5, 5)),
columns=['color1', 'color2', 'color3', 'color4', 'color5'])
>>> df
color1 color2 color3 color4 color5
0 0 1 2 3 1
1 3 1 0 1 1
2 0 1 0 3 0
3 0 2 0 1 2
4 0 2 0 3 2
>>> df_onehotencoder = OneHotEncoder(sparse=False)
>>> df2 = df_onehotencoder.fit_transform(df)
>>> df2
array([[1., 0., 1., 0., 0., 1., 0., 1., 0., 1., 0.],
[0., 1., 1., 0., 1., 0., 1., 0., 0., 1., 0.],
[1., 0., 1., 0., 1., 0., 0., 1., 1., 0., 0.],
[1., 0., 0., 1., 1., 0., 1., 0., 0., 0., 1.],
[1., 0., 0., 1., 1., 0., 0., 1., 0., 0., 1.]])
. Это создает массив для каждого столбца только для категорий, присутствующих в этом столбце, а не для отсутствующих категорий.Мне нужно иметь одинаковое количество закодированных столбцов для каждого столбца, то есть отсутствующая категория будет равна нулю.Кроме того, что было бы лучшим вариантом для декодирования этого массива OneHotEncoded, чтобы я мог легко декодировать прогнозируемый вывод в фактические целочисленные значения.