2

我正在尝试使用 e1071 包在 R 中使用支持向量机执行分类。使用以下代码并指定成本和伽玛参数,我可以成功训练模型。

svm_models <- lapply(training_data,
                function(data)
                {
                  svm(label~., data=data,
                      method="C-classification", kernel="radial",
                      cost=10, gamma=0.1)
                })

但是如果我在上述函数中执行参数调整,如下代码,

svmmodels <- lapply(trainingdata,
                function(data)
                {
                  params <- tune.svm(label~., data=data,
                                    gamma=10^(-6:-2), cost=10^(1:2))
                  svm(label~., data=data,
                      method="C-classification", kernel="radial",
                      cost=params$best.parameter[[2]], gamma=params$best.parameter[[1]])
                })

然后我收到以下错误:

predict.svm(ret, xhold, decision.values = TRUE) 中的错误(来自 #4):模型为空!

这个问题的可能原因是什么?

谢谢。

4

2 回答 2

1

根据?tune,应该是best.parameters,不是best.parameter。尝试在代码中两个实例的末尾添加“s”,看看它是否有效。

于 2013-07-11T04:10:06.953 回答
0

没有测试数据(甚至没有数据描述),很难说很确定。但是,可以说您的调用与帮助页面svmtune.svm的示例不符。e1071::tune此外,“成本”和“价格”参数应该作为列表元素给出的形式参数是“范围”。您不需要在输出上运行 svm。

于 2013-01-29T04:30:03.223 回答