В R вы найдете много примеров, в которых вы получаете вывод, основанный на измерении / классе и т. Д. Вашего ввода для функции.
Для glmnet
, по умолчанию вы предоставляете диапазон лямбда-выражений:
лямбда (т.е. коэффициент усадки) является гиперпараметром для регуляризованной регрессионной модели (glmnet).
set.seed(1)
model <- glmnet(matrix(rnorm(3*100), 100, 3), purrr::rbernoulli(100))
preds <- predict(model, matrix(rnorm(3*100), 100, 3))
dim(preds)
#[1] 100 61
length(model$lambda)
[1] 61
Вам необходимо настроить его на основе требуемого показателя производительности, чтобы найти оптимальное / наилучшее значение для вашей модели.Как только у вас есть, вы можете использовать его, чтобы получить окончательные прогнозы.Что-то вроде:
model <- glmnet(matrix(rnorm(3*100), 100, 3), purrr::rbernoulli(100),
lambda = 0.19) # assuming its an optimal value
preds <- predict(model, matrix(rnorm(3*100), 100, 3))
dim(preds)
# [1] 100 1
, в то время как rpart
по умолчанию не требует гиперпараметра, так как он соответствует целому дереву без сокращения, что эквивалентно предоставлению единственного значения гиперпараметра, которое соответствует подгонке данных долистовые узлы.Поэтому вы получаете единый набор прогнозов.Недостатком использования этого текущего классификатора является то, что он не обобщен.
Поэтому, если вы переходите с Python на R для прикладных задач машинного обучения, лучше всего использовать пакет caret это однородная структура, объединяющая несколько статистических моделей в рамках единого подхода к моделированию.