R中的Knn回归

问题描述 投票:3回答:1

我正在研究Knn回归方法和后来的Kernel Smoothing。我希望使用R中的图来演示这些方法。我使用以下代码生成了一个数据集:

x = runif(100,0,pi)
e = rnorm(100,0,0.1)
y = sin(x)+e

我一直在尝试按照如何在9.2中使用“knn.reg”的描述:https://daviddalpiaz.github.io/r4sl/k-nearest-neighbors.html#regression

grid2=data.frame(x)
knn10 = FNN::knn.reg(train = x, test = grid2, y = y, k = 10)

我的预测值对我来说似乎是合理的,但当我尝试在我的x~y情节上绘制一条线时,我没有得到我希望的东西。

plot(x,y)
lines(grid2$x,knn10$pred)

我觉得我错过了一些明显的东西,非常感谢你提供的任何帮助或建议,谢谢你的时间。

r regression knn non-linear-regression
1个回答
3
投票

您只需在绘制线条之前对x值进行排序。

plot(x,y)
ORD = order(grid2$x)
lines(grid2$x[ORD],knn10$pred[ORD])

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.