2016-04-19 9 views
0

私はSVMの分類で作業したいと思います。 SVMモデルを使用する前に、データセットの列ごとにフィーチャを正規化(または拡大縮小)することは可能ですか?SVM分類 - 正規化のR

あなたのデータはNaN値を持つか、0分散を持つ変数が含まれている場合は、最初の関数を使用する前に、元のデータセットを処理し、サブセットができます:あなたはsapplyscale機能を使用することができます

train <- read.csv("train.csv") 
test <- read.csv("test.csv") 

svm.fit=svm(as.factor(type)~ ., data=train, core="libsvm",kernel="linear",cross=10, probability=TRUE) 
+0

をsmallerdfするために、上記のオリジナルsapply関数を適用、あなたが提供することができますいくつかの例のデータを持っていますか?あなたが持っているデータの種類がわからない(離散的、連続的など) – Whitebeard

答えて

1

上記。

# get a vector of variables to drop 
dropVars <- sapply(train, function(i) { 
       if((is.numeric(i) & !any(is.nan(i)) & sd(i) > 0) | is.factor(i) | is.character(i)) TRUE 
       else FALSE 
       } 
# subset test dropping columns that don't fit the criteria 
smallerdf <- test[, dropVars] 

その後

+0

これは私にこのエラーを与えています。 'model.frame.default(formula、data)のエラー: 可変長が異なります( 'lice_id'に見つかりました)。' na.action = na.omit'で試しましたが、どちらも役に立たないようです。 – Mahsolid

+1

@Mahsolid何が問題なのか分かりませんが、変数の1つに欠損値があるようです。このエラーメッセージを検索エンジンで実行し、使用している機能と一緒に探して、より良い答えを見つけることができます。変数を見て欠損値が見つかったかどうかを確認することもできます。これらのどちらも答えが出ない場合は、SOに新しい質問を投稿する価値があるかもしれないので、この機能を使用する人はより多くのことを見ることができます。 – lmo