---
title: KNN
description: "| 模型接口类别 | 函数接口 |"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/bds/kunpengbdssparkml_16_0019.html
sourcePath: /source/zh/kunpengboostkithistory/2200/bds/kunpengbdssparkml_16_0019.html
indexId: 3b9c4a44aaaf434fa36815d37e612e9cf5f5ea92fc1d5f998ed47f3f8155f0a173
---
# KNN

| 模型接口类别 | 函数接口 |
| --- | --- |
| ML API | def fit(dataset: Dataset[\_]): KNNModel def transform(dataset: Dataset[\_]): DataFrame |


#### ML API

- 功能描述
  输入Dataset形式的特征，输出每个样本的k近邻。


- 输入输出

  1. 包名：org.apache.spark.ml.neighbors
  2. 类名：KNN
  3. 方法名：fit/transform
  4. 输入：训练样本Dataset[_]，测试样本Dataset[_]| 参数名称 | 取值类型 | 描述 |
| --- | --- | --- |
| dataset | Dataset[\_] | 包含样本特征的DF |
| k | Int | 最近邻数 |


  5. 基于原生算法优化的参数

    a. fit参数| 参数名称 | 取值类型 | 缺省值 | 描述 |
| --- | --- | --- | --- |
| setFeaturesCol(value:String | String | features | 训练集特征列名 |
| setAuxiliaryCols(value:Array[String]) | Array[String] | Array.empty[String] | 训练集附加列列名 |


    b. transform参数| 参数名称 | 取值类型 | 缺省值 | 描述 |
| --- | --- | --- | --- |
| setFeaturesCol(value: String) | String | features | 测试集特征列名 |
| setNeighborsCol(value:String) | String | neighbors | 邻居附加列列名 |
| setDistanceCol(value: String) | String | distances | 邻居距离列名 |
| setK(value: Int) | Int | 1 | 近邻数 |
| setTestBatchSize(value: Int) | Int | 1024 | 搜索Batch大小 |


      参数及fit代码接口示例： 1 2 3 4 val model = new KNN() .setFeaturesCol(featuresCol) .setAuxiliaryCols(Array("id")) .fit(trainDataDF)

  6. 输出：距离测试样本最近的k个近邻，包括距离和训练样本的附加列| 参数名称 | 取值类型 | 描述 |
| --- | --- | --- |
| dataset | Dataset[\_] | 包含k近邻距离和附加列的DF |


- 使用样例
  1 2 3 4 5 6 7 8 9 10 11 val model = new KNN() .setFeaturesCol(featuresCol) .setAuxiliaryCols(Array("id")) .fit(trainDataDF) val testResults = model .setFeaturesCol(featuresCol) .setNeighborsCol(neighborsCol) .setDistanceCol(distanceCol) .setK(k) .setTestBatchSize(testBatchSize) .transform(testDataDF)
