APPLY_ONE_HOT_ENCODER

用户定义的转换函数 (UDTF),用于加载独热编码器模型并写出包含编码列的表。

语法

APPLY_ONE_HOT_ENCODER( input‑columns
        USING PARAMETERS model_name = 'model‑name'
            [, drop_first = 'is‑first']
            [, ignore_null = 'ignore']
            [, separator = 'separator‑character']
            [, column_naming = 'name‑output']
            [, null_column_name = 'null‑column‑name'] )

参数

input‑columns
输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。

参数

model_name

模型的名称(不区分大小写)。

存储类别及其对应的级别。
drop_first
布尔值,可以是以下值之一:
  • true (默认值):将分类变量的第一个级别视为引用级别。

  • false:分类变量的每个级别都在输出视图中具有对应的列

ignore_null
布尔值,可以是以下值之一:
  • true (默认值):Null 值将所有对应的 one-hot 二进制列设置为 null。

  • false:将 input-columns 中的 Null 值视为分类级别

separator
在输出表中用于分隔输入变量名称和指示变量级别的字符。要避免使用任何分隔符,可将此参数设置为 null 值。

默认值: 下划线 (_)

column_naming
根据指定的方法将分类级别附加到列名:
  • indices (默认值):使用整数索引来表示分类级别。

  • values/values_relaxed:两种方法都使用分类级别名称。如果出现重复的列名称,该函数会尝试通过附加 _n 来消除其歧义,其中 n 是从零开始的整数索引(_0_1、...)。

    如果该函数无法生成唯一的列名称,它将根据所选的方法来处理:

    • values 返回错误。

    • values_relaxed 恢复使用索引。

null_column_name
用于命名 null 值指示列的字符串,仅在 ignore_null 设置为 falsecolumn_naming 设置为 valuesvalues_relaxed 时使用。

默认值: null

示例

=> SELECT APPLY_ONE_HOT_ENCODER(cyl USING PARAMETERS model_name='one_hot_encoder_model',
drop_first='true', ignore_null='false') FROM mtcars;
cyl | cyl_1 | cyl_2
----+-------+-------
8   |     0 |     1
4   |     0 |     0
4   |     0 |     0
8   |     0 |     1
8   |     0 |     1
8   |     0 |     1
4   |     0 |     0
8   |     0 |     1
8   |     0 |     1
4   |     0 |     0
8   |     0 |     1
6   |     1 |     0
4   |     0 |     0
4   |     0 |     0
6   |     1 |     0
6   |     1 |     0
8   |     0 |     1
8   |     0 |     1
4   |     0 |     0
4   |     0 |     0
6   |     1 |     0
8   |     0 |     1
8   |     0 |     1
6   |     1 |     0
4   |     0 |     0
8   |     0 |     1
8   |     0 |     1
8   |     0 |     1
6   |     1 |     0
6   |     1 |     0
4   |     0 |     0
4   |     0 |     0
(32 rows)

另请参阅