Вы не обучаетесь ансамблю ; Вы просто тренируете список из нескольких моделей, не комбинируя их никоим образом, что определенно не является ансамблем.
Учитывая это, ошибка, которую вы получаете, не является неожиданной, поскольку confusionMatrix
ожидает одно предсказание (что было бы так, если бы у вас действительно был ансамбль), а не несколько.
Сохранение вашего списка для простоты только для ваших первых 4 моделей и незначительное изменение вашего определения fits_predicts
, чтобы оно давало фрейм данных, т.е.
models <- c("glm", "lda", "naive_bayes", "svmLinear")
fits_predicts <- as.data.frame( sapply(fits, function(fits){ predict(fits,mnist_27$test)
}))
# rest of your code as-is
вот как вы можете получить матрицы путаницы для каждой из ваших моделей :
cm <- lapply(fits_predicts, function(fits_predicts){confusionMatrix(fits_predicts,reference=(mnist_27$test$y))
})
, что дает
> cm
$glm
Confusion Matrix and Statistics
Reference
Prediction 2 7
2 82 26
7 24 68
Accuracy : 0.75
95% CI : (0.684, 0.8084)
No Information Rate : 0.53
P-Value [Acc > NIR] : 1.266e-10
Kappa : 0.4976
Mcnemar's Test P-Value : 0.8875
Sensitivity : 0.7736
Specificity : 0.7234
Pos Pred Value : 0.7593
Neg Pred Value : 0.7391
Prevalence : 0.5300
Detection Rate : 0.4100
Detection Prevalence : 0.5400
Balanced Accuracy : 0.7485
'Positive' Class : 2
$lda
Confusion Matrix and Statistics
Reference
Prediction 2 7
2 82 26
7 24 68
Accuracy : 0.75
95% CI : (0.684, 0.8084)
No Information Rate : 0.53
P-Value [Acc > NIR] : 1.266e-10
Kappa : 0.4976
Mcnemar's Test P-Value : 0.8875
Sensitivity : 0.7736
Specificity : 0.7234
Pos Pred Value : 0.7593
Neg Pred Value : 0.7391
Prevalence : 0.5300
Detection Rate : 0.4100
Detection Prevalence : 0.5400
Balanced Accuracy : 0.7485
'Positive' Class : 2
$naive_bayes
Confusion Matrix and Statistics
Reference
Prediction 2 7
2 88 23
7 18 71
Accuracy : 0.795
95% CI : (0.7323, 0.8487)
No Information Rate : 0.53
P-Value [Acc > NIR] : 5.821e-15
Kappa : 0.5873
Mcnemar's Test P-Value : 0.5322
Sensitivity : 0.8302
Specificity : 0.7553
Pos Pred Value : 0.7928
Neg Pred Value : 0.7978
Prevalence : 0.5300
Detection Rate : 0.4400
Detection Prevalence : 0.5550
Balanced Accuracy : 0.7928
'Positive' Class : 2
$svmLinear
Confusion Matrix and Statistics
Reference
Prediction 2 7
2 81 24
7 25 70
Accuracy : 0.755
95% CI : (0.6894, 0.8129)
No Information Rate : 0.53
P-Value [Acc > NIR] : 4.656e-11
Kappa : 0.5085
Mcnemar's Test P-Value : 1
Sensitivity : 0.7642
Specificity : 0.7447
Pos Pred Value : 0.7714
Neg Pred Value : 0.7368
Prevalence : 0.5300
Detection Rate : 0.4050
Detection Prevalence : 0.5250
Balanced Accuracy : 0.7544
'Positive' Class : 2
И вы также можете получить доступ к отдельным матрицам путаницы для каждой модели, например, для lda
:
> cm['lda']
$lda
Confusion Matrix and Statistics
Reference
Prediction 2 7
2 82 26
7 24 68
Accuracy : 0.75
95% CI : (0.684, 0.8084)
No Information Rate : 0.53
P-Value [Acc > NIR] : 1.266e-10
Kappa : 0.4976
Mcnemar's Test P-Value : 0.8875
Sensitivity : 0.7736
Specificity : 0.7234
Pos Pred Value : 0.7593
Neg Pred Value : 0.7391
Prevalence : 0.5300
Detection Rate : 0.4100
Detection Prevalence : 0.5400
Balanced Accuracy : 0.7485
'Positive' Class : 2