与线性回归等其他算法不同,KNN似乎在训练阶段不执行任何计算。与线性回归的情况一样,它会在训练阶段找到系数。但是KNN呢?
在训练阶段,KNN 安排数据(索引过程),以便在推理阶段有效地找到最近的邻居。否则,它将不得不在推理过程中将每个新案例与整个数据集进行比较,使其效率非常低。
您可以在以下位置阅读更多相关信息: https://scikit-learn.org/stable/modules/neighbors.html#nearest-neighbor-algorithms
KNN
属于懒惰学习者群体。与logistic regression
、svms
、neural nets
等渴望的学习者相反,懒惰的学习者只是将训练数据存储在内存中。然后,在推理过程中,它从训练数据中找到 K 最近邻,以便对新实例进行分类。
KNN 是一种基于实例的方法,它完全依赖于训练示例,换句话说,它记住了所有的训练示例 因此,在分类的情况下,每当出现任何示例时,它都会计算输入示例和所有训练示例之间的欧氏距离,并根据距离返回最近训练示例的标签。
Knn 是懒惰的学习者。这意味着,像其他算法在训练阶段学习(线性回归等)一样,Knn 在训练阶段学习。它实际上只是在训练时将数据点存储在 RAM 中。
与线性回归的情况一样,它会在训练阶段找到系数。但是 KNN 呢?-->在 KNN 的情况下,它会在测试阶段调整其参数。在测试阶段,它找到参数的最佳解(K值,距离计算技术等)。与其他在训练阶段学习并在测试阶段进行测试的算法不同,KNN在测试阶段学习并接受参数测试(K倍CV)。
距离计算->https://scikit-learn.org/stable/modules/neighbors.html#nearest-neighbor-algorithms
KNN python docs->https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html