Я использую дерево решений для классификации качества вин. Когда я запускаю predict()
, он выводит число вместо желаемого коэффициента. Я использую код ниже:
library(rpart)
wine <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv", sep = ";")
wine$taste <- ifelse(wine$quality < 5, "yucky", "tasty")
wine$taste[wine$quality == 5] <- "fine"
wine$taste <- as.factor(wine$taste)
set.seed(123)
sample <- sample(nrow(wine), 0.7 * nrow(wine))
train <- wine[sample, ]
test <- wine[-sample, ]
DecisionTree <- rpart(taste ~ ., data = train)
pred <- predict(DecisionTree, test)
Я получаю что-то похожее на это:
head(pred, 10)
fine tastey yucky
6 1 0 0
14 1 0 0
18 1 0 0
23 1 0 0
24 1 0 0
25 0 1 0
26 1 0 0
30 0 1 0
33 1 0 0
35 1 0 0
Я пытаюсь вычислить модель точности, используя формулу:
acc <- table(pred, test$taste)
sum(diag(acc)) / sum(acc)
И я получаю сообщение об ошибке: аргументы не имеют одинаковую длину, что имеет смысл из-за формата вывода пред. Я думаю, что вывод должен выглядеть примерно так:
6 14 18 23 24 25 26 30 33
fine fine fine fine fine fine fine tasty fine
Levels: fine tasty yucky
Я не совсем уверен, что я делаю неправильно. Я подозреваю, что это связано с функцией rpart()
. Когда я делаю тот же процесс, но со случайным лесом, он работает отлично. Любая помощь будет по достоинству оценена.