OneHotEncoder
не обрабатывает, какие столбцы имеют категориальный тип. Следовательно, все столбцы, которые передаются в OneHotEncoder
, будут преобразованы в фиктивные переменные.
Вы можете обратиться к примерам здесь .
Если у вас уже есть двоичные переменные, и тогда нет смысла создавать для них две фиктивные переменные.
Вы можете использовать make_column_transformer
, чтобы указать столбцы, для которых вам нужно одно горячее кодирование.
Пример:
>>> import pandas as pd
>>> X = pd.DataFrame([['Male', 0], ['Female', 1], ['Female', 0]], columns=['gender', 'groups'])
>>> from sklearn.compose import make_column_transformer
>>> ct = make_column_transformer((OneHotEncoder(),[0])) #, remainder='passthrough'
>>> ct.fit_transform(X)
array([[0., 1.],
[1., 0.],
[1., 0.]])