【问题标题】:ConfusionMatrix prediction/actualConfusionMatrix 预测/实际
【发布时间】:2020-11-25 21:09:10
【问题描述】:

我试图预测糖尿病“是”或“否”。我训练了我的数据集,如下所示。之后我预测了这些值。然后我创建了一个向量并尝试使用混淆矩阵来检查 sens、spec 和accuracy。但我总是出错。

df_fold <- train(data = df_train, Outcome~., method = "glmnet",
             family = "binomial",
             metric = "ROC",
             preProcess = c("zv", "center", "scale"),
               trControl = trainControl(
                 method = "cv", number = 10,
                 summaryFunction = twoClassSummary,
                 classProbs = TRUE,
                 verboseIter = TRUE
             ))


p <- predict.train(df_fold, df_test, type = "prob")

y_or_no <- ifelse(p > 0.8, "yes", "no")
p_yes <- factor(y_or_no, levels = levels(df_test$Outcome))

confusionMatrix.train(p_yes, df_test$Outcome, dnn = c("prediction", "actual"))

错误:$ 运算符对原子向量无效

【问题讨论】:

  • df_test 长什么样子?
  • 我发现 p_yes 有 477 个值。由于预测功能,这太多了。它给了我一个 243 obs 的 df。两个变量而不是 1 个变量的 243 个 obs

标签: r r-caret


【解决方案1】:

我认为你追求的是confusionMatrix 而不是confusionMatrix.train

confusionMatrix(p_yes, df_test$Outcome, dnn = c("prediction", "actual"))

根据插入符号文档,confusionMatrix.train 用于

使用 train, rfe, sbf 对象,根据以下公式确定混淆矩阵 重采样程序

confusionMatrix.train(fitted_model)

【讨论】:

  • 如果想比较实际值和预测值。在您的第一个版本中,没有可比性。
  • 是的,您不应该使用 (confusionMatrix.train) 那个。使用另一个。
  • 如果我使用您的第二个版本,那也无法正常工作,因为我的 p 对两个变量有 243 个观察值。结果只是一个变量。所以他们无法比较。
  • 我之前只使用了confusionMatrix并且它有效,但我需要使用 ('''reg_model
  • 两个变量是prob和1-prob。所以使用一个适当的列。 (请注意,行总和加到 1。)希望您能看到提供可重复示例的重要性。
猜你喜欢
  • 1970-01-01
  • 2016-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
相关资源
最近更新 更多