Función ML.ONE_HOT_ENCODER
En este documento, se describe la función ML.ONE_HOT_ENCODER
, que te permite codificar una expresión de cadena con un esquema de codificación one-hot o de prueba.
El vocabulario de codificación está en orden alfabético. Los valores y las categorías de NULL
que no están en el vocabulario se codifican con un valor de index
de 0
. Si usas la codificación ficticia, la categoría descartada se codifica con un value
de 0
.
Cuando se usa en la cláusula TRANSFORM
, los valores del vocabulario y las categorías descartadas se calculan durante el entrenamiento, junto con los valores de umbral de frecuencia y k superiores que especificaste, se usan de forma automática en la predicción.
Sintaxis
ML.ONE_HOT_ENCODER(string_expression [, drop] [, top_k] [, frequency_threshold]) OVER()
Argumentos
ML.ONE_HOT_ENCODER
toma los siguientes argumentos:
string_expression
: la expresiónSTRING
que se codificará.drop
: un valorSTRING
que especifica si la función descarta una categoría. Los valores válidos son los siguientes:none
: Conserva todas las categorías. Este es el valor predeterminado.most_frequent
: Descarta la categoría más frecuente encontrada en la expresión de string. Si seleccionas este valor, la función usará la codificación ficticia.
top_k
: un valorINT64
que especifica la cantidad de categorías incluidas en el vocabulario de codificación. La función selecciona las categoríastop_k
más frecuentes en los datos y las usa. Las categorías por debajo de este límite se codifican en0
. Este valor debe ser menor que1,000,000
para evitar problemas debido a la alta dimensionalidad. El valor predeterminado es32,000
.frequency_threshold
: un valorINT64
que limita las categorías incluidas en el vocabulario de codificación según la frecuencia de la categoría. La función usa categorías cuya frecuencia es mayor o igual quefrequency_threshold
. Las categorías por debajo de este umbral se codifican en0
. El valor predeterminado es5
.
Resultado
ML.ONE_HOT_ENCODER
muestra un array de valores de struct, en el formato ARRAY<STRUCT<INT64, FLOAT64>>
. El primer elemento del struct proporciona el índice de la expresión de cadena codificada y el segundo elemento proporciona el valor de la expresión de cadena codificada.
Ejemplo
En el siguiente ejemplo, se realiza una codificación ficticia en un conjunto de expresiones de cadena. Limita el vocabulario de codificación a las diez categorías que aparecen con mayor frecuencia en los datos y que también ocurren cero o más veces.
SELECT f, ML.ONE_HOT_ENCODER(f, 'most_frequent', 10, 0) OVER () AS output FROM UNNEST([NULL, 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd']) AS f ORDER BY f;
El resultado es similar al siguiente:
+------+-----------------------------+ | f | output.index | output.value | +------+--------------+--------------+ | NULL | 0 | 1.0 | | a | 1 | 1.0 | | b | 2 | 1.0 | | b | 2 | 1.0 | | c | 3 | 0.0 | | c | 3 | 0.0 | | c | 3 | 0.0 | | d | 4 | 1.0 | | d | 4 | 1.0 | +------+-----------------------------+
¿Qué sigue?
- Para obtener información sobre el procesamiento previo de atributos, consulta Descripción general del procesamiento previo de atributos.
- Para obtener información sobre las instrucciones y funciones de SQL compatibles con cada tipo de modelo, consulta Recorrido del usuario de extremo a extremo para cada modelo.