NORMALIZE_FIT
注意
此函数不同于 NORMALIZE,后者直接输出具有标准化结果的视图,而不是将标准化参数存储到模型中以供以后操作使用。NORMALIZE_FIT
计算输入关系中每个指定列的标准化参数。生成的模型将存储标准化参数。例如,对于 MinMax
标准化,每列的最小值和最大值都存储在模型中。生成的模型用作函数 APPLY_NORMALIZE 和 REVERSE_NORMALIZE 的输入。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
NORMALIZE_FIT ( 'model‑name', 'input‑relation', 'input‑columns', 'normalization‑method'
[ USING PARAMETERS [exclude_columns = 'excluded‑columns'] [, output_view = 'output‑view'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含需要标准化的数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步hcatalog
架构,然后运行机器学习功能。 - input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列的数据类型必须为数字。
- normalization‑method
- 要使用的标准化方法,为以下之一:
-
minmax
-
zscore
-
robust_zscore
如果指定
robust_zscore
,则NORMALIZE_FIT
使用函数 APPROXIMATE_MEDIAN [聚合]。所有标准化方法都将忽略输入关系中的无穷大、负无穷大或 NULL 值。
-
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
output_view
- 包含输入关系中所有列的视图的名称,其中指定输入列已标准化。
模型属性
data
- 标准化方法设置为
minmax
:-
colNames
:模型列名称 -
mins
:每列的最小值 -
maxes
:每列的最大值
-
特权
非超级用户:
-
对创建模型的架构的 CREATE 权限
-
对输入关系的 SELECT 权限
-
输出视图架构的 CREATE 权限
示例
以下示例使用表 mtcars
中的 wt
和 hp
列创建具有 NORMALIZE_FIT
的模型,然后在对 APPLY_NORMALIZE 和 REVERSE_NORMALIZE 的连续调用中使用此模型。
=> SELECT NORMALIZE_FIT('mtcars_normfit', 'mtcars', 'wt,hp', 'minmax');
NORMALIZE_FIT
---------------
Success
(1 row)
以下对 APPLY_NORMALIZE
的调用指定表 mtcars
中的 hp
和 cyl
列,其中 hp
在标准化模型中,而 cyl
不在标准化模型中:
=> CREATE TABLE mtcars_normalized AS SELECT APPLY_NORMALIZE (hp, cyl USING PARAMETERS model_name = 'mtcars_normfit') FROM mtcars;
CREATE TABLE
=> SELECT * FROM mtcars_normalized;
hp | cyl
--------------------+-----
0.434628975265018 | 8
0.681978798586572 | 8
0.434628975265018 | 6
1 | 8
0.540636042402827 | 8
0 | 4
0.681978798586572 | 8
0.0459363957597173 | 4
0.434628975265018 | 8
0.204946996466431 | 6
0.250883392226148 | 6
0.049469964664311 | 4
0.204946996466431 | 6
0.201413427561837 | 4
0.204946996466431 | 6
0.250883392226148 | 6
0.049469964664311 | 4
0.215547703180212 | 4
0.0353356890459364 | 4
0.187279151943463 | 6
0.452296819787986 | 8
0.628975265017668 | 8
0.346289752650177 | 8
0.137809187279152 | 4
0.749116607773852 | 8
0.144876325088339 | 4
0.151943462897526 | 4
0.452296819787986 | 8
0.452296819787986 | 8
0.575971731448763 | 8
0.159010600706714 | 4
0.346289752650177 | 8
(32 rows)
=> SELECT REVERSE_NORMALIZE (hp, cyl USING PARAMETERS model_name='mtcars_normfit') FROM mtcars_normalized;
hp | cyl
-----+-----
175 | 8
245 | 8
175 | 6
335 | 8
205 | 8
52 | 4
245 | 8
65 | 4
175 | 8
110 | 6
123 | 6
66 | 4
110 | 6
109 | 4
110 | 6
123 | 6
66 | 4
113 | 4
62 | 4
105 | 6
180 | 8
230 | 8
150 | 8
91 | 4
264 | 8
93 | 4
95 | 4
180 | 8
180 | 8
215 | 8
97 | 4
150 | 8
(32 rows)
以下对 REVERSE_NORMALIZE
的调用还指定了表 mtcars
中的 hp
和 cyl
列,其中 hp
在标准化模型 mtcars_normfit
中,而 cyl
不在标准化模型中。
=> SELECT REVERSE_NORMALIZE (hp, cyl USING PARAMETERS model_name='mtcars_normfit') FROM mtcars_normalized;
hp | cyl
-----------------+-----
205.000005722046 | 8
150.000000357628 | 8
150.000000357628 | 8
93.0000016987324 | 4
174.99999666214 | 8
94.9999992102385 | 4
214.999997496605 | 8
97.0000009387732 | 4
245.000006556511 | 8
174.99999666214 | 6
335 | 8
245.000006556511 | 8
62.0000002086163 | 4
174.99999666214 | 8
230.000002026558 | 8
52 | 4
263.999997675419 | 8
109.999999523163 | 6
123.000002324581 | 6
64.9999996386468 | 4
66.0000005029142 | 4
112.999997898936 | 4
109.999999523163 | 6
180.000000983477 | 8
180.000000983477 | 8
108.999998658895 | 4
109.999999523163 | 6
104.999999418855 | 6
123.000002324581 | 6
180.000000983477 | 8
66.0000005029142 | 4
90.9999999701977 | 4
(32 rows)