Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从predict()函数而不是因子获取数值输出_R - Fatal编程技术网

从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