KNN работает в «классе», но не в «карете» (слишком много связей) - PullRequest
1 голос
/ 20 мая 2019

Я делаю алгоритм KNN для прогнозирования close_price с примерно 80000 строк этих данных.

# A tibble: 81,334 x 12
   latitude longitude close_date          close_price    id address      country state zip   date        week  year
      <dbl>     <dbl> <dttm>                    <dbl> <int> <fct>        <fct>   <fct> <fct> <date>     <dbl> <dbl>
 1     36.4     -98.7 2014-08-05 06:34:00     147504.     2 US-412, Fai… USA     OK    73737 2014-08-05    31  2014
 2     36.6     -97.9 2014-08-12 23:48:00     137401.     3 N2850 Rd, E… USA     OK    73703 2014-08-12    32  2014
 3     36.6     -97.9 2014-08-09 04:00:40     239105.     5 Craig Rd, P… USA     OK    73766 2014-08-09    32  2014
 4     36.5     -98.3 2014-08-07 15:18:18     270885.     6 62161 Caddo… USA     OK    73741 2014-08-07    32  2014

Я пытаюсь начать с простой модели, которая предсказывает цену закрытия в зависимости от недели.

library(caret)
data_small <- data %>% select(close_price, week)
training.samples <- data_small$close_price %>%
  createDataPartition(p = 0.8, list = FALSE)
train.data  <- data_small[training.samples, ]
test.data <- data_small[-training.samples, ]

Я считаю, что могу делать прогнозы, используя knn() из class.

library(class)
modelKNN <- knn(train.data, test.data, cl = train.data$close_price, k = 4, l = 0, prob = FALSE, use.all = TRUE)

Но когда я пытаюсь сделать это с помощью карета, я получаю сообщение об ошибке.

model <- train(close_price~ ., data = train.data, method = "knn")

Служит мне обратно:

Предупреждающие сообщения:

1: сбой прогнозов для Resample01: k = 5 Ошибка в knnregTrain (train = состав (c (32, 32, 32, 25, 25, 25, 25, 32,:
слишком много галстуков в кнн

2: сбой прогнозов для Resample01: k = 7 Ошибка в knnregTrain (train = структура (c (32, 32, 32, 25, 25, 25, 25, 32): слишком много связей в knn

3: сбой прогнозов для Resample01: k = 9 Ошибка в knnregTrain (train = структура (c (32, 32, 32, 25, 25, 25, 25, 32): слишком много связей в knn

Я пробовал разные варианты train(), например, включая trControl = trainControl("cv", number = 10), preProcess = c("center", "scale"), tuneLength = 10 с тем же результатом.

Хочу также отметить, что цены немного отличаются в зависимости от недели закрытия.

Я посмотрел на подобный вопрос здесь , но их использование просто использует class.

Это структура данных поезда.

# A tibble: 65,070 x 2
   close_price  week
         <dbl> <dbl>
 1     147504.    31
 2     239105.    32
 3     270885.    32
 4     228514.    25
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...