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、 である必要があります。コード内の両方のインスタンスの最後に「s」を追加してみて、機能するかどうかを確認してください。best.parametersbest.parameter

于 2013-07-11T04:10:06.953 に答える
0

テスト用のデータがないため(またはデータの説明さえないため)、決定的なことを言うのは非常に困難です。svmただし、呼び出し後の呼び出しがヘルプ ページtune.svmの例に沿っていないと言うことは可能です。e1071::tuneさらに、"cost" および "price" パラメータをリスト要素として指定する必要がある正式なパラメータは "range" です。出力に対して svm を実行する必要はありません。

于 2013-01-29T04:30:03.223 に答える