【问题标题】:Knn Regression in RR中的Knn回归
【发布时间】: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)

我觉得我遗漏了一些明显的东西,非常感谢您提供的任何帮助或建议,感谢您的宝贵时间。

【问题讨论】:

  • 预期输出是什么?

标签: r regression knn non-linear-regression


【解决方案1】:

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

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

【讨论】:

  • 这非常有效。但是,为什么需要对这些值进行排序是有原因的吗?我是否不正确地使用了其他功能,或者这只是一个额外的中间步骤?
  • 他们只需要被命令绘制图表。 lines 将在你给它的点之间画线。如果您无序使用这些点,它将(如您所见)在屏幕上来回绘制线条。
猜你喜欢
  • 2016-10-30
  • 2013-11-17
  • 2018-08-01
  • 2017-12-11
  • 2015-02-22
  • 1970-01-01
  • 2012-11-28
  • 2012-01-13
  • 2012-08-07
相关资源
最近更新 更多