Pracuję nad konkursem Kaggle Titanic i mam pytanie dotyczące przypisywania brakujących wartości. Próbuję użyć pakietu Caret, a mój zestaw treningowy składa się zarówno z czynników, jak i liczb.Impute Missing Values with Caret
Chcę użyć funkcji preProcess
w Caret, aby przypisać brakujące wartości, ale przed użyciem preProcess, muszę przekonwertować wszystkie moje czynniki na fałszywe zmienne za pomocą funkcji dummyVars
.
dummies = dummyVars(survived ~ . -1, data = train, na.action = na.pass)
xtrain = predict(dummies, train)
Jednak w trakcie korzystania dummyVars
przekonwertować czynniki, wszystkie NAS są przewidywane przez jakiegoś nieznanego algorytmu i brakujące age
kolumny wszystkich stać 1-choć określono na.action = na.pass
. Chcę zamienić moje czynniki na fałszywe zmienne BEZ dotknięcia NA, więc mogę użyć funkcji preProcess
, aby je przypisać. Jak mogę to zrobić?
Dziękuję.
dput tutaj:
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")
Dzięki za odpowiedź. 'model.matrix' również nie działa, ponieważ pomija wszystkie wiersze z NA. Daj mi znać, jeśli istnieje sposób, aby to zadziałało. Dzięki. – mchangun