KNN的概念是找到与所需数据最接近的数据点。
因此在测试模型之前没有数学或过程。
它所做的只是找到最接近的K点,这意味着没有训练过程。
如果这是正确的,那么在python中对KNN的训练过程中会发生什么?
from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier(n_neighbors=5)
classifier.fit(X_train, y_train)
然后在调用fit时在后台发生某些事情。
如果该过程不需要计算,会发生什么情况
答案 0 :(得分:2)
KNN本身并不是一种特定的算法,而是一种可以通过多种方式实现的方法。 nearest neighbors背后的想法是从训练数据中选择一个或多个示例,以确定手头样本的预测值。最简单的方法是简单地遍历整个数据集并从训练数据集中选择最接近的数据点。在这种情况下,您可以跳过拟合步骤,也可以将拟合视为运行该循环的可调用函数的产生。即使在这种情况下,如果您正在使用scikit-learn之类的库,则对所有预测变量保持相似的接口也很有用,因此您可以为它们编写通用代码(例如,独立于所使用的特定算法的训练代码)。
但是,您也可以为KNN做更聪明的事情。在scikit-learn中,您将看到KNeighborsClassifier
实现了三种不同的算法。一种是蛮力,它只是按照描述遍历整个数据集,但是您还有BallTree
(wiki)和KDTree
(wiki)。这些是可以加速对最近邻居的搜索的数据结构,但是需要根据数据预先构造它们。因此,此处的合适步骤是构建数据结构,以帮助您找到最近的邻居。