KNN算法在训练阶段做了什么?

What does the KNN algorithm do in the training phase?

与线性回归等其他算法不同,KNN 似乎在训练阶段不执行任何计算。就像线性回归的情况一样,它在训练中找到系数 phase.But KNN 呢?

KNN属于懒惰的学习者群体。与 logistic regressionsvmsneural nets 等热切学习者相反,惰性学习者只是将训练数据存储在内存中。然后,在推理过程中,它从训练数据中找到 K 个最近的邻居,以便对新实例进行分类。

在训练阶段,KNN 排列数据(某种索引过程)以便在推理阶段有效地找到最近的邻居。否则,它将不得不在推理过程中将每个新案例与整个数据集进行比较,从而使其效率非常低下。

您可以在以下位置阅读更多相关信息:https://scikit-learn.org/stable/modules/neighbors.html#nearest-neighbor-algorithms

KNN是instance based的方法,完全依赖于训练样例,换句话说,它会记住所有的训练样例,所以在分类的时候,只要有任何样例出现,它就会计算输入样例和所有样例之间的欧式距离训练样本,以及 returns 基于距离的最接近训练样本的标签。

Knn 是懒惰的学习者。这意味着,就像其他算法在训练阶段学习(线性回归等)一样,Knn 在训练阶段学习。它实际上只是在训练时将数据点存储在 RAM 中。

就像在线性回归的情况下,它在训练中找到系数phase.But KNN 呢?--> 在 KNN 的情况下,它在测试阶段调整它的参数。在测试阶段,它会找到参数的最优解(K 值、距离计算技术等)。 与其他在训练阶段学习并在测试阶段进行测试的算法不同,KNN 在测试阶段学习并测试参数(K 折 CV)。

距离计算->https://scikit-learn.org/stable/modules/neighbors.html#nearest-neighbor-algorithms

KNN python 文档->https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html