Я сделал функцию проверки перекрестка, которая делает это для нескольких моделей.Как оптимизировать код точности для нескольких прогнозирующих моделей в R?
У меня есть функция с моделями, которые я хочу, чтобы вычислить, и в перекрестных проверках я называю его так, я получаю фрейм данных под названием results
с классом или наклейками, против каждого прогноза для каждой итерации:
head(results)
iteration class ksvm rf
65 1 4 4 4
306 1 2 2 2
300 1 4 4 4
385 1 2 2 2
431 1 2 2 2
205 1 4 4 4
(Индекс может быть проигнорирован, поскольку он исходит из отбираемых данных).
Поскольку у меня есть 5-кратное подтверждение перекрестка, у меня есть 5 итераций, предсказывающих в этом случае ksvm
и rf
. (Они хранятся в переменной с именем algorithms
После этого я вычисления точности так:.
results %>%
group_by(iteration) %>%
summarise(acc_ksvm = sum(ksvm == class)/n() , acc_rf = sum(rf == class)/n())
Выход:
iteration acc_ksvm acc_rf
(int) (dbl) (dbl)
1 1 0.9603175 0.9603175
2 2 0.9760000 0.9680000
3 3 0.9603175 0.9523810
4 4 0.9840000 0.9920000
5 5 0.9444444 0.9523810
Вопрос: Есть ли способ оптимизировать его? Я в конечном итоге увеличу модели, я просто хочу передать переменную algorithms
в функцию и вычислить точность для всех моделей без manuall y пишут summarise(acc_ksvm = sum(ksvm == class)/n() , acc_rf = sum(rf == class)/n())
для каждой модели.
Можно ли это сделать с применением? Или мне нужно изменить способ, которым мой df
построен, чтобы также группировать по модели?
Спасибо!
Что вы хотите оптимизировать? Скорость? До сих пор это довольно элегантное решение. Если все, что вы хотите сделать, это добавить модели в вектор «алгоритмы», я думаю, что код 'dplyr', который вы указали выше, очень хорошо, если ваши данные не * огромны *, и вы не тестируете множество параметров для многие модели. – blacksite
Вы правы, может, мне следовало написать * Automate * вместо * Optimize *. –