2013-06-20 25 views
6

私はKaggle Titanicコンペで作業していますが、欠損値の帰属に関する質問があります。私はCaretパッケージを使用しようとしています。私のトレーニングセットは数字だけでなく要素も含んでいます。キャレットによる欠損値

キャレットで関数を使用して欠損値を補うことができますが、前処理を使用する前に、すべての要因をdummyVars関数のダミー変数に変換する必要があります。

dummies = dummyVars(survived ~ . -1, data = train, na.action = na.pass) 
xtrain = predict(dummies, train) 

しかし、要因を変換するdummyVarsを使用するプロセスでは、すべてのNASは、いくつかの未知のアルゴリズムによって予測され、行方不明age列すべてが1の私はna.action = na.passを指定しているにもかかわらずとなっています。ファクタをダミー変数に変換して、NAsに触れさせることなく、preProcess関数を使用して代用することができます。これどうやってするの?

ありがとうございます。ここ

dput:

structure(list(survived = structure(c(1L, 2L, 2L, 2L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("0", 
"1"), class = "factor"), pclass = structure(c(3L, 1L, 3L, 1L, 
3L, 3L, 1L, 3L, 3L, 2L, 3L, 1L, 3L, 3L, 3L, 2L, 3L, 2L, 3L, 3L 
), .Label = c("1", "2", "3"), class = "factor"), sex = structure(c(2L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 
2L, 1L, 1L), .Label = c("female", "male"), class = "factor"), 
    age = c(22, 38, 26, 35, 35, NA, 54, 2, 27, 14, 4, 58, 20, 
    39, 14, 55, 2, NA, 31, NA), sibsp = c(1, 1, 0, 1, 0, 0, 0, 
    3, 0, 1, 1, 0, 0, 1, 0, 0, 4, 0, 1, 0), parch = c(0, 0, 0, 
    0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 5, 0, 0, 1, 0, 0, 0), fare = c(7.25, 
    71.2833, 7.925, 53.1, 8.05, 8.4583, 51.8625, 21.075, 11.1333, 
    30.0708, 16.7, 26.55, 8.05, 31.275, 7.8542, 16, 29.125, 13, 
    18, 7.225), embarked = structure(c(4L, 2L, 4L, 4L, 4L, 3L, 
    4L, 4L, 4L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 2L), .Label = c("", 
    "C", "Q", "S"), class = "factor")), .Names = c("survived", 
"pclass", "sex", "age", "sibsp", "parch", "fare", "embarked"), row.names = c(NA, 
20L), class = "data.frame") 

答えて

4

この最初の部分はバグです。 NAの値は1ではありません(明らかに)。その間は、model.matrixを使用してダミー変数を生成できますが、すべてのデータに対してこれを一度に行う必要があります。また、trainを使用している場合は、数式メソッドを使用できます。全体的に、それはよりよいアプローチです。

今後数週間でこれを修正します。私はキャレットのバージョンをリリースしようとしていますが、これに加えてUseRも少し遅れます。

EDITは:新しいバージョンでは、バグに返信用

マックス

+1

感謝を修正し、次の週にリリースされる予定。 'model.matrix'は、その中にNAを持つ行を省略するので、どちらかといえばやりません。それを稼働させる方法があれば教えてください。ありがとう。 – mchangun

関連する問題