-
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ísticaX[:, 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 endrop
(Si alguna). -
drop_idx_array of shape (n_features,)
-
-
drop_idx_[i]
es el índice encategories_[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 índicei
, por ejemplo, cuandodrop='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
Transformaciones de características con conjuntos de árboles
Compatibilidad con funciones categóricas en la mejora de degradado
Combinar predictores mediante apilamiento
Regresión de Poisson y pérdida anormal
Regresión Tweedie sobre reclamaciones de seguros
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
Transformador de columna con tipos mixtos