为什么使用CARET与FNN时预测的值在KNN回归方面有所不同

发布于 2025-02-12 11:06:56 字数 835 浏览 1 评论 0原文

我试图对KNN回归进行一些手动计算,并遇到了这个异常错误。手工完成的预测值与我从“商标”软件包中的“ knnreg”函数中获得的值不匹配。因此,我将另一个软件包(FNN)用作第二次检查,发现我的手动计算确实与FNN软件包中的计算一致。所以我现在真的很困惑。这是一个示例代码:

# caret  vs. FNN packages
# issue in predictions

library(caret)
library(FNN)
library(dbscan)

n <- 100

x <- rnorm(n)
y <- 2 + 3*x + rnorm(n, sd = 0.5)

x <- as.matrix(x)

# using caret
knn_caret <- knnreg(x, y, k = 5)
yhat_caret <- predict(knn_caret, newdata = x)

# using FNN
knn_FNN <- knn.reg(train = x, y = y, k = 5)
yhat_FNN <- knn_FNN$pred

# manual calculation using the neighbors.
# choose a point
i <- 3
nn <- kNN(x, k = 5) #using the caret package
neighbors <- nn$id[i, ]

mean(y[neighbors]) # manual calculation

yhat_FNN[i]  # FNN package

yhat_caret[i] # caret package



如果您可以指出我在代码中可能犯的任何错误,或者对此问题的任何想法将非常感谢。

I was trying to do some manual calculations of knn regression and came across this unusual error. The predicted values done by hand do not match with the ones I got from the 'knnreg' function in the 'caret' package. So I used another package (FNN) as a second check and discovered that my manual calculations do agree with the ones from the FNN package. So I'm really confused now. Here is an example code:

# caret  vs. FNN packages
# issue in predictions

library(caret)
library(FNN)
library(dbscan)

n <- 100

x <- rnorm(n)
y <- 2 + 3*x + rnorm(n, sd = 0.5)

x <- as.matrix(x)

# using caret
knn_caret <- knnreg(x, y, k = 5)
yhat_caret <- predict(knn_caret, newdata = x)

# using FNN
knn_FNN <- knn.reg(train = x, y = y, k = 5)
yhat_FNN <- knn_FNN$pred

# manual calculation using the neighbors.
# choose a point
i <- 3
nn <- kNN(x, k = 5) #using the caret package
neighbors <- nn$id[i, ]

mean(y[neighbors]) # manual calculation

yhat_FNN[i]  # FNN package

yhat_caret[i] # caret package



If you can point to any mistake that I may have made in my code or any thoughts on this issue is greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文