Предупреждение «Переменная не является фактором» при использовании предиката для кодирования One-Hot с использованием каретки - PullRequest
0 голосов
/ 01 марта 2019

Я изучаю этого урока , чтобы изучить основы пакета карет в R и машинном обучении.

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

orange <- read.csv('https://raw.githubusercontent.com/selva86/datasets/master/orange_juice_withmissing.csv')
trainRowNumbers <- createDataPartition(orange$Purchase, p=0.8, list=FALSE)

# Step 2: Create the training  dataset
trainData <- orange[trainRowNumbers,]

# Step 3: Create the test dataset
testData <- orange[-trainRowNumbers,]

#Impute
preProcess_missingdata_model <- preProcess(trainData, method='knnImpute')
preProcess_missingdata_model
library(RANN)  # required for knnInpute
trainData <- predict(preProcess_missingdata_model, newdata = trainData)

#One-hot encoding
dummies_model <- dummyVars(Purchase ~ ., data=trainData)
trainData_mat <- predict(dummies_model, newdata = trainData)    

Я получаю: Предупреждение: В model.frame.default (Условия, новые данные, na.action = na.action, xlev = object $ lvls): переменная «Покупка» не является фактором

Но:

is.factor(trainData$Purchase)
[1] TRUE

У меня два вопроса:

  1. Что происходит?
  2. Это важно?
  3. (Для дополнительных очков), почему R предупреждения / сообщения об ошибках настолько плохи и неинформативны?

1 Ответ

0 голосов
/ 11 июня 2019

Вы можете легко исправить это, удалив метку перед ~.

В этом случае ваш код будет выглядеть так:

#One-hot encoding
dummies_model <- dummyVars(~ ., data=trainData)
trainData_mat <- predict(dummies_model, newdata = trainData)
...