Funktion ML.ONE_HOT_ENCODER
In diesem Dokument wird die Funktion ML.ONE_HOT_ENCODER
beschrieben, mit der Sie einen Stringausdruck mit einem One-Hot- oder Dummy-Codierungsschema codieren können.
Das Codierungsvokabular ist alphabetisch angeordnet. NULL
-Werte und Kategorien, die nicht im Vokabular enthalten sind, werden mit dem index
-Wert 0
codiert. Wenn Sie eine Dummy-Codierung verwenden, wird die verworfene Kategorie mit einem value
von 0
codiert.
Bei Verwendung in der TRANSFORM
-Klausel werden das während des Trainings berechnete Vokabular und die verworfenen Kategoriewerte zusammen mit den obersten k Werten und den von Ihnen angegebenen Häufigkeitsschwellenwerten automatisch für die Vorhersage genutzt.
Syntax
ML.ONE_HOT_ENCODER(string_expression [, drop] [, top_k] [, frequency_threshold]) OVER()
Argumente
ML.ONE_HOT_ENCODER
verwendet die folgenden Argumente:
string_expression
: der zu codierendeSTRING
-Ausdruck.drop
: einSTRING
-Wert, der angibt, ob die Funktion eine Kategorie verwirft. Gültige Werte:none
: Behält alle Kategorien bei. Dies ist der Standardwert.most_frequent
: Verwirft die häufigste Kategorie im Stringausdruck. Wenn Sie diesen Wert auswählen, verwendet die Funktion die Dummy-Codierung.
top_k
: einINT64
-Wert, der die Anzahl der im Codierungsvokabular enthaltenen Kategorien angibt. Die Funktion wählt dietop_k
am häufigsten vorkommenden Kategorien in den Daten aus und verwendet diese. Kategorien unterhalb dieses Schwellenwerts werden zu0
codiert. Dieser Wert muss kleiner als1,000,000
sein, um Probleme wegen hoher Dimensionalität zu vermeiden. Der Standardwert ist32,000
.frequency_threshold
: EinINT64
-Wert, der die Kategorien im Codierungsvokabular anhand der Kategoriehäufigkeit begrenzt. Die Funktion verwendet Kategorien, deren Häufigkeit größer oder gleichfrequency_threshold
ist. Kategorien unterhalb dieses Schwellenwerts werden mit0
codiert. Der Standardwert ist5
.
Ausgabe
ML.ONE_HOT_ENCODER
gibt ein Array von Strukturwerten im Format ARRAY<STRUCT<INT64, FLOAT64>>
zurück. Das erste Element in der Struktur enthält den Index des codierten Stringausdrucks und das zweite Element den Wert des codierten Stringausdrucks.
Beispiel
Im folgenden Beispiel wird eine Dummy-Codierung für eine Reihe von Stringausdrücken ausgeführt. Sie beschränkt das Codierungsvokabular auf die zehn Kategorien, die in den Daten am häufigsten und die auch gar nicht oder mehrmals vorkommen.
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;
Die Ausgabe sieht dann ungefähr so aus:
+------+-----------------------------+ | 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 | +------+-----------------------------+
Nächste Schritte
- Weitere Informationen zur Feature-Vorverarbeitung finden Sie unter Feature-Vorverarbeitung.
- Informationen zu den unterstützten SQL-Anweisungen und -Funktionen für die einzelnen Modelltypen erhalten Sie unter End-to-End-Nutzerpfad für jedes Modell.