【发布时间】:2018-09-19 00:14:25
【问题描述】:
关于 R 中预测分析的一个非常简短的问题。
为什么使用MASS 包线性判别分析获得的交叉验证结果与使用caret 获得的结果如此不同?
#simulate data
set.seed(4321)
training_data = as.data.frame(matrix(rnorm(10000, sd = 12), 100, 10))
training_data$V1 = as.factor(sample(c(1,0), size = 100, replace = T))
names(training_data)[1] = 'outcome'
#MASS LDA
fit.lda_cv_MASS = lda(outcome~.
, training_data
, CV=T)
pred = fit.lda_cv_MASS$class
caret::confusionMatrix(pred, training_data$outcome)
这给出了 ~0.53 的准确度
#caret interface LDA
lg.fit_cv_CARET = train(outcome ~ .
, data=training_data
, method="lda"
, trControl = trainControl(method = "LOOCV")
)
pred = predict(lg.fit_cv_CARET, training_data)
caret::confusionMatrix(pred, training_data$outcome)
现在这导致了 ~0.63 的准确度。
我会假设它们是相同的,因为两者都使用留一法交叉验证。
它们为什么不同?
【问题讨论】:
标签: r machine-learning cross-validation r-caret