2016-06-15 2 views
0

Я пытаюсь создать приложение, которое будет прогнозировать цены на основе ввода пользователей. Как я могу предсказать ответ для новых значений?r - Прогноз для новых наблюдений в knn

Я попытался сделать следующее:
1. Добавление нового наблюдения в наборе данных
2. Поезд Knn на всех наблюдений, но новый один
3. Тест Knn на новом наблюдении
Но предсказание меняется, когда я добавляю различные значения переменной ответа в новое наблюдение, поэтому оно не работает.

Предположим, что данные содержат 100 наблюдений за 7 переменными.
Это был бы код, который я пробовал.

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 

Заранее благодарю вас за помощь.

ответ

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, то вы могли бы сделать это вместо того, чтобы

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