在回归模型中,训练过程为选定函数查找参数。但是如果算法是K最近邻(KNN),那么我们在训练过程中会使用什么呢?
例如,如果我执行以下命令,在后台会做什么?
k = 4
neigh = KNeighborsClassifier(n_neighbors = k).fit(x_train, y_train)
为什么在没有计算常数/参数(之后的预测过程中需要)的情况下,毕竟需要在KNN中进行训练过程?
KNN的步骤如下...
...但是它们仅在执行预测命令时有效吗?
yhat = neigh.predict(x_test)
答案 0 :(得分:1)
1)用KNN进行训练是否意味着针对训练数据集中的每一行都计算出相似距离并找到邻居?
neigh = KNeighborsClassifier(n_neighbors = k).fit(x_train, y_train)
2)如果计算相似距离并且仅针对训练数据集找到邻居,那么如何为测试数据集找到类标签。如果我们不知道谁是测试数据集的邻居,那么我们如何找到类标签?
yhat = neigh.predict(x_test)
3)如果我们说“未知实例”或“未知数据点”,那是否表示它对应于测试数据集中的任何行?
答案 1 :(得分:0)
请注意,sklearn.neighbors.KNeighborsClassifier
有一个algorithm
参数。
此参数控制拟合期间发生的情况。
brute
表示我认为您认为KNN可以做到的;它存储数据集的副本,并通过详尽搜索来计算最近的点。
ball_tree
和kd_tree
使用称为球树和 k 维树的数据结构表示数据集。基本上,通过以某些方式对数据集进行分区,可以确定数据集中哪些点最靠近任意点而无需进行详尽的搜索。
在这种情况下调用fit
时,将构建适当的树。