我想在使用caret库的train()函数后显示混淆矩阵,但我有一些疑问。”train()”应该是在训练集上进行的吗?(我对”control”参数不太确定)。”predict()”应该在测试集上进行吗?在整个数据集上进行预测似乎有点奇怪…
# df_corpus = 文档术语矩阵 + 包含Cos.code类别的一列(类别如203.2.2, 204.3.2 ...)
dataset <- df_corpus
control <- trainControl(method = "repeatedcv", number = 10, repeats = 3)
seed <- 7
metric <- "Accuracy"
preProcess=c("center", "scale")
# 线性判别分析
set.seed(seed)
fit.lda <- train(Cos.code~., data=dataset, method="lda", metric=metric,preProc=c("center", "scale"), trControl=control)
ldaClasses <- predict(fit.lda)
cm <- confusionMatrix(data = ldaClasses, dataset$Cos.code)
F1_score(cm$table, "lda")
感谢您的帮助
回答:
您可以这样获取混淆矩阵:
confusionMatrix(predict(fit.lda,dataset$Cos.code),dataset$Cos.code)
您可以用相同的方式计算测试集的混淆矩阵,只需更换数据集即可。
但我认为您的模型应该已经包含了您想要的信息。查看打印这两个对象时给出的信息。
fit.lda
fit.lda$finalModel