【问题标题】:Tuning SVM parameters using svm.tune e1071 package使用 svm.tune e1071 包调整 SVM 参数
【发布时间】:2013-01-12 13:05:54
【问题描述】:

我正在尝试使用 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): 模型为空!

此问题的可能原因是什么?

谢谢。

【问题讨论】:

    标签: r svm libsvm


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-06-20
        • 2016-08-13
        • 2016-11-20
        • 2021-10-12
        • 2011-11-15
        • 2014-08-01
        • 2022-06-30
        • 2018-06-10
        • 1970-01-01
        相关资源
        最近更新 更多