2016-09-25 10 views
0

因子変数を持つが数値を持つモデルを構築しています。私は数値に変換しました。私はSVMラジアルカーネルを使ってモデルを構築しようとしたとき、わからない奇妙なメッセージを受け取りました。以下は私がしたことです。私はキャレット列車機能でSVMを使用して私のデータを訓練します

Subset of data 
class ac_000  ad_000 ag_007 
neg  2130706438 280  25896 
neg  228   100  292936 
pos  42328  856  51190 
neg  24   24  0 
neg  370   346  0 
pos  1534  1388 794698 

factorconvert <- function(f){as.numeric(levels(f))[f]} 
DF[, 2:4] <- lapply(DF[, 2:4], factorconvert) 

SVM 
ctrl<-trainControl(method="repeatedcv"), 
repeats=5, 
summaryFunction=twoClassSummary, 
classProbs=TRUE) 

Train and Tune the SVM 
svm.tune <- train(x=trainX, y= trainData$Class,method = "svmRadial", 
tuneLength = 9, preProc =c("center","scale"),metric="ROC",trControl=ctrl) 

Error in if (any(co)) { : missing value where TRUE/FALSE needed In 
addition: Warning message: In FUN(newX[, i], ...) : NAs introduced by 
coercion. 

any(is.any(DF)). 

na.omit()を使用してデータ内のすべてのNAsも削除しました。 データを再確認しました。欠損値はありませんでした。私は助けが必要です。

+0

問題を再現できるように、データのサブセットを少なくとも含めてください。それがなければ、あなたを助けることは非常に困難です。 [ヘルプセンター](http://stackoverflow.com/help/mcve)をご覧ください。ありがとう! – lrnzcig

+0

実際のデータのサイズはどのくらいですか? – abhiieor

+0

1. factorconvertの結果を確認します。正しく動作しないことがあります。あなたが提供したデータはありません。 2.元のデータの一部を出力します。このセットはテストするには小さすぎます。データを使用したくない場合は、GermanCreditデータ(キャレットパッケージに含まれています)またはその他のデータセットを使用してエラーを再現してみてください。 – phiver

答えて

0

これは、データセット内の文字列を数値形式に直接変換したい場合に発生する可能性があります。 "factorconvert()"を使用して変換後のデータを確認し、最初の列に任意のNA値が含まれているかどうかを確認することをお勧めします。 これで問題が解決するかどうかお知らせください。

関連する問題