Função ML.ONE_HOT_ENCODER
Neste documento, descrevemos a função ML.ONE_HOT_ENCODER
, que permite
codificar uma expressão de string usando um esquema de codificação
one-hot
ou fictício.
O vocabulário de codificação é classificado em ordem alfabética. Os valores e as categorias NULL
que não estão no vocabulário são codificados com o valor index
de 0
. Se você usar a codificação fictícia, a categoria descartada será codificada com value
de 0
.
Quando usado na cláusula TRANSFORM
, o vocabulário e os valores de categorias descartados calculados durante o treinamento, além dos valores especificados de limite de frequência e top k, são usados automaticamente na previsão.
Sintaxe
ML.ONE_HOT_ENCODER(string_expression [, drop] [, top_k] [, frequency_threshold]) OVER()
Argumentos
ML.ONE_HOT_ENCODER
usa os seguintes argumentos:
string_expression
: a expressãoSTRING
a ser codificada.drop
: um valorSTRING
que especifica se a função descarta uma categoria. Estes são os valores válidos:none
: retém todas as categorias. Esse é o valor padrão.most_frequent
: descarta a categoria mais frequente encontrada na expressão da string. A seleção desse valor faz com que a função use a codificação fictícia.
top_k
: um valorINT64
que especifica o número de categorias incluídas no vocabulário de codificação. A função seleciona as categorias mais frequentes detop_k
nos dados e as usa. As categorias abaixo desse limite são codificadas com0
. Esse valor precisa ser menor que1,000,000
para evitar problemas devido à alta dimensionalidade. O valor padrão é32,000
.frequency_threshold
: um valorINT64
que limita as categorias incluídas no vocabulário de codificação com base na frequência da categoria. A função usa categorias com frequência maior ou igual afrequency_threshold
. As categorias abaixo desse limite são codificadas com0
. O valor padrão é5
.
Saída
ML.ONE_HOT_ENCODER
retorna uma matriz de valores de struct, no formato ARRAY<STRUCT<INT64, FLOAT64>>
. O primeiro elemento no struct fornece o índice da expressão de string codificada, e o segundo elemento fornece o valor da expressão de string codificada.
Exemplo
O exemplo a seguir executa a codificação fictícia em um conjunto de expressões de string. Ele limita o vocabulário de codificação às dez categorias que ocorrem com mais frequência nos dados e que também ocorrem zero ou mais vezes.
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;
A saída será assim:
+------+-----------------------------+ | 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 | +------+-----------------------------+
A seguir
- Para informações sobre o pré-processamento de atributos, consulte Visão geral do pré-processamento de atributos.
- Para informações sobre as funções e instruções SQL compatíveis com cada tipo de modelo, consulte Jornada do usuário completa de cada modelo.