Я новичок в R и машинном обучении, поэтому, пожалуйста, извините за основной вопрос ...
Я экспериментирую с набором данных "spam" в библиотеке kernlab.И используя функции из библиотеки карет.
Цель:
Предсказать «тип» для 58 оставшихся переменных в «спаме»
Я пробовал два разных способа предварительной обработки:
PRE-ОБРАБОТКИ ДАННЫХ ДО train()
# preprocess all 57 predictors, leave out response variable #58
preproc = preProcess(trainset[-58], method = "BoxCox")
preprocTrain = predict(preproc, trainset[,-58])
preprocTrain$type = trainset$type
preprocTest = predict(preproc, testset[,-58])
preprocTest$type = testset$type
set.seed(123)
fit2 = train(type~., data=preprocTrain, method = "glm")
predict2 = predict(fit2, newdata = preprocTest)
confmat2 = confusionMatrix(predict2, preprocTest$type)
fit2$results
confmat2$overall
ПРИМЕЧАНИЕ:
fit2 Accuracy = 0.93 and confmat2 Accuracy = 0.92
И затем, ИСПОЛЬЗУЯ preProcess
WITHIN train()
set.seed(123)
fit3 = train(type~., data=trainset, method="glm", preProcess = "BoxCox")
Predict using pre-processed test set from before
predict3 = predict(fit3, newdata = preprocTest)
confmat3 = confusionMatrix(predict3, preprocTest$type)
fit3$results
confmat3$overall
Now, fit3 Accuracy = 0.93
НО confmat3 Accuracy = 0.75
Пожалуйста, помогите мне понять, почему это резкое падение?Разве точность confmat3 не должна совпадать с точностью confmat2?В чем разница?Также во втором прогнозе я получаю следующее предупреждение:
Warning messages:
1: In predict.BoxCoxTrans(object$bc[[i]], newdata[, i]) :
newdata should have values 0
2: In predict.BoxCoxTrans(object$bc[[i]], newdata[, i]) :
newdata should have values 0
Спасибо!