Как напечатать переменную важность всех моделей в таблице лидеров h2o.automl в r - PullRequest
0 голосов
/ 24 февраля 2019

Я использую automl() функцию пакета H2o в R для регрессии.

Учтите, что я использую имя "aml" для построения моделей.

aml <- h2o.automl(x=x, y=y, training_frame = train_set,
              max_models = 20, seed = 1,
              keep_cross_validation_predictions = TRUE)

Таблица лидеровиз automl() показывает самые популярные модели.Я могу напечатать значение предикторов с помощью функции h2o.varimp () и построить график для той же функции, используя функцию h2o.varimp_plot() только для модели лидера (лучшая модель, заданная функцией automl).

h2o.varimp(aml@leader)
h2o.varimp_plot(aml@leader)

Есть ли способ напечатать значение переменных предикторов для всех моделей в таблице лидеров и построить график, используя две вышеупомянутые функции?

1 Ответ

0 голосов
/ 25 февраля 2019

Сложенные ансамбли (обычно модель лидера) еще не поддерживают переменную важность (JIRA здесь ).Однако значение переменной для остальных моделей можно получить в цикле по идентификаторам моделей в таблице лидеров.См. Код R ниже.

library(h2o)
h2o.init()

# Import a sample binary outcome train/test set into H2O
train <- h2o.importFile("https://s3.amazonaws.com/erin-data/higgs/higgs_train_10k.csv")

# Identify predictors and response
y <- "response"
x <- setdiff(names(train), y)

# For binary classification, response should be a factor
train[,y] <- as.factor(train[,y])

# Run AutoML for 10 models
aml <- h2o.automl(x = x, y = y,
                  training_frame = train,
                  max_models = 10,
                  seed = 1)

# View the AutoML Leaderboard
lb <- aml@leaderboard
print(lb, n = nrow(lb))

# Get model ids for all models in the AutoML Leaderboard
model_ids <- as.data.frame(lb$model_id)[,1]

# View variable importance for all the models (besides Stacked Ensemble)
for (model_id in model_ids) {
  print(model_id)
  m <- h2o.getModel(model_id)
  h2o.varimp(m)
  h2o.varimp_plot(m)
}
...