我正在尝试使用tune.svm函数,因为我不知道哪些参数会产生一个好的模型(因为训练数据会被用户选中)我需要涵盖各种各样的值。目前我有这种行为
tune(svm, value ~ . , data= data_l, ranges=list(cost = 10^(0:5), epsilon = 10^(-1:0)))
Parameter tuning of ‘svm’:
- sampling method: 10-fold cross validation
- best parameters:
cost epsilon
100 0.1
- best performance: 277.5491
和
tune(svm, value ~ . , data= data_l, ranges=list(cost = 10^(0:5), epsilon = 10^(-1:1)))
Error in predict.svm(ret, xhold, decision.values = TRUE) : Model is empty!
(epsilon最高值的差异)
我知道svm不适用于epsilon = 10,但我对这个调优函数的直觉是,它可以处理不会产生模型的参数。 为什么不选择可以生成的模型? 有没有“简单”的方法来省略这种错误行为? (我尝试过tryCatch(tune())和我发现的很多其他东西,但我想我必须深入研究一下听起来不那么“简单”的tune / svm / predict-codes了。
答案 0 :(得分:0)
我对"模型的理解是空的!"错误是它表示singular训练矩阵被输入SVM。请参阅Salvy的answer至this相关帖子以及R邮件列表中与Oldrich Kruza相关的message。