我正在R中使用automl()
软件包的H2o
函数进行回归。
考虑我正在使用名称“ 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)
是否有任何方法可以在排行榜中显示所有模型的预测变量的重要性,并使用上述两个函数绘制图形?
答案 0 :(得分:1)
堆叠的乐团(通常为领导者模型)尚不支持变量重要性(JIRA here)。但是,可以在排行榜中的模型ID上循环检索其余模型的变量重要性。请参见下面的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)
}