2017-02-06 10 views
0

私はモデルを訓練するためにキャレットを使用します(バイナリ分類タスク)。 train()が精度メトリックではなく、Specificity(TN /(TN + FP))メトリックを訓練していることを確認するにはどうすればよいですか?特異性を訓練する

control <- trainControl(method="cv", number=10) 
metric <- "Accuracy" 

set.seed(7) 
fit.svm <- train(target_var ~., data=dataset, method="svmRadial", metric=metric, trControl=control) 

それは変更することが動作しません:

metric = "Specificity" 

誰でも特異性を最適化するためにモデルを訓練する方法を知っていますか?精度にどのような作品

KR、 Arnand

答えて

1

classProbs = TRUEとともにtrainControltwoClassSummaryからsummaryFunction引数をspecifiyng試してみてください、とmetric = "Spec"train()内側:私はあなたの関数を使用する場合

control <- trainControl(method="cv", 
         number=10, 
         summaryFunction = twoClassSummary, 
         classProbs = TRUE) 

fit.svm <- train(target_var ~., 
       data=dataset, 
       method="svmRadial", 
       metric="Spec", 
       trControl=control) 
+0

感謝、私が取得: 「エラーで'[.data.frame'(data、、lvls [1]):未定義の列を選択しました ' ' trControl 'を' trainControl 'に置き換えても機能しますが、警告メッセージ: train.default(x、y、weights = w、...): メトリック "Spec"が結果セットにありませんでした。代わりに正確度が使用されます。 – Arnand

+0

編集を参照してください。おそらく、 'trainControl()'の中に 'classProbs = TRUE'が必要です。また、データセットはdata.frameである必要があります。 – mtoto

+0

classProbs = TRUEで動作します。ありがとうございます! – Arnand

関連する問題