R中的Knn回归
Posted
技术标签:
【中文标题】R中的Knn回归【英文标题】:Knn Regression in R 【发布时间】:2018-06-05 20:07:22 【问题描述】:我正在研究 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)
我觉得我遗漏了一些明显的东西,非常感谢您提供的任何帮助或建议,感谢您的宝贵时间。
【问题讨论】:
预期输出是什么? 【参考方案1】:您只需要在绘制线条之前对 x 值进行排序。
plot(x,y)
ORD = order(grid2$x)
lines(grid2$x[ORD],knn10$pred[ORD])
【讨论】:
这非常有效。但是,为什么需要对这些值进行排序是有原因的吗?我是否不正确地使用了其他功能,或者这只是一个额外的中间步骤? 他们只需要被命令绘制图表。lines
将在你给它的点之间画线。如果您无序使用这些点,它将(如您所见)在屏幕上来回绘制线条。以上是关于R中的Knn回归的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用caret包构建KNN模型(k-Nearest Neighbors )构建回归模型通过method参数指定算法名称通过trainControl函数控制训练过程