---
source_url: https://docs.dolphindb.cn/zh/funcs/k/knn.html
fetched_at: 2026-05-19T09:29:17Z
category: funcs
title: knn
sha1: 146cefb9e0f24ff88b0365d845f3bb86525c61c0
---

# knn

## 语法

`knn(Y, X, type, nNeighbor, [power=2])`

## 详情

通过 K 邻近算法（暴力搜索法）对表中的数据进行训练。

## 参数

**Y** 是一个长度与 *X* 的行数相等的向量，表示 *X* 中每个样本对应的标签。

**X** 是一张表，表示训练集。表中的每一行表示一个样本，每一列表示一个特征。

**type** 是一个字符串。它的取值可以是 'regressor' 或 'classifier'。

**nNeighbor** 是一个正整数，表示 K 邻近算法的邻近节点个数。

**power** 是一个正整数，表示闵可夫斯基距离（Minkowski Distance）的参数。默认值是2，表示使用欧几里得距离（Euclidean
Distance）。如果 *power*=1，表示使用曼哈顿距离（Manhattan Distance）。

## 返回值

返回一个字典，包含以下 key：

- nNeighbor：训练时所用的邻近节点个数
- modelName：模型的名称，为字符串 "KNN"
- model：内部模型
- power：训练时所用的闵可夫斯基距离
- type：字符串 "regressor" 或 "classifier"
- predict：模型的预测函数，可用于对新样本进行预测

## 例子

```dolphindb
height = 158 158 158 160 160 163 163 160 163 165 165 165 168 168 168 170 170 170
weight = 58 59 63 59 60 60 61 64 64 61 62 65 62 63 66 63 64 68
t=table(height, weight)
labels=take(1,7) join take(2,11)
model = knn(labels,t,"classifier", 5);
```
