R 使用相同结果值时与e1071中的SVM不一致

R 使用相同结果值时与e1071中的SVM不一致,r,R,我有一个数据帧testdf dput(testdf) 当我使用漏掉一个交叉验证将其放入e1071时,我会得到不一致的结果,这取决于我是否这样做 kernelfn <- "linear" y.svm <- rep(NA, nrow(testdf)) for (i in 1:nrow(testdf)) { testset <- testdf[i, ] trainset <- testdf[-i, ] model.svm <- sv

我有一个数据帧testdf

dput(testdf)

当我使用漏掉一个交叉验证将其放入e1071时,我会得到不一致的结果,这取决于我是否这样做

kernelfn <- "linear"
y.svm <- rep(NA, nrow(testdf))
for (i in 1:nrow(testdf)) {
    testset <- testdf[i, ]
    trainset <- testdf[-i, ]
    model.svm <-
        svm(
            **trainset$status**~.,
            data = trainset,
            type = "C-classification",
            kernel = kernelfn
        )
    y.svm[i] <- as.character(predict(model.svm, testset))
}
> table(testdf$status, y.svm)
   y.svm
     0  1
  0 17  9
  1 10 21
在预测中,为什么会出现这种不一致?我做厕所的时候做错什么了吗


谢谢

无论哪种情况,您都没有正确指定型号。第一个调用以某种方式通过,但第二个调用没有按预期通过。要查看我说的内容,请在这两种情况下都使用
as.character(predict(model.svm,testset[,1:21])
。第二个模型使用
status
作为功能。在这两种情况下,您都没有正确指定模型。第一个调用以某种方式通过,但第二个调用没有按预期通过。要查看我说的内容,请使用
as.character(predict(model.svm,testset[,1:21])
在这两种情况下。第二个模型使用
状态
作为特征。
kernelfn <- "linear"
y.svm <- rep(NA, nrow(testdf))
for (i in 1:nrow(testdf)) {
    testset <- testdf[i, ]
    trainset <- testdf[-i, ]
    model.svm <-
        svm(
            **trainset$status**~.,
            data = trainset,
            type = "C-classification",
            kernel = kernelfn
        )
    y.svm[i] <- as.character(predict(model.svm, testset))
}
> table(testdf$status, y.svm)
   y.svm
     0  1
  0 17  9
  1 10 21
kernelfn <- "linear"
y.svm <- rep(NA, nrow(testdf))
for (i in 1:nrow(testdf)) {
    testset <- testdf[i, ]
    trainset <- testdf[-i, ]
    model.svm <-
        svm(
            **trainset[,22]**~.,
            data = trainset,
            type = "C-classification",
            kernel = kernelfn
        )
    y.svm[i] <- as.character(predict(model.svm, testset))
}

> table(testdf$status, y.svm)
   y.svm
     0  1
  0 26  0
  1  0 31
> identical(testdf$status, testdf[,22])
[1] TRUE