R: объект не найден при вязании - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь запустить построение модели knn, используя caret с моим набором данных, где True (реальные продажи), DOW (День недели) и D1 до D10 (исторический продажи) имеются.

library(caret)
library(reshape2)
library(dplyr)
library(tibble)
library(dummies)

#data
rm = matrix(rnorm(100*10, 10, 5), nrow = 100) %>% as.data.frame()
wide = cbind(
  rnorm(100, 100, 1),
  weekdays(seq(as.Date('2019/1/1'), by='day', length.out = 100)),
  rm
)
colnames(wide) = c('true', 'DOW', paste0('D',1:10))

#preprocessing for knn
train.true = train[,1] 
dow.tr = dummy(train$DOW, sep='.')
dow.te = dummy(test$DOW, sep='.')
k.train = cbind(train[, -c(2, nearZeroVar(train))], dow.tr)
k.test = cbind(test, dow.te)[,-2]

seq.knn.pre1 = rep(0, nrow(test))
for (i in 1:10){
  this.train = k.train[, c((i+1):ncol(k.train))]
  this.test = k.test[i, c((i+1):ncol(k.test))]
  train.control = trainControl(method='repeatedcv', number=10, repeats = 1)

  k = train(train.true~., method='knn', tuneLength = 8, 
            trControl=train.control, preProcess='scale',
            data=data.frame(train.true, this.train))
  seq.knn.pre1[i] = predict(k, this.test)
}
seq.knn.pre1 = cbind(true = test[,1], k.pred1 = seq.knn.pre1) %>% data.frame() 

Однако, когда я вяжу файл, он дает мне error object 'X.Rachel.Documents.Research.file.Rmd.Friday' not found Calls: <Anonymous> ... predict.train -> model.frame -> model.frame.default -> eval -> eval Execution halted.


Я предполагаю, что проблема может быть связана с фиктивными переменными DOW. Когда в моем смоделированном наборе данных нет категориальных переменных, код хорошо связан. Есть ли возможность, что я могу это исправить там?

Любое предложение высоко ценится!

...