Я думаю, что вы должны соответствовать фрейму данных, который вы сейчас передаете как категории, а именно:
encoder = OneHotEncoder(handle_unknown='ignore')
encoder.fit(pd.DataFrame({"type": ["A", "B", "C", "D"]}))
X = pd.DataFrame({
"col1": [11, 22, 55],
"type": ["A", "B", "D"], # in this examples C is missing
})
encoder.transform(X[['type']]).toarray()
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 0., 1.]])
И если мы проверим категории кодировщика, мы получим:
encoder.categories_
[array(['A', 'B', 'C', 'D'], dtype=object)]