La funzione ML.ONE_HOT_ENCODER
Questo documento descrive la funzione ML.ONE_HOT_ENCODER
, che consente di
codificare un'espressione stringa utilizzando uno schema di codifica
one-hot
o fittizio.
Il vocabolario della codifica è in ordine alfabetico. I valori e le categorie di NULL
non presenti nel vocabolario sono codificati con un valore index
di 0
. Se utilizzi
la codifica fittizia, la categoria rimossa viene codificata con un valore value
pari a 0
.
Se utilizzati nella clausola TRANSFORM
, i valori del vocabolario e della categoria persa calcolati durante l'addestramento, insieme ai valori k principali e alla soglia di frequenza specificati, vengono utilizzati automaticamente nella previsione.
Sintassi
ML.ONE_HOT_ENCODER(string_expression [, drop] [, top_k] [, frequency_threshold]) OVER()
Argomenti
ML.ONE_HOT_ENCODER
accetta i seguenti argomenti:
string_expression
: l'espressioneSTRING
da codificare.drop
: un valoreSTRING
che specifica se la funzione ignora una categoria. I valori validi sono:none
: conserva tutte le categorie. Questo è il valore predefinito.most_frequent
: elimina la categoria più frequente trovata nell'espressione stringa. Se selezioni questo valore, la funzione utilizzerà la codifica fittizia.
top_k
: un valoreINT64
che specifica il numero di categorie incluse nel vocabolario di codifica. La funzione seleziona letop_k
categorie più frequenti nei dati e le utilizza; le categorie al di sotto di questa soglia sono codificate come0
. Questo valore deve essere inferiore a1,000,000
per evitare problemi dovuti all'elevata dimensionalità. Il valore predefinito è32,000
.frequency_threshold
: un valoreINT64
che limita le categorie incluse nel vocabolario di codifica in base alla frequenza della categoria. La funzione utilizza categorie la cui frequenza è maggiore o uguale afrequency_threshold
; le categorie al di sotto di questa soglia sono codificate in0
. Il valore predefinito è5
.
Output
ML.ONE_HOT_ENCODER
restituisce un array di valori di struct nel formato ARRAY<STRUCT<INT64, FLOAT64>>
. Il primo elemento dello struct fornisce l'indice dell'espressione di stringa codificata, mentre il secondo fornisce il valore dell'espressione di stringa codificata.
Esempio
Nell'esempio seguente viene eseguita la codifica fittizia su un insieme di espressioni di tipo stringa. Limita il vocabolario di codifica alle dieci categorie che ricorrono con maggiore frequenza nei dati e che ricorrono anche zero o più volte.
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;
L'output è simile al seguente:
+------+-----------------------------+ | 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 | +------+-----------------------------+
Passaggi successivi
- Per informazioni sulla pre-elaborazione delle funzionalità, consulta Panoramica della pre-elaborazione delle funzionalità.
- Per informazioni sulle istruzioni e sulle funzioni SQL supportate per ogni tipo di modello, consulta Percorso dell'utente end-to-end per ogni modello.