ML.LABEL_ENCODER 函数

本文档介绍 ML.LABEL_ENCODER 函数,您可以使用此函数将字符串表达式编码为 [0, <number of categories>] 中的 INT64 值。

编码词汇表按字母顺序排列。NULL 值和词汇表中不包含的类别均编码为 0

TRANSFORM 子句中使用时,训练期间计算的词汇表值,以及您指定的前 k 值和频率阈值将自动用于预测。

语法

ML.LABEL_ENCODER(string_expression [, top_k] [, frequency_threshold]) OVER()

ML.LABEL_ENCODER 接受以下参数:

  • string_expression:要编码的 STRING 表达式。
  • top_k:指定编码词汇表中包含的类别数量的 INT64 值。函数选择数据中 top_k 个最常见的类别,并使用这些类别;此阈值以下的类别编码为 0。此值必须小于 1,000,000,以避免因维度过高而导致问题。默认值为 32,000
  • frequency_threshold:根据类别频率限制编码词汇表中包含的类别的 INT64 值。函数使用频率大于或等于 frequency_threshold 的类别;低于此阈值的类别编码为 0。默认值为 5

输出

ML.LABEL_ENCODER 会返回表示编码的字符串表达式的 INT64 值。

示例

以下示例对一组字符串表达式执行标签编码。它将编码词汇表限制为数据中出现次数最多的两个类别,以及出现两次或更多次的类别。

SELECT f, ML.LABEL_ENCODER(f, 2, 2) OVER () AS output
FROM UNNEST([NULL, 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd']) AS f
ORDER BY f;

输出类似于以下内容:

+------+--------+
|  f   | output |
+------+--------+
| NULL |      0 |
| a    |      0 |
| b    |      1 |
| b    |      1 |
| c    |      2 |
| c    |      2 |
| c    |      2 |
| d    |      0 |
| d    |      0 |
+------+--------+

后续步骤