K近邻算法进行分类的原理是针对预测表的每行数据,从训练表中选择与其距离最近的K条记录,将这K条记录中类别数量最多的类,作为该行的类别。

组件配置

您可以使用以下任意一种方式,配置K近邻组件参数。

方式一:可视化方式

在PAI-Designer(原PAI-Studio)工作流页面配置组件参数。
页签 参数 描述
字段设置 选择训练表特征列 用于训练的特征列。
选择训练表的标签列 训练的目标列。
选择预测表特征列 如果未配置该参数,则表示其与训练表特征列相同。
产出表附加ID列 用于标识该列的身份,从而获得某列对应的预测值。系统默认使用预测表特征列,作为附加ID列。
输入表数据是稀疏格式 使用KV格式表示稀疏数据。
kv间的分隔符 默认为英文逗号(,)。
key和value的分隔符 默认为英文冒号(:)。
参数设置 近邻个数 默认值为100。
执行调优 核心数 默认系统自动分配。
内存数 默认系统自动分配。

方式二:PAI命令方式

使用PAI命令方式,配置该组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本
PAI -name knn
    -DtrainTableName=pai_knn_test_input
    -DtrainFeatureColNames=f0,f1
    -DtrainLabelColName=class
    -DpredictTableName=pai_knn_test_input
    -DpredictFeatureColNames=f0,f1
    -DoutputTableName=pai_knn_test_output
    -Dk=2;
参数 是否必选 描述 默认值
trainTableName 训练表的表名。
trainFeatureColNames 训练表的特征列名。
trainLabelColName 训练表的标签列名。
trainTablePartitions 训练表中,参与训练的分区。 所有分区
predictTableName 预测表的表名。
outputTableName 输出表的表名。
predictFeatureColNames 预测表的特征列名。 trainFeatureColNames相同
predictTablePartitions 预测表中,参与预测的分区。 所有分区
appendColNames 输出表中,附加预测表的列名。 predictFeatureColNames相同
outputTablePartition 输出表的分区。 全表
k 最近邻的数量。取值范围为1~1000。 100
enableSparse 输入表数据是否为稀疏格式。取值范围为{true,false} false
itemDelimiter 如果输入表数据为稀疏格式,则KV对之间的分隔符。 英文逗号(,)
kvDelimiter 如果输入表数据为稀疏格式,则keyvalue之间的分隔符。 英文冒号(:)
coreNum 节点数量。与memSizePerCore搭配使用,取值范围为1~20000。 系统自动计算
memSizePerCore 单个节点的内存,取值范围为1024 MB~64*1024 MB。 系统自动计算
lifecycle 输出表的生命周期。

示例

  1. 生成训练数据。
    create table pai_knn_test_input as
    select * from
    (
      select 1 as f0,2 as f1, 'good' as class from dual
      union all
      select 1 as f0,3 as f1, 'good' as class from dual
      union all
      select 1 as f0,4 as f1, 'bad' as class from dual
      union all
      select 0 as f0,3 as f1, 'good' as class from dual
      union all
      select 0 as f0,4 as f1, 'bad' as class from dual
    )tmp;
  2. 使用PAI命令,提交K近邻算法组件参数。
    pai -name knn
        -DtrainTableName=pai_knn_test_input
        -DtrainFeatureColNames=f0,f1
        -DtrainLabelColName=class
        -DpredictTableName=pai_knn_test_input
        -DpredictFeatureColNames=f0,f1
        -DoutputTableName=pai_knn_test_output
        -Dk=2;
  3. 查看训练结果。K近邻示例结果其中:
    • f0f1表示结果附件列。
    • prediction_result表示分类结果。
    • prediction_score表示分类结果对应的概率。
    • prediction_detail表示最近的K个分类及其对应的概率。