从predict()函数而不是因子获取数值输出
我正在运行一个决策树来对葡萄酒的质量进行分类。当我运行从predict()函数而不是因子获取数值输出,r,R,我正在运行一个决策树来对葡萄酒的质量进行分类。当我运行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 <
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)
我尝试使用以下公式计算精度模型:
acc <- table(pred, test$taste)
sum(diag(acc)) / sum(acc)
我不太确定我做错了什么。我怀疑这与
rpart()
函数有关。当我使用随机林执行相同的过程时,它可以完美地工作。任何帮助都将不胜感激 您需要在predict
中指定type=“class”
。从?predict.rpart
:
如果type=“class”:
(对于分类树)的系数
根据答复进行分类
您可以确认它提供了所需的输出:
pred <- predict(DecisionTree, test, type = "class")
head(pred, 10)
# 3 7 12 14 15 21 22 23 27 30
# fine fine fine fine fine tasty fine fine fine tasty
#Levels: fine tasty yucky
pred哇,太简单了,非常感谢。如果你有时间的话,我会跟进的。我的预测是完美的。这让我觉得有些事情不对,你们知道为什么会这样做吗?@AmeliaO'Leary这是因为你们把质量作为一个预测指标,这就是你们定义的味道。非常感谢你所做的一切。
6 14 18 23 24 25 26 30 33
fine fine fine fine fine fine fine tasty fine
Levels: fine tasty yucky
pred <- predict(DecisionTree, test, type = "class")
head(pred, 10)
# 3 7 12 14 15 21 22 23 27 30
# fine fine fine fine fine tasty fine fine fine tasty
#Levels: fine tasty yucky