这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

数据准备

Vertica 支持机器学习函数,可在对数据进行分析之前根据需要准备数据。

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_samplingunder_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_rowsnumber_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

对输入关系运行标准化算法。输出是具有标准化数据的视图。

这是元函数。您必须在顶级 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 表的 wthp 列上使用 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_FIT 计算输入关系中每个指定列的标准化参数。生成的模型将存储标准化参数。例如,对于 MinMax 标准化,每列的最小值和最大值都存储在模型中。生成的模型用作函数 APPLY_NORMALIZEREVERSE_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 中的 wthp 列创建具有 NORMALIZE_FIT 的模型,然后在对 APPLY_NORMALIZEREVERSE_NORMALIZE 的连续调用中使用此模型。

=> SELECT NORMALIZE_FIT('mtcars_normfit', 'mtcars', 'wt,hp', 'minmax');
NORMALIZE_FIT
---------------
Success
(1 row)

以下对 APPLY_NORMALIZE 的调用指定表 mtcars 中的 hpcyl 列,其中 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 中的 hpcyl 列,其中 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 表中 agesalary 列的统计摘要:

=> 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)

另请参阅