class sklearn.preprocessing.OneHotEncoder(*, categories="auto", drop=None, sparse=True, dtype=<class 'numpy.float64'>, handle_unknown='error') [source]

Codifique características categóricas como una matriz numérica de un solo uso.

La entrada a este transformador debe ser una matriz de enteros o cadenas, que denota los valores tomados por características categóricas (discretas). Las características se codifican mediante un esquema de codificación one-hot (también conocido como ‘one-of-K’ o ‘ficticio’). Esto crea una columna binaria para cada categoría y devuelve una matriz dispersa o una matriz densa (dependiendo de la sparse parámetro)

De forma predeterminada, el codificador deriva las categorías en función de los valores únicos de cada función. Alternativamente, también puede especificar el categories a mano.

Esta codificación es necesaria para alimentar datos categóricos a muchos estimadores de scikit-learn, en particular modelos lineales y SVM con los núcleos estándar.

Nota: una codificación one-hot de etiquetas y debe usar un LabelBinarizer en su lugar.

Leer más en el Guía del usuario.

Modificado en la versión 0.20.

Parámetros
categories‘auto’ or a list of array-like, default=’auto’

Categorías (valores únicos) por función:

  • ‘auto’: determina categorías automáticamente a partir de los datos de entrenamiento.
  • lista : 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 sola característica, y deben ordenarse en el caso de valores numéricos.

Las categorías utilizadas se pueden encontrar en el categories_ atributo.

Nuevo en la versión 0.20.

drop{‘first’, ‘if_binary’} or a array-like of shape (n_features,), default=None

Especifica una metodología que se utilizará para eliminar una de las categorías por función. 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, eliminar una categoría rompe la simetría de la representación original y, por lo tanto, puede inducir un sesgo en los modelos posteriores, por ejemplo, para los modelos de regresión o clasificación lineal penalizados.

  • Ninguno: conserva todas las funciones (predeterminado).
  • ‘primero’: elimina la primera categoría en cada función. Si solo hay una categoría presente, la función se eliminará por completo.
  • ‘if_binary’: elimine la primera categoría en cada característica con dos categorías. Las funciones con 1 o más de 2 categorías se dejan intactas.
  • matriz: drop[i] es la categoría en la característica X[:, i] que debería descartarse.

Modificado en la versión 0.23: Opción agregada ‘if_binary’.

sparsebool, default=True

Devolverá una matriz dispersa si se establece en True; de ​​lo contrario, devolverá una matriz.

dtypenumber type, default=float

Tipo de salida deseado.

handle_unknown{‘error’, ‘ignore’}, default=’error’

Ya sea para generar un error o ignorar si una característica categórica desconocida está presente durante la transformación (el valor predeterminado es aumentar). Cuando este parámetro se establece en ‘ignorar’ 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 transformada inversa, una categoría desconocida se indicará como Ninguna.

Atributos
categories_list of arrays

Las categorías de cada característica determinadas durante el ajuste (en orden de las características en X y correspondientes a la salida de transform). Esto incluye la categoría especificada en drop (Si alguna).

drop_idx_array of shape (n_features,)
  • drop_idx_[i] es el índice en categories_[i] de la categoría que se eliminará para cada función.
  • drop_idx_[i] = None si no se va a eliminar ninguna categoría de la función con índice i, por ejemplo, cuando drop='if_binary' y la función no es binaria.
  • drop_idx_ = None si se conservarán todas las características transformadas.

Modificado en la versión 0.23: Añadida la posibilidad de contener None valores.

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 elementos del diccionario (también maneja características con valores de cadena).

sklearn.feature_extraction.FeatureHasher

Realiza una codificación one-hot aproximada de elementos o cadenas de diccionario.

LabelBinarizer

Binariza las etiquetas en una forma de uno contra todos.

MultiLabelBinarizer

Se transforma entre iterable de iterables y un formato de etiquetas múltiples, por ejemplo, una matriz binaria (muestras x clases) que indica la presencia de una etiqueta de clase.

Ejemplos de

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 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 quitar 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 suelte una columna para la función que solo 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

fit(X[, y])

Coloque OneHotEncoder en X.

fit_transform(X[, y])

Coloque OneHotEncoder en X, luego transforme X.

get_feature_names([input_features])

Devuelve los nombres de las funciones para las funciones de salida.

get_params([deep])

Obtenga parámetros para este estimador.

inverse_transform(X)

Convierta los datos a la representación original.

set_params(** parámetros)

Establezca los parámetros de este estimador.

transform(X)

Transforma X usando codificación one-hot.

fit(X, y=None) [source]

Coloque OneHotEncoder en X.

Parámetros
Xarray-like, shape [n_samples, n_features]

Los datos para determinar las categorías de cada característica.

yNone

Ignorado. Este parámetro existe solo por compatibilidad con Pipeline.

Devoluciones
uno mismo
fit_transform(X, y=None) [source]

Coloque OneHotEncoder en X, luego transforme X.

Equivalente a ajustar (X) .transform (X) pero más conveniente.

Parámetros
Xarray-like, shape [n_samples, n_features]

Los datos a codificar.

yNone

Ignorado. Este parámetro existe solo por compatibilidad con Pipeline.

Devoluciones
X_outsparse matrix if sparse=True else a 2-d array

Entrada transformada.

get_feature_names(input_features=None) [source]

Devuelve los nombres de las funciones para las funciones de salida.

Parámetros
input_featureslist of str of shape (n_features,)

Nombres de cadenas para las funciones de entrada, si están disponibles. De forma predeterminada, se utiliza “x0”, “x1”, … “xn_features”.

Devoluciones
output_feature_namesndarray of shape (n_output_features,)

Matriz de nombres de funciones.

get_params(deep=True) [source]

Obtenga 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.

Devoluciones
paramsdict

Nombres de parámetros asignados a sus valores.

inverse_transform(X) [source]

Convierta los datos a la representación original.

En caso de que se encuentren categorías desconocidas (todos ceros en la codificación one-hot), None se utiliza para representar esta categoría.

Parámetros
Xarray-like or sparse matrix, shape [n_samples, n_encoded_features]

Los datos transformados.

Devoluciones
X_trarray-like, shape [n_samples, n_features]

Matriz transformada inversa.

set_params(**params) [source]

Establezca 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.

Devoluciones
selfestimator instance

Instancia de estimador.

transform(X) [source]

Transforma X usando codificación one-hot.

Parámetros
Xarray-like, shape [n_samples, n_features]

Los datos a codificar.

Devoluciones
X_outsparse matrix if sparse=True else a 2-d array

Entrada transformada.

Ejemplos usando sklearn.preprocessing.OneHotEncoder

Aspectos destacados de la versión para scikit-learn 0.23

Aspectos destacados de la versión para scikit-learn 0.23

Transformaciones de características con conjuntos de árboles

Transformaciones de características con conjuntos de árboles

Compatibilidad con funciones categóricas en la mejora de degradado

Compatibilidad con funciones categóricas en la mejora de degradado

Combinar predictores mediante apilamiento

Combinar predictores mediante apilamiento

Regresión de Poisson y pérdida anormal

Regresión de Poisson y pérdida anormal

Regresión Tweedie sobre reclamaciones de seguros

Regresión Tweedie sobre reclamaciones de seguros

Importancia de la permutación vs Importancia de la característica del bosque aleatorio (MDI)

Importancia de la permutación vs Importancia de la característica del bosque aleatorio (MDI)

Errores comunes en la interpretación de coeficientes de modelos lineales

Errores comunes en la interpretación de coeficientes de modelos lineales

Transformador de columna con tipos mixtos

Transformador de columna con tipos mixtos