K近鄰演算法進行分類的原理是針對預測表的每行資料,從訓練表中選擇與其距離最近的K條記錄,將這K條記錄中類別數量最多的類,作為該行的類別。
組件配置
您可以使用以下任意一種方式,配置K近鄰組件參數。
方式一:可視化方式
在Designer工作流程頁面配置組件參數。
頁簽 | 參數 | 描述 |
欄位設定 | 選擇訓練表特徵列 | 用於訓練的特徵列。 |
選擇訓練表的標籤列 | 訓練的目標列。 | |
選擇預測表特徵列 | 如果未配置該參數,則表示其與訓練表特徵列相同。 | |
產出表附加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 | 否 | 如果輸入表資料為稀疏格式,則key和value之間的分隔字元。 | 英文冒號(:) |
coreNum | 否 | 節點數量。與memSizePerCore搭配使用,取值範圍為1~20000。 | 系統自動計算 |
memSizePerCore | 否 | 單個節點的記憶體,取值範圍為1024 MB~64*1024 MB。 | 系統自動計算 |
lifecycle | 否 | 輸出表的生命週期。 | 無 |
樣本
產生訓練資料。
create table pai_knn_test_input as select * from ( select 1 as f0,2 as f1, 'good' as class union all select 1 as f0,3 as f1, 'good' as class union all select 1 as f0,4 as f1, 'bad' as class union all select 0 as f0,3 as f1, 'good' as class union all select 0 as f0,4 as f1, 'bad' as class )tmp;
使用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;
查看訓練結果。其中:
f0和f1表示結果附件列。
prediction_result表示分類結果。
prediction_score表示分類結果對應的機率。
prediction_detail表示最近的K個分類及其對應的機率。