---
title: KNN
description: "| 模型接口类别 | 函数接口 |"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2003/bds/kunpengbdssparkml_20_0036.html
sourcePath: /source/zh/kunpengboostkithistory/2003/bds/kunpengbdssparkml_20_0036.html
indexId: 25039b3ab00be71630c47e4d3886873fedc5030b2e3870c1e0d35800d5cf422573
---
# 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[_]。| Param name | Type(s) | Description |
| --- | --- | --- |
| dataset | Dataset[\_] | 包含样本特征的DF |
| k | Int | 近邻数 |


  5. 算法参数

    a. fit参数| Param name | Type(s) | Default | Description |
| --- | --- | --- | --- |
| setFeaturesCol(value :String | String | features | 训练集特征列名 |
| setAuxiliaryCols(valu e:Array[String]) | Array[Str ing] | Array.empty[St ring] | 训练集附加列列名 |


    b. transform参数| Param name | Type(s) | Default | Description |
| --- | --- | --- | --- |
| setFeaturesCol(v alue: String) | String | features | 测试集特征列名 |
| setNeighborsCo l(value:String) | String | neighbors | 邻居附加列列名 |
| setDistanceCol( value: String) | String | distances | 邻居距离列名 |
| setK(value: Int) | Int | 1 | 近邻数 |
| setTestBatchSiz e(value: Int) | Int | 1024 | 搜索Batch大小 |


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

  6. 输出：距离测试样本最近的k个近邻，包括距离和训练样本的附加列。| Param name | Type(s) | Description |
| --- | --- | --- |
| dataset | Dataset[\_] | 包含k近邻距离和附加列的DF |


● 使用样例

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