如何为决策树模型创建混淆矩阵
How to create a confusion matrix for a decision tree model
我在创建混淆矩阵以将我的模型预测值与实际值进行比较时遇到了一些困难。我的数据集有 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 个水平的因子。关于如何解决这个问题的任何想法?
提前致谢
您的预测为您提供了每个 class 的概率矩阵。如果您想返回 "winner"(预测的 class),请将您的预测行替换为:
pred1 <- predict(decisionTreeModel, validation, type="class")
我在创建混淆矩阵以将我的模型预测值与实际值进行比较时遇到了一些困难。我的数据集有 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 个水平的因子。关于如何解决这个问题的任何想法?
提前致谢
您的预测为您提供了每个 class 的概率矩阵。如果您想返回 "winner"(预测的 class),请将您的预测行替换为:
pred1 <- predict(decisionTreeModel, validation, type="class")