Tôi đang làm việc trong cuộc thi Titanic Kaggle và tôi có một câu hỏi liên quan đến việc gán giá trị bị thiếu. Tôi đang cố gắng sử dụng gói Caret và tập huấn luyện của tôi bao gồm các yếu tố cũng như các con số.Giá trị thiếu giá trị bị lỗi với dấu mũ
Tôi muốn sử dụng hàm preProcess
trong dấu mũ để xác định giá trị bị thiếu, nhưng trước khi sử dụng tiền xử lý, tôi cần chuyển đổi tất cả các yếu tố của mình thành biến giả với hàm dummyVars
.
dummies = dummyVars(survived ~ . -1, data = train, na.action = na.pass)
xtrain = predict(dummies, train)
Tuy nhiên, trong quá trình sử dụng dummyVars
để chuyển đổi các yếu tố, tất cả các NAS được dự đoán bởi một số thuật toán chưa biết và thiếu age
cột tất cả trở thành 1 nhân mặc dù tôi đã xác định na.action = na.pass
. Tôi muốn chuyển đổi các yếu tố của tôi thành các biến giả mà không có các NA được chạm vào để tôi có thể sử dụng sau đó sử dụng hàm preProcess
để gây nhiễu chúng. Tôi có thể làm cái này như thế nào?
Cảm ơn bạn.
dput đây:
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")
Cảm ơn bạn đã trả lời. 'model.matrix' dường như không thực hiện thủ thuật vì nó bỏ qua bất kỳ hàng nào có NA trong đó. Xin vui lòng cho tôi biết nếu có một cách để làm cho nó hoạt động. Cảm ơn. – mchangun