r - R 中的 Knn 回归

标签 r regression knn non-linear-regression

我正在研究 Knn 回归方法和后来的核平滑。 我希望在 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)

RPlot

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

最佳答案

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

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

enter image description here

关于r - R 中的 Knn 回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47953889/

相关文章:

r - 提取第一个词

r - ggplot : conflict between date_breaks() and limits

Python Keras cross_val_score 错误

r - 如何设置回归中的系数值;电阻

使用 lm() 和 predict() 进行滚动回归和预测

python-3.x - 使用 scikit-learn 和 matplotlib 在 python 中重新创建决策边界图

javascript - 如何删除jsTreeR中用户折叠指定父节点的选项?

仅保留所有矩阵中存在的行

r - 插入符号中 KNN 的自定义参数调整

python - 为 numpy 数组的行中的每个点找到最近的 k 个点