confusionMatrix ошибочный вывод R для Дерева решений

#r #decision-tree

#r #дерево решений

Вопрос:

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

 Error: `data` and `reference` should be factors with the same levels.
  

#######################Дерево решений#####################

 set.seed(3033)
intrain <- createDataPartition(y = new_columns$yyes, p= 0.7, list = FALSE)
training <- new_columns[intrain,]
testing <- new_columns[-intrain,]

#check dimensions of train amp; test set
dim(training); 
dim(testing);

trctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 3)


set.seed(3333)
dtree_fit <- train(yyes ~., data = training, method = "rpart",
                   parms = list(split = "information"),
                   trControl=trctrl,
                   tuneLength = 10)
dtree_fit

prp(dtree_fit$finalModel, box.palette = "Reds", tweak = 1.2)

testing[1,]
predict(dtree_fit, newdata = testing[1,])

test_pred <- predict(dtree_fit, newdata = testing)
confusionMatrix(test_pred, testing$yyes )  #check accuracy
  

Мое значение test_pred дает результаты, подобные приведенным ниже,

введите описание изображения здесь

тестирование $ yyes

введите описание изображения здесь

Итак, я думаю, что проблема в двоичных файлах и десятичных числах. Как я могу это исправить?

Ответ №1:

Вы выполняете задачу классификации, но похоже, что вы подгоняете дерево регрессии, поэтому вы получаете десятичные дроби test_pred . Далее, confusionMatrix() буквально нужны факторы.

Вы можете решить обе проблемы, приведя yyes к коэффициенту перед подгонкой вашей модели. Это должно подсказать rpart , что вам нужно дерево классификации, и тогда ваши прогнозы будут факторами с одинаковыми уровнями.

Вот воспроизводимый пример.

 # Notice the coercion happens before doing anything else.
.iris <- iris %>% mutate(group = as.factor(group))
train = .iris[1:100,]
test = .iris[101:150,]

tree_fit <- train(group ~ . , data = train, method = 'rpart') 
test_pred <- predict(tree_fit, test)
confusionMatrix(test_pred, test$group)
  

Комментарии:

1. Не могли бы вы любезно предоставить мне небольшой пример

2. Я получаю ту же ошибку: ( Ниже приведено изменение, которое я сделал. # Обратите внимание, что принуждение происходит до того, как вы сделаете что-либо еще. .new_columns <- new_columns %>% мутировать (yyes = как.factor(yyes)) Но все еще возникает та же проблема.

3. Может быть, вы можете сделать воспроизводимый пример.