Apliquemos, en primer lugar, la clase OneHotEncoder de Scikit-Learn a la característica "embarked" del dataset Titanic. Confirmemos, en primer lugar, los valores únicos de esta columna:
Contiene los textos "S", "C" y "Q" y valores nulos.
Ahora importemos la clase OneHotEncoder e instanciémosla:
Podemos entrenar el codificador a partir de una característica y aplicarlo a la misma característica con el método .fit_transform():
data
with 891 stored elements in Compressed Sparse Row format>
Obsérvese que, para su entrenamiento, el método .fit_transform() requiere que pasemos una estructura bidimensional, y que el resultado es una matriz dispersa.
Podemos convertirla en una matriz densa con el método .toarray():
data
[1., 0., 0., 0.],
[0., 0., 1., 0.],
...,
[0., 0., 1., 0.],
[1., 0., 0., 0.],
[0., 1., 0., 0.]])
Esta estructura es el equivalente a la columna "embarked".
Una vez entrenado el codificador podemos acceder a las categorías identificadas con el atributo .categories_:
Ahora, podríamos sustituir la columna original por estos datos, por ejemplo, de la siguiente manera:
titanic.drop("embarked", axis = 1),
pd.DataFrame(data, columns = encoder.categories_[0])
], axis = 1)
Si visualizamos el DataFrame:
vemos las cuatro columnas añadidas al final de la estructura, incluyéndose, para cada fila, un 1 en la columna que representa la ciudad en la que embarcó el pasajero correspondiente (o un 1 en la última columna si el valor en cuestión era un nulo).