【发布时间】: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 的长度。这是两个不同的数据帧,您会得到不同的长度...我不太了解您的问题跨度>