【问题标题】:How to create a confusion matrix for a decision tree model如何为决策树模型创建混淆矩阵
【发布时间】:2016-09-21 15:08:23
【问题描述】:

我在创建混淆矩阵以将我的模型预测与实际值进行比较时遇到了一些困难。我的数据集有 159 个解释变量,我的目标叫做“classe”。

#Load Data
df <- read.csv("https://d396qusza40orc.cloudfront.net/predmachlearn/pml-training.csv", na.strings=c("NA","#DIV/0!",""))

#Split into training and validation
index <- createDataPartition(df$classe, times=1, p=0.5)[[1]]
training <- df[index, ]
validation <- df[-index, ]

#Model
decisionTreeModel <- rpart(classe ~ ., data=training, method="class", cp =0.5)

#Predict
pred1 <- predict(decisionTreeModel, validation)

#Check model performance
confusionMatrix(validation$classe, pred1)

从上面的代码生成以下错误消息:

Error in confusionMatrix.default(validation$classe, pred1) : 
  The data must contain some levels that overlap the reference.

我认为这可能与预测函数生成的 pred1 变量有关,它是一个有 5 列的矩阵,而 validation$classe 是一个有 5 个级别的因子。关于如何解决这个问题的任何想法?

提前致谢

【问题讨论】:

  • 您应该检查validation$classepred1 是否是因子以及它们是否具有相同的水平(levels(validation$classe)levels(pred1)),并可能在问题中分享结果。此外,如果您共享 csv 文件中的数据样本会很好。

标签: r confusion-matrix


【解决方案1】:

您的预测为您提供了每个类别的概率矩阵。如果您想返回“赢家”(预测类),请将您的预测行替换为:

pred1 <- predict(decisionTreeModel, validation, type="class")

【讨论】:

  • 添加,如果rpart对象是分类树,那么默认类型是'prob',返回prob预测,一个矩阵,其列是第一、第二等类的概率,因此您需要通过 type='class' 覆盖默认选项
猜你喜欢
  • 2021-03-17
  • 2020-12-30
  • 1970-01-01
  • 2021-03-02
  • 2018-04-27
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 2011-09-30
相关资源
最近更新 更多