【问题标题】:predict in caret ConfusionMatrix is removing rows插入符号中的预测 ConfusionMatrix 正在删除行
【发布时间】:2020-04-18 20:34:07
【问题描述】:

我对使用 caret 库还很陌生,这给我带来了一些问题。任何 帮助/建议将不胜感激。我的情况如下:

我正在尝试对一些数据运行一般线性模型,当我运行它时 通过confusionMatrix,我得到'数据和参考因素必须有 相同的层数”。我知道这个错误是什么意思(我以前遇到过),但我已经两次和三次检查了我的数据操作,一切看起来都是正确的(我在正确的地方使用了正确的变量),所以我不知道为什么confusionMatrix 中的两个值不一致。我为不同的变量运行了几乎完全相同的代码,并且运行良好。

我检查了每一个变量,一切都很平衡,直到我到达 confusionMatrix 预测。我通过执行以下操作发现了这一点:

 a <- table(testing2$hold1yes0no)

 a[1]+a[2]


1543

 b <- table(predict(modelFit,trainTR2))

 dim(b)

[1] 1538

这两个值不应不一致。缺少的 5 行在哪里?

我的代码如下:

set.seed(2382)

inTrain2 <- createDataPartition(y=HOLD$hold1yes0no, p = 0.6, list = FALSE)

training2 <- HOLD[inTrain2,]

testing2 <- HOLD[-inTrain2,]

preProc2 <- preProcess(training2[-c(1,2,3,4,5,6,7,8,9)], method="BoxCox")

trainPC2 <- predict(preProc2, training2[-c(1,2,3,4,5,6,7,8,9)])

trainTR2 <- predict(preProc2, testing2[-c(1,2,3,4,5,6,7,8,9)])

modelFit <- train(training2$hold1yes0no ~ ., method ="glm", data = trainPC2)

confusionMatrix(testing2$hold1yes0no, predict(modelFit,trainTR2))

【问题讨论】:

  • 您确实在 trainTR2 上进行了预测,并检查了 testing2$hold1yes0no 的长度。这是两个不同的数据帧,您会得到不同的长度...我不太了解您的问题跨度>

标签: r r-caret


【解决方案1】:

我不确定,因为我不知道您的数据结构,但我想知道这是否是由于您使用公式方法设置 modelFit 的方式。在这种情况下,您指定 y = training2$hold1yes0no 和 x = 其他所有内容。也许你应该尝试:

modelFit <- train(trainPC2, training2$hold1yes0no, method="glm")

其中指定了y = training2$hold1yes0nox = trainPC2

【讨论】:

    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多