首页 文章

预测拟合插入符号SVM模型时的预测警告

提问于
浏览
1

我希望得到一些关于我为什么得到的指示:

Warning message: In method$predict(modelFit = modelFit, newdata =
newdata, submodels = param) :   kernlab class prediction calculations
failed; returning NAs

当我打印预测时:

svmRadial_Predict
  [1] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>....

我写的代码用于执行SVM拟合:

#10-fold cross validation in 3 repetitions 
    control = trainControl(seeds = s, method="repeatedcv", number=10,
repeats=3, savePredictions = TRUE, classProbs =  TRUE)

拟合的SVM模型如下:

svmRadial_model = train(y=modelTrain$Emotion,
                        x=modelTrain[c(2:4)],
                        method ='svmRadial',
                        trControl = control,
                        data=modelTrain,
                        tuneLength = 3
                        )

我编写的用于执行预测的代码如下所示:

svmRadial_Predict <- predict(svmRadial_model, 
newdata = modelTest[c(2:4)], probability = TRUE )

我检查了数据,训练或测试集中没有NA值 . y值是一个因子,如果产生差异,x值是数值?任何调试这个的提示都将非常感谢!

模型训练我可以看到这样的警告:

line search fails -1.407938 -0.1710936 2.039448e-05

我假设的只是模型无法适应数据中特定观察的超平面 . 我正在使用svmRadial内核我正在尝试拟合的数据已经使用R scale()函数进行居中和缩放 .

进一步的工作让我相信它与classProbs = TRUE标志有关 . 如果我将其遗漏,则不会打印任何警告 . 我已经启动了另一段代码,SVM似乎需要花费很长时间才能在我的笔记本电脑上完成此任务,但我会在完成后立即报告结果 .

作为最后的编辑,模型拟合完成没有错误,我可以使用该模型很好地预测/计算混淆矩阵等 . 我不明白为什么包括classProbs = TRUE打破它,但也许它与组合有关交叉验证,我在trainControl中请求的交叉验证

1 回答

  • 0

    我的解决办法就是省略trainControl函数的classProbs = TRUE参数 . 一旦我这样做,一切都有效 . 我猜它与引擎盖下的交叉验证有什么关系,但我不确定 .

相关问题