#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. Может быть, вы можете сделать воспроизводимый пример.