Импутация тестового набора на основе тренировочного набора - PullRequest
0 голосов
/ 03 февраля 2019

Пример данных

#creates a data frame with two features and 100 observations
train = data.frame(salary = sample(2000:3000, 100, replace = TRUE),
                 revenue = sample(c("A", "B"), 100, replace = TRUE))

#five NAs on random positions for the salary feature
train[sample(1:nrow(train), 5), "salary"] <- NA

test = data.frame(salary = sample(2000:3000, 100, replace = TRUE),
                   revenue = sample(c("A", "B"), 100, replace = TRUE))

test[sample(1:nrow(test), 5), "salary"] <- NA

Преобразование данных

transformation <- preProcess(train[, ], method = c("medianImpute", 
"scale", "center"))


transformed_train <- predict(transformation, newdata = train[, ])

transformed_test <- predict(transformation, newdata = test[, ])

Перекрестная проверка

trControl = trainControl(method = "repeatedcv", 
                         number = 5, 
                         repeats = 5, 
                         classProbs = TRUE,
                         savePredictions = TRUE, 
                         verboseIter = TRUE)

Моделирование

model_knn <- caret::train(revenue ~ .,
                          data = transformed_train,
                          method = "knn",
                          preProcess = c("scale", "center", "knnImpute"),
                          trControl = trControl)

confusionMatrix(predict(model_knn, transformed_test), transformed_test$revenue)

Cotext

Выше я привел пример того, как данные могут быть вменены с использованием функции preProcess изпакет карета.PreProcess также можно использовать на этапе моделирования.

Вопрос

Вместо использования функции препроцессирования Caret, я хотел бы знать, как реализовать пакет импутации MICE?Идея состоит в том, чтобы использовать результат вмененного тренировочного набора в тестовом наборе.

Полагаю, единственное, что нужно обновить, это часть Преобразование данных .

...