python - 需要 K-Nearest Neighbors 算法解释
问题描述
在回归模型中,训练过程会找到选定函数的参数。但是如果算法是 K 近邻(KNN),我们使用什么训练过程呢?
例如,如果我执行以下命令,后台会做什么?
k = 4
neigh = KNeighborsClassifier(n_neighbors = k).fit(x_train, y_train)
当没有计算常量/参数(之后的预测过程中需要)时,为什么在 KNN 中需要训练过程?
KNN的步骤如下...
- 为 k 选择一个值。
- 计算新病例与数据集中每个病例的距离。
- 在训练数据中搜索最接近未知数据点测量值的 k 观测值。
- 使用来自 K-Nearest Neighbors 的最流行的响应值来预测未知数据点的响应。
...但是它们仅在我执行预测命令时才有效吗?
yhat = neigh.predict(x_test)
解决方案
1) KNN 中的训练是否意味着对训练数据集中的每一行计算相似距离并找到邻居?
neigh = KNeighborsClassifier(n_neighbors = k).fit(x_train, y_train)
2)如果计算相似距离并且只为训练数据集找到邻居,那么如何为测试数据集找到类标签。如果我们不知道谁是测试数据集的邻居,那么我们如何找到类标签?
yhat = neigh.predict(x_test)
3)如果我们说“未见过的实例”或“未知的数据点”,那么它是否意味着它对应于测试数据集中的任何行?
推荐阅读
- amazon-web-services - RPM 仅安装在 AWS ec2 redhat 实例上
- ios - 如何在 Swift 中设置 MediaPlayer 播放速率?
- c++ - 打印出用户从未输入的数字的数组副本
- spring - Spring 的 @RefreshScope 是坏了还是我用错了?
- python-2.7 - 尝试在数组中设置值
- javascript - Firebase 云函数“函数返回未定义、预期的承诺或值”
- r - 如何使用 R 中的非标准多项式函数调整非线性曲线拟合的系数
- java - Ganib (Java) - 无法发送验证邮件
- visual-studio-code - 在 Windows 中使用非默认终端
- c++ - 正在使用空指针调用静态成员 UB