Ошибка пропущенных значений в функции train() Caret для деревьев
Я новичок в использовании R и пытаюсь построить дерево решений. Я уже использовал пакет party
за ctree
а также rpart
для rpart.
Но, поскольку мне нужно было сделать перекрестную проверку для моей модели, я начал использовать caret
пакет, так как я могу сделать это с помощью функции `train() и метода, который я хочу использовать.
library(caret)
cvCtrl <- trainControl(method = "repeatedcv", repeats = 2,
classProbs = TRUE)
ctree.installed<- train(TARGET ~ OPENING_BALANCE+ MONTHS_SINCE_EXPEDITION+
RS_DESC+SAP_STATUS+ ACTIVATION_STATUS+ ROTUL_STATUS+
SIM_STATUS+ RATE_PLAN_SEGMENT_NORM,
data=trainSet,
method = "ctree",
trControl = cvCtrl)
Тем не менее, мои переменные OPENING_BALANCE
а также MONTHS_SINCE_EXPEDITION
есть некоторые пропущенные значения, и функция не работает из-за этого. Я не понимаю, почему это происходит, так как я пытаюсь построить дерево. Эта проблема не возникает, когда я использую другие пакеты.
Это ошибка:
Error in na.fail.default(list(TARGET = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, :
missing values in object
Я не хотел использовать na.action=pass
так как я действительно не хочу отбрасывать эти наблюдения.
Я делаю что-то неправильно? Почему это происходит? У вас есть предложения по этому поводу?
1 ответ
Я начинаю рассматривать набор данных PimaIndiansDiabetes2
из mlbench
пакет, который имеет некоторые пропущенные значения.
data(PimaIndiansDiabetes2, package = "mlbench")
head(PimaIndiansDiabetes2)
pregnant glucose pressure triceps insulin mass pedigree age diabetes
1 6 148 72 35 NA 33.6 0.627 50 pos
2 1 85 66 29 NA 26.6 0.351 31 neg
3 8 183 64 NA NA 23.3 0.672 32 pos
4 1 89 66 23 94 28.1 0.167 21 neg
5 0 137 40 35 168 43.1 2.288 33 pos
6 5 116 74 NA NA 25.6 0.201 30 neg
В train
Я поставил na.action
в na.pass
(что приводит к возвращению набора данных без изменений), а затем установите maxsurrogate
параметр в ctree
:
library(caret)
cvCtrl <- trainControl(method="repeatedcv", repeats = 2, classProbs = TRUE)
set.seed(1234)
ctree1 <- train(diabetes ~ ., data=PimaIndiansDiabetes2,
method = "ctree",
na.action = na.pass,
trControl = cvCtrl,
controls=ctree_control(maxsurrogate=2))
Результаты:
print(ctree1)
Conditional Inference Tree
392 samples
8 predictor
2 classes: 'neg', 'pos'
No pre-processing
Resampling: Cross-Validated (10 fold, repeated 2 times)
Summary of sample sizes: 691, 692, 691, 691, 691, 691, ...
Resampling results across tuning parameters:
mincriterion Accuracy Kappa
0.01 0.7349111 0.4044195
0.50 0.7485731 0.4412557
0.99 0.7323906 0.3921662
Accuracy was used to select the optimal model using the largest value.
The final value used for the model was mincriterion = 0.5.