r - 对knn中新观察的预测

时间:2016-06-15 01:03:12

标签: r knn

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

我试图做以下事项:
1.向数据集添加新观察 2.训练所有的观察结果,但新的观察结果 3.测试新的观察结果 但是当我将响应变量的不同值放入新观察中时,预测会发生变化,因此它似乎无法发挥作用。

假设数据有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  

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先,您尚未定义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函数找到了这一点。)所以,如果你的响应变量是data的第7列,那么你可以改为

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