【问题标题】:R predicts less instances that the datasetR 预测的实例少于数据集
【发布时间】:2016-03-13 07:31:46
【问题描述】:

我正在用“插入符号”在 R 中创建一个预测模型,但我不明白“预测”函数是如何工作的。

我有一个包含 222 个实例的数据集测试,但是当我执行下一个命令时:

j48Probs <- predict(j48Model3x10cv, newdata = testing, type = "prob")

j48probs 有 178 个元素,当我尝试获取混淆矩阵时,出现下一个错误:

j48Classes <- predict(j48Model3x10cv, newdata = testing, type = "raw")
confusionMatrix(data=j48Classes, testing$Survived)

Error in table(data, reference, dnn = dnn, ...) : 
all arguments must have the same length

会发生什么?

非常感谢!

【问题讨论】:

  • 您的数据中是否存在缺失值?
  • 训练数据集中有缺失值

标签: r matrix r-caret predict


【解决方案1】:

您的测试集中必须有缺失值。 predict 中的选项之一是 na.action,这是标准设置为 na.omit。这意味着在预测变量之一中包含缺失数据的任何记录都将被忽略。

获取您的测试数据集并执行nrow(na.omit(testing)。它将显示有多少行将用于预测。在您的情况下,这可能会返回 177 条记录。

而且这个问题会转移到混淆矩阵中,您正在尝试将 177 个预测与 222 个标签进行比较。

您可以设置 na.action = NULL,但这将返回 NA 预测。这可能有意义,也可能没有意义。在某些情况下,无法预测分类也是信息。您也可以尝试估算缺失的数据。

【讨论】:

    【解决方案2】:

    如果问题是在预测中有很多实例因为缺失值而被忽略,我考虑两种解决方案:

    1.- 不要忽略它们。 2.- 在测试集中也忽略它们。

    1.- 我是这样解决的:

    j48Probs <- predict(j48Model3x10cv, newdata = testing, type = "prob", na.action = na.pass)
    
    j48Classes <- predict(j48Model3x10cv, newdata = testing, type = "raw", na.action = na.pass)
    confusionMatrix(data=j48Classes, testing$Survived)
    

    2.- 我是这样解决的:

    testing <- (na.omit(testing)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 2019-02-15
      • 2023-03-19
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      相关资源
      最近更新 更多