KMEANS

对输入关系执行 k-means 算法。结果是包含群集中心列表的模型。

您可以采用 VERTICA_MODELS 或 PMML 格式导出生成的 k 均值模型,以将其应用于 Vertica 外部的数据。您还可以在其他位置训练 k 均值模型,然后以 PMML 格式将其导入 Vertica,以对 Vertica 中的数据进行预测。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

KMEANS ( 'model‑name', 'input‑relation', 'input‑columns', 'num‑clusters'
        [ USING PARAMETERS
           [exclude_columns = 'excluded‑columns']
           [, max_iterations = max‑iterations]
           [, epsilon = epsilon‑value]
           [, { init_method = 'init‑method' } | { initial_centers_table = 'init‑table' } ]
           [, output_view = 'output‑view']
           [, key_columns = 'key‑columns'] ] )

参数

model‑name
标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
input‑relation
包含 k 均值输入数据的表或视图。 如果输入关系在 Hive 中定义,请使用 SYNC_WITH_HCATALOG_SCHEMA 以同步 hcatalog 架构,然后运行机器学习功能。
input‑columns
输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列的数据类型必须为数字
num‑clusters
要创建的群集数,为 ≤10,000 的整数。此实参表示 k 均值中的 k

参数

exclude_columns

input-columns 中要排除在处理范围之外的列名的逗号分隔列表。

max_iterations
算法执行的最大迭代数。如果该值小于收敛所需要的迭代数,则算法无法进行收敛。

默认值: 10

epsilon
确定算法是否收敛。自上一次迭代后,如果中心移动的距离小于
'epsilon',则认为该算法已收敛。

默认值: 1e-4

init_method
用于找到初始群集中心的方法,为以下之一:
  • random

  • kmeanspp (默认):kmeans++ 算法

    如果 k 值过高,可能会占用大量内存。如果函数返回错误,提示可用内存不足,请减小 k 值或使用 random 方法。

initial_centers_table
包含要使用的初始群集中心的表。知晓要使用的初始群集中心而不需要 Vertica 找到初始群集中心时提供这个值。
output_view
保存分配到群集的每个点的视图名称。您必须对保存视图的架构具有 CREATE 权限。
key_columns
input-columns 中列名称的逗号分隔列表,将显示为 output_view 的列。应选择这些列,以便其内容可以标识每个输入数据点。此参数仅在指定 output_view 时使用。input‑columns 中所列的仅用作 key_columns 而不用于训练的列应在 exclude_columns 中列出。

模型属性

centers
包含每个群集中心的列表。
metrics
与群集质量相关的几个指标的字符串摘要。

示例

以下示例创建 k-means 模型 myKmeansModel 并将其应用于输入表 iris1APPLY_KMEANS 的调用混合了列名和常量。当传递一个常量代替列名称时,该常量将替换该列在所有行中的值:

=> SELECT KMEANS('myKmeansModel', 'iris1', '*', 5
USING PARAMETERS max_iterations=20, output_view='myKmeansView', key_columns='id', exclude_columns='Species, id');
           KMEANS
----------------------------
 Finished in 12 iterations

(1 row)
=> SELECT id, APPLY_KMEANS(Sepal_Length, 2.2, 1.3, Petal_Width
USING PARAMETERS model_name='myKmeansModel', match_by_pos='true') FROM iris2;
 id  | APPLY_KMEANS
-----+--------------
   5 |            1
  10 |            1
  14 |            1
  15 |            1
  21 |            1
  22 |            1
  24 |            1
  25 |            1
  32 |            1
  33 |            1
  34 |            1
  35 |            1
  38 |            1
  39 |            1
  42 |            1
...
 (60 rows)

另请参阅