2017-01-11 10 views
1

エキスパート私はRの初心者です。分類を行うためにキャレットSVMを使用しようとしています。カーネルはsvmPolyです。 まず、私は休暇ワンアウトクロスバリデーションでモデルを訓練するためにデフォルトパラメータを使用 コードは次のとおりです。キャレット - svmのエラー - 「添え字付きの割り当てではNAsは使用できません」

ctrl <- trainControl(method = "LOOCV", 
        classProbs = T, 
        savePredictions = T, 
        repeats = 1) 
modelFit <- train(group~.,data=table_svm,method="svmPoly", 
        preProc = c("center","scale"), 
        trControl = ctrl) 

最高の精度は80%です。モデルに使用された最終的な値は、degree = 1、scale = 0.1、およびc = 1でした。

第2に、パラメータを調整しようとしました。 コードです:

grid_svmpoly=expand.grid(degree=c(1:11),scale=seq(0,5,length.out=25),C=10^c(0:4)) 
modelFit_tune <- train(group~.,data=table_svm,method="svmPoly", 
        preProc = c("center","scale"), 
        tuneGrid=grid_svmpoly, 
        trControl = ctrl) 

私はエラーメッセージました:{でエラー: タスク264が失敗した - 私は、データをチェックし、何のNAを発見した「NASは添字の割り当てで許可されていない」

答えて

0

データセット内にはいくつかのNAが必要です。私はこれに新しいものではなく、多くの専門家ではない。最初の変換は行列形式へのデータ・セット内で使用して何のNAが存在しないことを確認するには:

x <- data.matrix(dataframe) 

を、次にどの()関数を使用し、この場合には非常に便利いる:

which(is.na(x)==T) 

私は、これはあなたを助けることを願っています答えを見つける。値は行ごとに順序付けられます。

これによりクエリが解決するかどうかを教えてください。

+0

ありがとう、Nandi。私はあなたのコードを使ってNAsを探し、 "整数(0)"を得ました。 – Yadi

+0

同じパラメータで小さなデータセットを使用して問題を再現しようとしましたが、何の問題もなく機能しました。私はあなたもこれを試してみたいと思うかもしれないと思う。したがって、 "mlbench"をインストールすると、データセット電離層が1つあります。電離層データを使用し、上記のコードを実行します。それが動作します。もしあなたがそれに問題があれば教えてください。 – BoyInDaBox89

+0

ありがとう、Nandi。私はまだこの問題の原因を理解することはできません。しかし、 'tuneGrid = grid_svmpoly'を' tuneLength = 9'に置き換えてもエラーは発生しませんでした。精度は85%に上昇しました。 – Yadi

関連する問題