也许我搜索了错误的关键字来找到解决此问题的方法,但到目前为止我还没有在网上找到答案。
情况:我已经使用 CARET 包在 R 中训练了一个带有正则化的逻辑回归模型,用于两类分类。使用该模型,我预测了我的训练和验证集的类别,以接收混淆矩阵并测量模型的性能。
问题:现在我想根据我的模型识别具有错误类的对象。因此,那些在混淆矩阵中实际上属于“否”类时被预测为“是”的那些,反之亦然。我想这样做是为了检查对象,以改进或更改功能以获得更好的模型。我想知道的是它们在数据框中的位置。
我的相关代码:
set.seed(1)
datapart <- createDataPartition(m$class, p = .85, list = FALSE)
train <- m[datapart ,]
validation <- m[-datapart ,]
library(glmnet)
set.seed(1)
glmnetcontrol <- trainControl(method="repeatedcv", number=10, repeats=3, classProbs = TRUE, summaryFunction = twoClassSummary, search = "random")
glmnet <- train(class~., data=train, method="glmnet", trControl = glmnetcontrol, metric="ROC")
predict_validation <- predict(glmnet, validation, type="raw")
predict_train <- predict(glmnet, train, type="raw")
quality_glmnet_valid <- confusionMatrix(predict_validation , validation$class)
quality_glmnet_train <- confusionMatrix(predict_train , train$class)
由于您的预测是原始概率,因此您需要将它们作为一个类。以下>=0.5
条件检查是将它们转换为 aTRUE
或FALSE
。如果您希望它是 1 或 0(假设您的class
变量是1
或的二元因子0
),那么您可以简单地为您的预测和真实类别标签彼此不一致的行设置子集。
`validation[as.numeric(validation$class) != as.numeric(predict_train >= 0.5), ]`
因为您没有发布数据,所以我必须对您的数据的结构或格式做出一些假设。您可以修改代码以获取预测错误的行(如果它们不是数字 0 或 1,请发表评论并让我知道或发布示例)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句