sklearn.preprocessing
.OneHotEncoder¶
- class sklearn.preprocessing.OneHotEncoder¶
Codifica las características categóricas como un arreglo numérico one-hot.
La entrada de este transformador debe ser un array-like de enteros o cadenas, que denote los valores que toman las características categóricas (discretas). Las características se codifican utilizando un esquema de codificación one-hot (también conocido como “one-of-K” o “dummy”). Esto crea una columna binaria para cada categoría y devuelve una matriz dispersa o un arreglo denso (dependiendo del parámetro
sparse
)Por defecto, el codificador deriva las categorías basándose en los valores únicos de cada característica. Alternativamente, también puedes especificar las
categories
manualmente.Esta codificación es necesaria para alimentar los datos categóricos a muchos estimadores de scikit-learn, especialmente los modelos lineales y las SVM con los núcleos estándar.
Nota: una codificación one-hot de las etiquetas y debe utilizar un LabelBinarizer en su lugar.
Lee más en el Manual de usuario.
Distinto en la versión 0.20.
- Parámetros
- categories“auto” o una list de array-like, default=”auto”
Categorías (valores únicos) por característica:
“auto” : Determina las categorías automáticamente a partir de los datos de entrenamiento.
lista (list):
categories[i]
contiene las categorías esperadas en la i-ésima columna. Las categorías pasadas no deben mezclar cadenas y valores numéricos dentro de una misma característica, y deben ordenarse en caso de valores numéricos.
Las categorías utilizadas se encuentran en el atributo
categories_
.Nuevo en la versión 0.20.
- drop{“first”, “if_binary”} o un array-like de forma (n_features,), default=None
Especifica una metodología a utilizar para eliminar una de las categorías por característica. Esto es útil en situaciones en las que las características perfectamente colineales causan problemas, como cuando se introducen los datos resultantes en una red neuronal o en una regresión no regularizada.
Sin embargo, la eliminación de una categoría rompe la simetría de la representación original y, por tanto, puede inducir un sesgo en los modelos posteriores, por ejemplo, en los modelos de clasificación o regresión lineal penalizados.
None: conserva todas las características (por defecto).
“first” : elimina la primera categoría en cada característica. Si solo hay una categoría presente, la característica se eliminará por completo.
“if_binary” : elimina la primera categoría en cada característica con dos categorías. Las características con 1 o más de 2 categorías se dejan intactas.
array :
drop[i]
es la categoría en la característicaX[:, i]
que debe ser descartada.
Distinto en la versión 0.23: Opción añadida “if_binary”.
- sparsebool, default=True
Devolverá una matriz dispersa si se establece como True, de lo contrario devolverá un arreglo.
- dtypetipo numérico, default=float
Tipo de salida (dtype) deseado.
- handle_unknown{“error”, “ignore”}, default=”error”
Si se produce un error o se ignora si una característica categórica desconocida está presente durante la transformación (por defecto, se produce). Cuando este parámetro se establece en “ignore” y se encuentra una categoría desconocida durante la transformación, las columnas codificadas one-hot resultantes para esta característica serán todas ceros. En la transformación inversa, una categoría desconocida se denotará como None.
- Atributos
- categories_lista de arreglos
Las categorías de cada característica determinadas durante el ajuste (en orden de las características en X y correspondientes con la salida de
transform
). Esto incluye la categoría especificada endrop
(si la hay).- drop_idx_arreglo de forma (n_features,)
drop_idx_[i]
es el índice encategories_[i]
de la categoría que se va a eliminar para cada característica.drop_idx_[i] = None
si no hay que eliminar ninguna categoría de la característica con el índicei
, por ejemplo, cuandodrop='if_binary'
y la característica no es binaria.drop_idx_ = None
si se conservan todas las características transformadas.
Distinto en la versión 0.23: Se ha añadido la posibilidad de contener valores
None
.
Ver también
OrdinalEncoder
Realiza una codificación ordinal (entera) de las características categóricas.
sklearn.feature_extraction.DictVectorizer
Realiza una codificación one-hot de los elementos del diccionario (también maneja características con valores de cadena).
sklearn.feature_extraction.FeatureHasher
Realiza una codificación one-hot aproximada de los elementos del diccionario o de las cadenas.
LabelBinarizer
Binariza las etiquetas de una forma uno contra todos (one-vs-all).
MultiLabelBinarizer
Transforma entre un iterable de iterables y un formato multietiqueta, por ejemplo, una matriz binaria (muestras x clases) que indica la presencia de una etiqueta de clase.
Ejemplos
Dado un conjunto de datos con dos características, dejamos que el codificador encuentre los valores únicos por característica y transforme los datos en una codificación binaria one-hot.
>>> from sklearn.preprocessing import OneHotEncoder
Se pueden descartar las categorías no vistas durante
fit
:>>> enc = OneHotEncoder(handle_unknown='ignore') >>> X = [['Male', 1], ['Female', 3], ['Female', 2]] >>> enc.fit(X) OneHotEncoder(handle_unknown='ignore') >>> enc.categories_ [array(['Female', 'Male'], dtype=object), array([1, 2, 3], dtype=object)] >>> enc.transform([['Female', 1], ['Male', 4]]).toarray() array([[1., 0., 1., 0., 0.], [0., 1., 0., 0., 0.]]) >>> enc.inverse_transform([[0, 1, 1, 0, 0], [0, 0, 0, 1, 0]]) array([['Male', 1], [None, 2]], dtype=object) >>> enc.get_feature_names(['gender', 'group']) array(['gender_Female', 'gender_Male', 'group_1', 'group_2', 'group_3'], dtype=object)
Siempre se puede eliminar la primera columna para cada característica:
>>> drop_enc = OneHotEncoder(drop='first').fit(X) >>> drop_enc.categories_ [array(['Female', 'Male'], dtype=object), array([1, 2, 3], dtype=object)] >>> drop_enc.transform([['Female', 1], ['Male', 2]]).toarray() array([[0., 0., 0.], [1., 1., 0.]])
O bien, eliminar una columna para la característica que sólo tiene 2 categorías:
>>> drop_binary_enc = OneHotEncoder(drop='if_binary').fit(X) >>> drop_binary_enc.transform([['Female', 1], ['Male', 2]]).toarray() array([[0., 1., 0., 0.], [1., 0., 1., 0.]])
Métodos
Ajusta OneHotEncoder a X.
Ajusta OneHotEncoder a X, luego transforma X.
Devuelve los nombres de las características para las características de salida.
Obtiene los parámetros para este estimador.
Convierte los datos a la representación original.
Establece los parámetros de este estimador.
Transformar X utilizando la codificación one-hot.
- fit()¶
Ajusta OneHotEncoder a X.
- Parámetros
- Xarray-like, forma [n_samples, n_features]
Los datos para determinar las categorías de cada característica.
- yNone
Ignorado. Este parámetro sólo existe por compatibilidad con
Pipeline
.
- Devuelve
- self
- fit_transform()¶
Ajusta OneHotEncoder a X, luego transforma X.
Equivalente a fit(X).transform(X) pero más conveniente.
- Parámetros
- Xarray-like, forma [n_samples, n_features]
Los datos a codificar.
- yNone
Ignorado. Este parámetro sólo existe por compatibilidad con
Pipeline
.
- Devuelve
- X_outmatriz dispersa si sparse=True de lo contrario un arreglo 2-d
Entrada transformada.
- get_feature_names()¶
Devuelve los nombres de las características para las características de salida.
- Parámetros
- input_featureslist de str de forma (n_features,)
Nombres de cadenas para las características de entrada, si están disponibles. Por defecto, se utiliza «x0», «x1», … «xn_features».
- Devuelve
- output_feature_namesndarray de forma (n_output_features,)
Arreglo de nombres de características.
- get_params()¶
Obtiene los parámetros para este estimador.
- Parámetros
- deepbool, default=True
Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.
- Devuelve
- paramsdict
Los nombres de los parámetros mapeados a sus valores.
- inverse_transform()¶
Convierte los datos a la representación original.
En caso de que se encuentren categorías desconocidas (todos los ceros en la codificación one-hot), se utiliza
None
para representar esta categoría.- Parámetros
- Xarray-like o matriz dispersa, forma [n_samples, n_encoded_features]
Los datos transformados.
- Devuelve
- X_trarray-like, forma [n_samples, n_features]
Arreglo transformado inverso.
- set_params()¶
Establece los parámetros de este estimador.
El método funciona tanto en estimadores simples como en objetos anidados (como
Pipeline
). Estos últimos tienen parámetros de la forma<component>__<parameter>
para que sea posible actualizar cada componente de un objeto anidado.- Parámetros
- **paramsdict
Parámetros del estimador.
- Devuelve
- selfinstancia del estimador
Instancia del estimador.
- transform()¶
Transformar X utilizando la codificación one-hot.
- Parámetros
- Xarray-like, forma [n_samples, n_features]
Los datos a codificar.
- Devuelve
- X_outmatriz dispersa si sparse=True de lo contrario un arreglo 2-d
Entrada transformada.