也许我已经搜索了错误的关键字来找到这个问题的解决方案,但到目前为止我还没有在网上找到答案。
情况:我已经训练了一个逻辑回归模型,在R中使用CARET包进行正则化,进行两级分类。然后我用模型预测了我的训练和验证集的类别,以接收混淆矩阵并测量模型的性能。
问题:现在我想根据我的模型识别出错类的对象。因此,那些被预测为“是”的实际上它们属于“否”类,反之亦然在混淆矩阵中。我想这样做是为了检查对象以改进或改变功能以获得更好的模型。我想知道的是他们在数据框中的位置。
我的相关代码:
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 :(得分:0)
由于您的预测是原始概率,因此您需要将它们作为一个类。以下>=0.5
条件检查是将它们转换为TRUE
或FALSE
。如果您希望它是1或0(假设您的class
变量是1
或0
的二进制因子),那么您可以简单地为您的预测和真实的行进行子集化班级标签彼此不一致。
`validation[as.numeric(validation$class) != as.numeric(predict_train >= 0.5), ]`
因为您没有发布数据,所以我必须对数据的结构或格式做出一些假设。您可以调整代码以获取错误预测的行(如果他们不是数字0或1,请注释并让我知道或发布样本)。