Vertica 支持机器学习函数,可在对数据进行分析之前根据需要准备数据。
数据准备
- 1: BALANCE
- 2: CORR_MATRIX
- 3: DETECT_OUTLIERS
- 4: IFOREST
- 5: IMPUTE
- 6: NORMALIZE
- 7: NORMALIZE_FIT
- 8: ONE_HOT_ENCODER_FIT
- 9: PCA
- 10: SUMMARIZE_CATCOL
- 11: SUMMARIZE_NUMCOL
- 12: SVD
1 - BALANCE
根据 response_column 返回输入数据的平均分布视图。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
BALANCE ( 'output‑view', 'input‑relation', 'response‑column', 'balance‑method'
[ USING PARAMETERS sampling_ratio=ratio ] )
参数
- output‑view
- Vertica 保存来自输入关系的平衡数据的视图的名称。
注意
注意: 此函数生成的视图采用随机函数。每当在查询中使用时,内容可能都有所不同。为确保视图操作可预测,请将其存储到常规表中。 - input‑relation
- 包含函数用于创建更平衡的数据集的数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步hcatalog
架构,然后运行机器学习功能。 - response‑column
- 表示 VARCHAR 或 INTEGER 类型的因变量输入列的名称。
- balance‑method
- 指定从少数类和多数类中选择数据的方法,为以下之一。
-
hybrid_sampling
:对不同类执行过采样和欠采样,因此平等展现每个类。 -
over_sampling
:对所有类过采样,多数类除外,适用于多数类的基数。 -
under_sampling
:对所有类欠采样,少数类除外,适用于少数类的基数。 -
weighted_sampling
:under_sampling
的别名。
-
参数
ratio
- 多数类与少数类之间的理想比例。与 balance 方法
hybrid_sampling
配合使用时,此值无效。默认值: 1.0
特权
非超级用户:
-
对输入关系的 SELECT 权限
-
输出视图架构的 CREATE 权限
示例
=> CREATE TABLE backyard_bugs (id identity, bug_type int, finder varchar(20));
CREATE TABLE
=> COPY backyard_bugs FROM STDIN;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 1|Ants
>> 1|Beetles
>> 3|Ladybugs
>> 3|Ants
>> 3|Beetles
>> 3|Caterpillars
>> 2|Ladybugs
>> 3|Ants
>> 3|Beetles
>> 1|Ladybugs
>> 3|Ladybugs
>> \.
=> SELECT bug_type, COUNT(bug_type) FROM backyard_bugs GROUP BY bug_type;
bug_type | COUNT
----------+-------
2 | 1
1 | 3
3 | 7
(3 rows)
=> SELECT BALANCE('backyard_bugs_balanced', 'backyard_bugs', 'bug_type', 'under_sampling');
BALANCE
--------------------------
Finished in 1 iteration
(1 row)
=> SELECT bug_type, COUNT(bug_type) FROM backyard_bugs_balanced GROUP BY bug_type;
----------+-------
2 | 1
1 | 2
3 | 1
(3 rows)
另请参阅
2 - CORR_MATRIX
采用数字列的输入关系,计算其每对输入列之间的皮尔逊相关系数。函数作为多阶段转换函数实施。
语法
CORR_MATRIX ( input-columns ) OVER()
参数
-
input-columns
- 输入表中的列的逗号分隔列表。输入列可为任何数字类型或 BOOL,但将在内部转换为 FLOAT。输入列数必须大于 1 但不得大于 1600。
返回
CORR_MATRIX 以三元组格式返回关联矩阵。也就是说,每个成对关联通过三个返回的列标识:第一个变量的名称、第二个变量的名称和每对输入列的关联值。函数还会返回两个额外的列: number_of_ignored_input_rows
和 number_of_processed_input_rows
。第四/五列的值表示输入中忽略/用于计算相应关联值的行数。任何包含 NULL、Inf 或 NaN 的输入对都将被忽略。
关联矩阵对称,所有对角元素的值均为 1;因此,只能返回对角线以上元素的值 — 即上三角。尽管如此,函数返回整个矩阵以简化任何后续操作。因此,输出行数为:
(#input‑columns)^2
前两个输出列为 VARCHAR(128) 类型,第三个输出列为 FLOAT 类型,最后两个输出列为 INT 类型。
注意
-
OVER 子句的内容必须为空。
-
当输入表为空时,函数不会返回任何行。
-
当 X_i 和 Y_i 中的任何一个为 NULL、Inf 或 NaN 时,该对将不纳入 CORR(X, Y) 计算。也就是说,任何包含 NULL、Inf 或 NaN 的输入对都将被忽略。
-
对于 (X,X) 对,无论 X 的内容如何:CORR(X,X) = 1、number_of_ignored_input_rows = 0 且 number_of_processed_input_rows = #input_rows。
-
当 (NSUMX2 == SUMXSUMX) 或 (NSUMY2 == SUMYSUMY) 时,则 CORR(X, Y) 的值将为 NULL。理论上,可能发生在具有常数值的列的情况;然而,由于舍入误差,可能无法始终观察到。
-
在特殊情况下,即 (X_i,Y_i) 的所有对值均包含 NULL、inf 或 NaN 且 X != Y:CORR(X,Y)=NULL。
示例
下面的示例使用 iris 数据集。*
3 - DETECT_OUTLIERS
根据异常值阈值返回数据集中的异常值。输出为包含异常值的表。 DETECT_OUTLIERS
使用检测方法 robust_szcore
使每个输入列实现标准化。然后,函数将包含大于默认或指定阈值的标准化值的所有行标识为异常值。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
DETECT_OUTLIERS ( 'output‑table', 'input‑relation','input‑columns', 'detection‑method'
[ USING PARAMETERS
[outlier_threshold = threshold]
[, exclude_columns = 'excluded‑columns']
[, partition_columns = 'partition‑columns'] ] )
参数
- output‑table
- Vertica 保存所选
input_columns
的异常值行的表的名称。所有列均存在于此表中。 - input‑relation
- 包含异常数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步hcatalog
架构,然后运行机器学习功能。 - input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列的类型必须为 数字。
- detection‑method
- 要使用的异常值检测方法,设置为
robust_zscore
。
参数
outlier_threshold
- 用于将该行标识为异常值的行中的最小标准化值。
默认值: 3.0
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
partition_columns
- 定义分区的输入表或视图中的列名的逗号分隔列表。
DETECT_OUTLIERS
分别检测每个分区中的异常值。默认值: 空列表
特权
非超级用户:
-
对输入关系的 SELECT 权限
-
对输出表的 CREATE 权限
示例
以下示例显示了 DETECT_OUTLIERS
的用法:
=> CREATE TABLE baseball_roster (id identity, last_name varchar(30), hr int, avg float);
CREATE TABLE
=> COPY baseball_roster FROM STDIN;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> Polo|7|.233
>> Gloss|45|.170
>> Gus|12|.345
>> Gee|1|.125
>> Laus|3|.095
>> Hilltop|16|.222
>> Wicker|78|.333
>> Scooter|0|.121
>> Hank|999999|.8888
>> Popup|35|.378
>> \.
=> SELECT * FROM baseball_roster;
id | last_name | hr | avg
----+-----------+--------+--------
3 | Gus | 12 | 0.345
4 | Gee | 1 | 0.125
6 | Hilltop | 16 | 0.222
10 | Popup | 35 | 0.378
1 | Polo | 7 | 0.233
7 | Wicker | 78 | 0.333
9 | Hank | 999999 | 0.8888
2 | Gloss | 45 | 0.17
5 | Laus | 3 | 0.095
8 | Scooter | 0 | 0.121
(10 rows)
=> SELECT DETECT_OUTLIERS('baseball_outliers', 'baseball_roster', 'id, hr, avg', 'robust_zscore' USING PARAMETERS
outlier_threshold=3.0);
DETECT_OUTLIERS
--------------------------
Detected 2 outliers
(1 row)
=> SELECT * FROM baseball_outliers;
id | last_name | hr | avg
----+-----------+------------+-------------
7 | Wicker | 78 | 0.333
9 | Hank | 999999 | 0.8888
(2 rows)
4 - IFOREST
训练并返回隔离森林 (iForest) 模型。训练模型后,可以使用 APPLY_IFOREST 函数预测输入关系中的异常值。
有关 iForest 算法工作原理的详细信息,请参阅隔离森林。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
IFOREST( 'model‑name', 'input‑relation', 'input‑columns' [ USING PARAMETERS param=value[,...] ] )
参数
- model-name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含 IFOREST 的输入数据的表或视图。
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 列类型必须为 CHAR、VARCHAR、BOOL、INT 或 FLOAT。
CHAR、VARCHAR 和 BOOL 类型的列视为分类特征;所有其他类型的列则视为数字特征。
参数
exclude_columns
- input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
默认值: 空字符串 ('')
ntree
- [1, 1000] 范围内的整数,指定森林中树的数量。
默认值: 100
sampling_size
- (0.0, 1.0] 范围内的浮点数,指定随机挑选的部分输入数据集,不做替换,用于对每个树进行训练。
默认值: 0.632
col_sample_by_tree
- (0.0, 1.0] 范围内的浮点数,指定为训练每个树而随机挑选的部分列。
默认值: 1.0
max_depth
- [1, 100] 范围内的整数,指定生长每个树的最大深度。
默认值: 10
nbins
- [2, 1000] 范围内的整数,指定用于离散连续特征的 bin 数量。
默认值: 32
模型属性
details
- 有关函数预测变量列的详细信息,包括:
-
predictor
:预测变量的名称与训练模型时指定的顺序相同。 -
type
:预测变量的类型的顺序与其名称在predictor
中的顺序相同。
-
tree_count
- 模型中的树的数量。
rejected_row_count
- input-relation 中因包含无效值而被跳过的行数。
accepted_row_count
- input-relation 中的总行数减去
rejected_row_count
。 call_string
- 调用函数时指定的所有输入实参的值。
特权
非超级用户:
-
对创建模型的架构的 CREATE 权限
-
对输入关系的 SELECT 权限
示例
在以下示例中,函数的输入数据包含 INT、VARCHAR 和 FLOAT 类型的列:
=> SELECT IFOREST('baseball_anomalies','baseball','team, hr, hits, avg, salary' USING PARAMETERS ntree=75, sampling_size=0.7,
max_depth=15);
IFOREST
----------
Finished
(1 row)
您可以通过调用 GET_MODEL_SUMMARY 并检查详细信息部分来验证是否正确读取所有输入列:
=> SELECT GET_MODEL_SUMMARY(USING PARAMETERS model_name='baseball_anomalies');
GET_MODEL_SUMMARY
-------------------------------------------------------------------------------------------------------------------------------------
===========
call_string
===========
SELECT iforest('public.baseball_anomalies', 'baseball', 'team, hr, hits, avg, salary' USING PARAMETERS exclude_columns='', ntree=75,
sampling_size=0.7, col_sample_by_tree=1, max_depth=15, nbins=32);
=======
details
=======
predictor| type
---------+----------------
team |char or varchar
hr | int
hits | int
avg |float or numeric
salary |float or numeric
===============
Additional Info
===============
Name |Value
------------------+-----
tree_count | 75
rejected_row_count| 0
accepted_row_count|1000
(1 row)
另请参阅
5 - IMPUTE
根据每列中变量的观察值,使用平均值或众数估算数据集中的缺失值。此函数支持数字和分类数据类型。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
IMPUTE( 'output‑view', 'input‑relation', 'input‑columns', 'method'
[ USING PARAMETERS [exclude_columns = 'excluded‑columns'] [, partition_columns = 'partition‑columns'] ] )
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变参数
- output‑view
- 显示输入表的视图的名称,其中包含估算值而不是缺失值。在此视图中,不含缺失值的行保持不变,而含缺失值的行则根据指定方法进行修改。
- input‑relation
- 包含缺失值插补数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步hcatalog
架构,然后运行机器学习功能。 - input‑columns
- 将替换缺失值的输入列的逗号分隔列表,或使用星号 (*) 指定所有列。所有列的类型必须为数字或布尔值。
- method
- 计算缺失值替换的方法,为以下之一:
-
mean
:每列中的缺失值将替换为该列的平均值。此方法仅适用于数字数据。 -
mode
:每列中的缺失值将替换为该列中出现频率最高的值。此方法仅适用于分类数据。
-
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
partition_columns
- 定义分区的输入关系中的列名的逗号分隔列表。
特权
非超级用户:
-
对输入关系的 SELECT 权限
-
输出视图架构的 CREATE 权限
示例
在 small_input_impute
表上执行 IMPUTE
,指定平均值方法:
=> SELECT impute('output_view','small_input_impute', 'pid, x1,x2,x3,x4','mean'
USING PARAMETERS exclude_columns='pid');
impute
--------------------------
Finished in 1 iteration
(1 row)
执行IMPUTE
,指定模式方法:
=> SELECT impute('output_view3','small_input_impute', 'pid, x5,x6','mode' USING PARAMETERS exclude_columns='pid');
impute
--------------------------
Finished in 1 iteration
(1 row)
另请参阅
估算缺失值6 - NORMALIZE
对输入关系运行标准化算法。输出是具有标准化数据的视图。
注意
注意: 此函数与 NORMALIZE_FIT 不同,后者用于创建和存储模型,而不是创建视图定义。这可能会导致两个函数的性能特征不同。这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
NORMALIZE ( 'output‑view', 'input‑relation', 'input‑columns', 'normalization‑method'
[ USING PARAMETERS exclude_columns = 'excluded‑columns' ] )
参数
- output‑view
- 显示输入关系的视图的名称,其中标准化数据替换了指定的输入列。 .
- input‑relation
- 包含需要标准化的数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步hcatalog
架构,然后运行机器学习功能。 - input‑columns
- 数字输入列的逗号分隔列表,其中包含要标准化的值,或用于选择所有列的星号 (*)。
- normalization‑method
- 要使用的标准化方法,为以下之一:
-
minmax
-
zscore
-
robust_zscore
如果表中出现无穷大值,该方法将自动忽略这些值。
-
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
特权
非超级用户:
-
对输入关系的 SELECT 权限
-
输出视图架构的 CREATE 权限
示例
这些示例显示了如何在 mtcars 表的 wt
和 hp
列上使用 NORMALIZE 函数。
执行 NORMALIZE 函数,并指定 minmax
方法:
=> SELECT NORMALIZE('mtcars_norm', 'mtcars',
'wt, hp', 'minmax');
NORMALIZE
--------------------------
Finished in 1 iteration
(1 row)
执行 NORMALIZE 函数,并指定 zscore
方法:
=> SELECT NORMALIZE('mtcars_normz','mtcars',
'wt, hp', 'zscore');
NORMALIZE
--------------------------
Finished in 1 iteration
(1 row)
执行 NORMALIZE 函数,并指定 robust_zscore
方法:
=> SELECT NORMALIZE('mtcars_normz', 'mtcars',
'wt, hp', 'robust_zscore');
NORMALIZE
--------------------------
Finished in 1 iteration
(1 row)
另请参阅
标准化数据7 - 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)
另请参阅
标准化数据8 - ONE_HOT_ENCODER_FIT
为要编码的每个功能生成每个类别级别的排序列表,并存储模型。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
ONE_HOT_ENCODER_FIT ( 'model‑name', 'input‑relation','input‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, output_view = 'output‑view']
[, extra_levels = 'category‑levels'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含用于独热编码的数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步hcatalog
架构,然后运行机器学习功能。 - input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列必须为 INTEGER、BOOLEAN、VARCHAR 或日期。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
output_view
- 存储输入关系和独热编码的视图的名称。按照列在输入关系中出现的顺序返回列,独热编码列附加在原始列之后。
extra_levels
- 每个类别中不属于输入关系的附加级别。此参数应作为符合 JSON 标准的字符串传递,将类别名称作为键,将每个类别中的附加级别列表作为值。
模型属性
call_string
- 在调用函数时指定的所有输入实参的值。
-
varchar_categories integer_categories boolean_categories date_categories
- 以下参数的设置:
-
category_name
:列名称 -
category_level
:类别的级别,按类别排序 -
category_level_index
:此分类级别在类别级别的排序列表中的索引。
-
特权
非超级用户:
-
对创建模型的架构的 CREATE 权限
-
对输入关系的 SELECT 权限
-
输出视图架构的 CREATE 权限
示例
=> SELECT ONE_HOT_ENCODER_FIT ('one_hot_encoder_model','mtcars','*'
USING PARAMETERS exclude_columns='mpg,disp,drat,wt,qsec,vs,am');
ONE_HOT_ENCODER_FIT
--------------------
Success
(1 row)
另请参阅
9 - PCA
通过输入表/视图计算主组件。结果保存在 PCA 模型中。在内部,PCA 使用基于输入日期构建的协方差矩阵的 SVD 来查找组件。该分解的奇异值也保存在 PCA 模型中,作为其一部分。可以在不同的运行中同时翻转一个主组件的所有元素符号。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
PCA ( 'model‑name', 'input‑relation', 'input‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, num_components = num‑components]
[, scale = is‑scaled]
[, method = 'method'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含 PCA 输入数据的表或视图。
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 所有输入列都必须为数字数据类型。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
num_components
- 要保留在模型中的组件的数量。如果未提供此值,则保留所有组件。组件的最大数量是内部调用 SVD 返回的非零奇异值的数量。该数字小于或等于 SVD(列数,行数)。
scale
- 一个布尔值,指定是否在准备步骤中标准化列:
-
True
:使用相关系数矩阵,而非协方差矩阵。 -
False
(默认值)
-
method
- 用于计算 PCA 的方法,可以设置为
LAPACK
。
模型属性
columns
- 用于创建 PCA 模型的输入关系中的列信息:
-
index
-
name
-
singular_values
- 找到的奇异值信息。这些值按降序排列:
-
index
-
value
-
explain_variance:对应于该奇异值的数据方差的百分比
-
accumulated_explained_variance:删除当前奇异值之后的所有奇异值后,可以保留的数据方差的百分比
-
principal_components
- 上述奇异值对应的主组件:
-
index:各组件中元素的索引
-
PC1
-
PC2
-
...
-
counters
- 在训练模型期间收集的信息,以名称-值对形式存储:
-
counter_name
-
Accepted_row_count:数据中有效行的数量
-
denied_row_count:数据中无效行(具有 NULL、INF 或 NaN)的数量
-
iteration_count:迭代次数,对于当前的 PCA 操作,始终为 1
-
-
counter_value
-
call_string
- 创建模型的函数调用。
特权
非超级用户:
-
对创建模型的架构的 CREATE 权限
-
对输入关系的 SELECT 权限
示例
=> SELECT PCA ('pcamodel', 'world','country,HDI,em1970,em1971,em1972,em1973,em1974,em1975,em1976,em1977,
em1978,em1979,em1980,em1981,em1982,em1983,em1984 ,em1985,em1986,em1987,em1988,em1989,em1990,em1991,em1992,
em1993,em1994,em1995,em1996,em1997,em1998,em1999,em2000,em2001,em2002,em2003,em2004,em2005,em2006,em2007,
em2008,em2009,em2010,gdp1970,gdp1971,gdp1972,gdp1973,gdp1974,gdp1975,gdp1976,gdp1977,gdp1978,gdp1979,gdp1980,
gdp1981,gdp1982,gdp1983,gdp1984,gdp1985,gdp1986,gdp1987,gdp1988,gdp1989,gdp1990,gdp1991,gdp1992,gdp1993,
gdp1994,gdp1995,gdp1996,gdp1997,gdp1998,gdp1999,gdp2000,gdp2001,gdp2002,gdp2003,gdp2004,gdp2005,gdp2006,
gdp2007,gdp2008,gdp2009,gdp2010' USING PARAMETERS exclude_columns='HDI,country');
PCA
---------------------------------------------------------------
Finished in 1 iterations.
Accepted Rows: 96 Rejected Rows: 0
(1 row)
=> CREATE TABLE worldPCA AS SELECT
APPLY_PCA (HDI,country,em1970,em1971,em1972,em1973,em1974,em1975,em1976,em1977,em1978,em1979,
em1980,em1981,em1982,em1983,em1984 ,em1985,em1986,em1987,em1988,em1989,em1990,em1991,em1992,em1993,em1994,
em1995,em1996,em1997,em1998,em1999,em2000,em2001,em2002,em2003,em2004,em2005,em2006,em2007,em2008,em2009,
em2010,gdp1970,gdp1971,gdp1972,gdp1973,gdp1974,gdp1975,gdp1976,gdp1977,gdp1978,gdp1979,gdp1980,gdp1981,gdp1982,
gdp1983,gdp1984,gdp1985,gdp1986,gdp1987,gdp1988,gdp1989,gdp1990,gdp1991,gdp1992,gdp1993,gdp1994,gdp1995,
gdp1996,gdp1997,gdp1998,gdp1999,gdp2000,gdp2001,gdp2002,gdp2003,gdp2004,gdp2005,gdp2006,gdp2007,gdp2008,
gdp2009,gdp2010 USING PARAMETERS model_name='pcamodel', exclude_columns='HDI, country', key_columns='HDI,
country',cutoff=.3)OVER () FROM world;
CREATE TABLE
=> SELECT * FROM worldPCA;
HDI | country | col1
------+---------------------+-------------------
0.886 | Belgium | 79002.2946705704
0.699 | Belize | -25631.6670012556
0.427 | Benin | -40373.4104598122
0.805 | Chile | -16805.7940082156
0.687 | China | -37279.2893141103
0.744 | Costa Rica | -19505.5631231635
0.4 | Cote d'Ivoire | -38058.2060339272
0.776 | Cuba | -23724.5779612041
0.895 | Denmark | 117325.594028813
0.644 | Egypt | -34609.9941604549
...
(96 rows)
=> SELECT APPLY_INVERSE_PCA (HDI, country, col1
USING PARAMETERS model_name = 'pcamodel', exclude_columns='HDI,country',
key_columns = 'HDI, country') OVER () FROM worldPCA;
HDI | country | em1970 | em1971 | em1972 | em1973 |
em1974 | em1975 | em1976| em1977 | em1978 | em1979
| em1980 | em1981 | em1982 | em1983 | em1984 |em1985
| em1986 | em1987 | em1988 | em1989 | em1990 | em1991
| em1992 | em1993| em1994 | em1995 | em1996 | em1997
| em1998 | em1999 | em2000 | em2001 |em2002 |
em2003 | em2004 | em2005 | em2006 | em2007 | em2008
| em2009 | em2010 | gdp1970 | gdp1971 | gdp1972 | gdp1973
| gdp1974 | gdp1975 | gdp1976 | gdp1977 |gdp1978 | gdp1979
| gdp1980 | gdp1981 | gdp1982 | gdp1983 | gdp1984 | gdp1985
| gdp1986| gdp1987 | gdp1988 | gdp1989 | gdp1990 | gdp1991
| gdp1992 | gdp1993 | gdp1994 | gdp1995 | gdp1996 |
gdp1997 | gdp1998 | gdp1999 | gdp2000 | gdp2001 | gdp2002
| gdp2003 |gdp2004 | gdp2005 | gdp2006 | gdp2007 | gdp2008
| gdp2009 | gdp2010
-------+---------------------+-------------------+-------------------+------------------+------------------
+------------------+-------------------+------------------+------------------+-------------------+---------
----------+-------------------+------------------+-------------------+-------------------+-----------------
--+------------------+-------------------+-------------------+-------------------+------------------+-------
-----------+------------------+-------------------+-------------------+------------------+------------------
-+-------------------+------------------+-------------------+-------------------+-------------------+-------
------------+--------------------+------------------+-------------------+------------------+----------------
---+-------------------+-------------------+------------------+-------------------+------------------+------
------------+------------------+------------------+------------------+------------------+------------------+
------------------+------------------+------------------+------------------+------------------+-------------
-----+------------------+------------------+------------------+------------------+------------------+-------
-----------+------------------+------------------+------------------+------------------+------------------+-
-----------------+------------------+------------------+------------------+------------------+--------------
----+------------------+------------------+------------------+------------------+------------------+--------
----------+------------------+------------------+------------------+------------------+------------------
0.886 | Belgium | 18585.6613572407 | -16145.6374560074 | 26938.956253415 | 8094.30475779595 |
12073.5461203817 | -11069.0567600181 | 19133.8584911727| 5500.312894949 | -4227.94863799987 | 6265.77925410752
| -10884.749295608 | 30929.4669575201 | -7831.49439429977 | 3235.81760508742 | -22765.9285442662 | 27200
.6767714485 | -10554.9550160917 | 1169.4144482273 | -16783.7961289161 | 27932.2660829329 | 17227.9083196848
| 13956.0524012749 | -40175.6286481088 | -10889.4785920499 | 22703.6576872859 | -14635.5832197402 |
2857.12270512168 | 20473.5044214494 | -52199.4895696423 | -11038.7346460738 | 18466.7298633088 | -17410.4225137703 |
-3475.63826305462 | 29305.6753822341 | 1242.5724942049 | 17491.0096310849 | -12609.9984515902 | -17909.3603476248
| 6276.58431412381 | 21851.9475485178 | -2614.33738160397 | 3777.74134131349 | 4522.08854282736 | 4251.90446379366
| 4512.15101396876 | 4265.49424538129 | 5190.06845330997 | 4543.80444817989 | 5639.81122679089 | 4420.44705213467
| 5658.8820279283 | 5172.69025294376 | 5019.63640408663 | 5938.84979495903 | 4976.57073629812 | 4710.49525137591
| 6523.65700286465 | 5067.82520773578 | 6789.13070219317 | 5525.94643553563 | 6894.68336419297 | 5961.58442474331
| 5661.21093840818 | 7721.56088518218 | 5959.7301109143 | 6453.43604137202 | 6739.39384033096 | 7517.97645468455
| 6907.49136910647 | 7049.03921764209 | 7726.49091035527 | 8552.65909911844 | 7963.94487647115 | 7187.45827585515
| 7994.02955410523 | 9532.89844418041 | 7962.25713582666 | 7846.68238907624 | 10230.9878908643 | 8642.76044946519
| 8886.79860331866 | 8718.3731386891
...
(96 rows)
另请参阅
10 - SUMMARIZE_CATCOL
分三列返回分类数据输入的统计摘要:
-
CATEGORY:分类级别,与汇总列具有相同的 SQL 数据类型
-
COUNT:类别级别的数量,类型为 INTEGER
-
PERCENT:表示类别百分比,类型为 FLOAT
语法
SUMMARIZE_CATCOL (target‑column
[ USING PARAMETERS TOPK = topk‑value [, WITH_TOTALCOUNT = show‑total] ] )
OVER()
参数
- target‑column
- 要汇总的输入列的名称,为以下数据类型之一:
-
BOOLEAN
-
FLOAT
-
INTEGER
-
DATE
-
CHAR/VARCHAR
-
参数
TOPK
- 整数,指定要在输出中包含的最频繁行的数量。
WITH_TOTALCOUNT
- 一个布尔值,指定表是否一个标题行,其中显示目标列中所示的总行数,且百分比等于 100。
默认值:
true
示例
此示例显示了 salary_data
表中 current_salary
列的分类摘要。查询输出中显示列类别、计数和百分比。第一列列出分类级别,其与输入列具有相同的 SQL 数据类型,第二列列出该值的计数,第三列列出百分比。
=> SELECT SUMMARIZE_CATCOL (current_salary USING PARAMETERS TOPK = 5) OVER() FROM salary_data;
CATEGORY | COUNT | PERCENT
---------+-------+---------
| 1000 | 100
39004 | 2 | 0.2
35321 | 1 | 0.1
36313 | 1 | 0.1
36538 | 1 | 0.1
36562 | 1 | 0.1
(6 rows)
11 - SUMMARIZE_NUMCOL
返回 Vertica 表中列的统计摘要:
-
Count
-
平均值
-
标准偏差
-
最小值/最大值
-
近似百分位
-
中间值
除了计数为 INTEGER 类型,所有汇总值均为 FLOAT 数据类型。
语法
SUMMARIZE_NUMCOL (input‑columns [ USING PARAMETERS exclude_columns = 'excluded‑columns'] ) OVER()
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 所有列都必须为数字数据类型。如果选择所有列,
SUMMARIZE_NUMCOL
将标准化模型中的所有列
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
示例
显示 employee
表中 age
和 salary
列的统计摘要:
=> SELECT SUMMARIZE_NUMCOL(* USING PARAMETERS exclude_columns='id,name,gender,title') OVER() FROM employee;
COLUMN | COUNT | MEAN | STDDEV | MIN | PERC25 | MEDIAN | PERC75 | MAX
---------------+-------+------------+------------------+---------+---------+---------+-----------+--------
age | 5 | 63.4 | 19.3209730603818 | 44 | 45 | 67 | 71 | 90
salary | 5 | 3456.76 | 1756.78754300285 | 1234.56 | 2345.67 | 3456.78 | 4567.89 | 5678.9
(2 rows)
12 - SVD
计算输入关系的 SVD 分解的奇异值(S 矩阵的对角线)和右奇异向量(V 矩阵)。结果将保存为 SVD 模型。可以在不同的运行中同时翻转 SVD 中奇异向量的所有元素符号。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
SVD ( 'model‑name', 'input‑relation', 'input‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, num_components = num‑components]
[, method = 'method'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含 SVD 输入数据的表或视图。
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列必须为数字数据类型。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
num_components
- 要保留在模型中的组件的数量。组件的最大数量为计算的非零奇异值的数量,小于或等于最小值(列数,行数)。如果忽略此参数,则保留所有组件。
method
- 用于计算 SVD 的方法,可以设置为
LAPACK
。
模型属性
columns
- 用于创建 SVD 模型的输入关系中的列信息:
-
index
-
name
-
singular_values
- 找到的奇异值信息。这些值按降序排列:
-
index
-
value
-
explain_variance:对应于该奇异值的数据方差的百分比
-
accumulated_explained_variance:删除当前奇异值之后的所有奇异值后,可以保留的数据方差的百分比
-
right_singular_vectors
- 上述奇异值对应的右奇异向量:
-
index:每个向量中元素的索引
-
vector1
-
vector2
-
...
-
counters
- 在训练模型期间收集的信息,以名称-值对形式存储:
-
counter_name
-
Accepted_row_count:数据中有效行的数量
-
denied_row_count:数据中无效行(具有 NULL、INF 或 NaN)的数量
-
iteration_count:迭代次数,对于当前的 SVD 操作,始终为 1
-
-
counter_value
-
call_string
- 创建模型的函数调用。
特权
非超级用户:
-
对创建模型的架构的 CREATE 权限
-
对输入关系的 SELECT 权限
示例
=> SELECT SVD ('svdmodel', 'small_svd', 'x1,x2,x3,x4');
SVD
--------------------------------------------------------------
Finished in 1 iterations.
Accepted Rows: 8 Rejected Rows: 0
(1 row)
=> CREATE TABLE transform_svd AS SELECT
APPLY_SVD (id, x1, x2, x3, x4 USING PARAMETERS model_name='svdmodel', exclude_columns='id', key_columns='id')
OVER () FROM small_svd;
CREATE TABLE
=> SELECT * FROM transform_svd;
id | col1 | col2 | col3 | col4
----+-------------------+---------------------+---------------------+--------------------
4 | 0.44849499240202 | -0.347260956311326 | 0.186958376368345 | 0.378561270493651
6 | 0.17652411036246 | -0.0753183783382909 | -0.678196192333598 | 0.0567124770173372
1 | 0.494871802886819 | 0.161721379259287 | 0.0712816417153664 | -0.473145877877408
2 | 0.17652411036246 | -0.0753183783382909 | -0.678196192333598 | 0.0567124770173372
3 | 0.150974762654569 | 0.589561842046029 | 0.00392654610109522 | 0.360011163271921
5 | 0.494871802886819 | 0.161721379259287 | 0.0712816417153664 | -0.473145877877408
8 | 0.44849499240202 | -0.347260956311326 | 0.186958376368345 | 0.378561270493651
7 | 0.150974762654569 | 0.589561842046029 | 0.00392654610109522 | 0.360011163271921
(8 rows)
=> SELECT APPLY_INVERSE_SVD (* USING PARAMETERS model_name='svdmodel', exclude_columns='id',
key_columns='id') OVER () FROM transform_svd;
id | x1 | x2 | x3 | x4
----+------------------+------------------+------------------+------------------
4 | 91.4056627665577 | 44.7629617207482 | 83.1704961993117 | 38.9274292265543
6 | 20.6468626294368 | 9.30974906868751 | 8.71006863405534 | 6.5855928603967
7 | 31.2494347777156 | 20.6336519003026 | 27.5668287751507 | 5.84427645886865
1 | 107.93376580719 | 51.6980548011917 | 97.9665796560552 | 40.4918236881051
2 | 20.6468626294368 | 9.30974906868751 | 8.71006863405534 | 6.5855928603967
3 | 31.2494347777156 | 20.6336519003026 | 27.5668287751507 | 5.84427645886865
5 | 107.93376580719 | 51.6980548011917 | 97.9665796560552 | 40.4918236881051
8 | 91.4056627665577 | 44.7629617207482 | 83.1704961993117 | 38.9274292265543
(8 rows)