繁体   English   中英

r-knn中新观测的预测

[英]r - Prediction for new observation in knn

我正在尝试制作一个可以根据用户输入预测价格的应用程序。 如何预测新值的响应?

我尝试执行以下操作:
1.将新观察值添加到数据集
2.对knn进行除新观测值以外的所有观测值的训练
3.在新观察值上测试knn
但是,当我将响应变量的不同值放入新观测值时,预测会发生变化,因此它似乎不起作用。

假设数据有7个变量的100个观测值。
这就是我尝试过的代码。

data <- rbind(data, c(1,2,3,4,5,6,7))  
prediction <- knn.reg(data[1:100,], test = dataset[101,],
data[1:100,]$response_variable, k = 8, algorithm="kd_tree")  
prediction$pred  

预先感谢您的帮助。

一方面,您尚未定义dataset 我猜你的代码应该读为:

dataset <- rbind(data, c(1,2,3,4,5,6,7))  
prediction <- knn.reg(dataset[1:100,], test = dataset[101,],
y = dataset[1:100,]$response_variable, k = 8, algorithm="kd_tree")  
prediction$pred  

无论如何,似乎都不应该将响应变量作为列包含在训练和测试集中(我通过使用knn.reg函数发现了这一点。)因此,如果您的响应变量是第7个data列,那么您可以改为执行此操作

dataset <- rbind(data, c(1,2,3,4,5,6,7))  
prediction <- knn.reg(dataset[1:100,-7], test = dataset[101,-7],
y = dataset[1:100,]$response_variable, k = 8, algorithm="kd_tree")  
prediction$pred 

例如,这是一个包含一些虚构数据的测试用例。

set.seed(1)
data <- data.frame(matrix(sample(1:7, 700, replace=T), nr=100))
colnames(data)[7] <- "response_variable"
dataset <- rbind(data, c(1,2,3,4,5,6,7))  
prediction <- knn.reg(dataset[1:100,-7], test = dataset[101,-7],
dataset[1:100,]$response_variable, k = 8, algorithm="kd_tree")  
prediction$pred

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM