You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Sklearn的KNN分类器中获取给定数据点$x$的$k$近邻?

获取KNN中指定数据点的k个近邻

当然可以实现,scikit-learn的KNeighborsClassifier提供了kneighbors()方法,专门用来获取给定数据点的k个近邻及其距离。

具体实现步骤及代码示例:

  1. 完成KNN分类器的训练(和你给出的代码逻辑一致)
  2. 调用kneighbors()方法传入目标数据点,即可得到近邻的索引和对应距离
from sklearn.neighbors import KNeighborsClassifier
import numpy as np

# 假设已准备好训练数据X_train、y_train,以及指定的k值
k = 3
KNN_classifier = KNeighborsClassifier(n_neighbors=k)
KNN_classifier.fit(X_train, y_train)

# 目标数据点x,需转为二维数组(scikit-learn要求输入为2D格式)
x = np.array([[1.2, 3.4]])

# 获取k个近邻的距离和训练集中的索引
distances, indices = KNN_classifier.kneighbors(x, n_neighbors=k)

# 输出结果
print("k个近邻在训练集的索引:", indices[0])
print("对应距离:", distances[0])
# 若需要获取近邻的标签
neighbor_labels = y_train[indices[0]]
print("k个近邻的标签:", neighbor_labels)

关键说明:

  • 输入数据点必须是二维数组,所以单个点要写成[[特征1, 特征2, ...]]的形式,否则会报错
  • kneighbors()的n_neighbors参数可以单独指定要获取的近邻数,不一定要和初始化分类器时的k值一致
  • 返回的indices是训练数据集中近邻的索引集合,distances是每个近邻与目标点的距离,两者都是二维数组,通过[0]可以提取单个数据点的结果

内容的提问来源于stack exchange,提问作者nima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:22:39