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回归的主要内容,如果未能解决你的问题,请参考以下文章

Matlab中的Knn回归

R语言学习笔记—K近邻算法

KNN算法在保险业精准营销中的应用

R语言使用caret包构建KNN模型(k-Nearest Neighbors )构建回归模型通过method参数指定算法名称通过trainControl函数控制训练过程

R中的KNN混淆矩阵?

R中的KNN——所有参数必须具有相同的长度,test.X为空