如何找到属于预测 class 的 k-NN 邻居的比例?

How to find the proportion of k-NN neighbors that belong to a predicted class?

我想在 Python 中绘制 k-NN 分类器的 ROC 曲线。我有一个由 40 个样本组成的数据集,这些样本由 5 个特征描述,k-NN 的邻居数量为 K = 7。

20 个样本用于训练,20 个样本用于测试。有两种可能的预测classes:"signal present"和"signal absent"(二进制class化)。

根据这个article,为k-NN classifier制作ROC曲线,一个score可以定义为属于“signal present”的K个neighbors的比例” class,并且 class 在“信号存在”中验证测试实例所需的阈值 class 是从 1 到 K 变化的邻居数量。

我的问题是如何找到属于“信号存在”的K个邻居的比例class?我知道邻居总数(K = 7) 为了计算比例,我需要知道属于 class.

的邻居的数量

我看到有一个函数 KNeighbors(),returns 一个点的索引和到邻居的距离,但是我怎么知道哪个邻居属于“信号存在”class?

感谢任何帮助!

更新

我试过以下方法:

  1. 对于给定的测试样本,使用 kneighbors() 函数找到 K 个邻居的索引。
  2. 通过检查 for 循环中 y_train[indices[i,0]] 的值来计算属于 "signal present" class 的邻居数量(y_train 来自 train_test_split() 函数)。
  3. 将邻居数与阈值进行比较。

有人可以确认我的操作是否正确吗?

继续!! ✌️Google可以解决你的问题,大佬不要求助。如果这解决了您的问题,那么 .