Ошибка в eval (predvars, data, env): объект 'Rm' не найден - PullRequest
0 голосов
/ 26 мая 2018
dataset = read.csv('dataset/housing.header.binary.txt')
dataset1 = dataset[6] #higest positive correlation
dataset2 = dataset[13] #lowest negative correlation
dependentVal= dataset[14] #dependent value
new_dataset = cbind(dataset1,dataset2, dependentVal) # new matrix 

#split dataset
#install.packages('caTools')
library(caTools)

set.seed(123) #this is needed to garantee that every run will produce the same output
split = sample.split(new_dataset, SplitRatio = 0.75)
train_set = subset(new_dataset, split == TRUE)
test_set = subset(new_dataset, split == FALSE)


#Fitting Decision Tree to training set
install.packages('rpart')
library(rpart)
classifier = rpart(formula = Medv ~ Rm + Lstat,
                   data = train_set)

#predicting the test set results
y_pred = predict(classifier, newdata = test_set[3], type ='class')

Я хочу предсказать столбец 3 из test_set, но продолжаю получать

Ошибка в eval (predvars, data, env): объект 'Rm' не найден

Хотя я указываю test_set[3], а не test_set[1], которые содержат Rm

Имена столбцов следующие: Rm, Lstat и Medv.

test_set[3] и test_set[2] выдают одинаковую ошибку:

Ошибка в eval (predvars, data, env): объект Rm не найден

и test_set[1] дает:

Ошибка в eval (predvars, data, env): объект 'Lstat' не найден

Я пробовал следующее:

  1. names(test_set) <- c('Rm', 'Lstat','Medv'): я переименовал явно.
  2. is.data.frame(test_set): я проверил, является ли test_set фреймом данных.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Пожалуйста, обратитесь к учебнику по этой ссылке: Ошибка в eval (predvars, data, env)

Нам нужно позаботиться о двух моментах:

  1. Не использовать data.frame в новом объекте:

    predict(my_mdl, newdata)
    Error in eval(predvars, data, env) : 
       numeric 'envir' arg not of length one
    
  2. Не использовать те же имена в новом фрейме данных:

    newdf2 <- data.frame(newdata)
    predict(my_mdl, newdf2)
    Error in eval(expr, envir, enclos) : object 'disp' not found
    
0 голосов
/ 26 мая 2018

Я решил проблему с помощью следующего кода

y_pred = predict(classifier, newdata = test_set[-3], type ='class')

https://www.rdocumentation.org/packages/rpart/versions/4.1-13/topics/predict.rpart цитата из документации R

"newdata: фрейм данных, содержащий значения, для которых требуются предсказания.Предикторы, указанные в правой части формулы (объекта), должны присутствовать по имени в newdata. Если они отсутствуют, возвращенные значения возвращаются. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...