code: def test_explanation_automl_regression():
      train = h2o.upload_file(
          pyunit_utils.locate("smalldata/titanic/titanic_expanded.csv")
      )
      train["name"] = train["name"].asfactor()
      y = "fare"
  
      # get at most one column from each type
      cols_to_test = []
      for col, typ in train.types.items():
          for ctt in cols_to_test:
              if typ == train.types[ctt] or col == y:
                  break
          else:
              cols_to_test.append(col)
  
      aml = H2OAutoML(seed=1234, max_models=5)
      aml.train(y=y, training_frame=train)
  
      # test variable importance heatmap plot
      assert isinstance(
          aml.varimp_heatmap().figure(), matplotlib.pyplot.Figure
      )
      matplotlib.pyplot.close()
  
      assert (
          len(aml.varimp(use_pandas=False)) == 3
      )  # numpy.ndarray, colnames, rownames
      assert isinstance(aml.varimp(use_pandas=True), pandas.DataFrame)
  
      # test model correlation heatmap plot
      assert isinstance(
          aml.model_correlation_heatmap(train).figure(),
          matplotlib.pyplot.Figure,
      )
      matplotlib.pyplot.close()
  
      assert (
          len(aml.model_correlation(train, use_pandas=False)) == 2
      )  # numpy.ndarray, colnames and rownames both in the same order => represented by just one vector
      assert isinstance(
          aml.model_correlation(train, use_pandas=True),
          pandas.DataFrame,
      )
  
      # test partial dependences
      for col in cols_to_test:
          try:
              assert isinstance(
                  aml.pd_multi_plot(train, col).figure(),
                  matplotlib.pyplot.Figure,
              )
          except ValueError:
              assert (
                  col == "name"
              ), "'name' is a string column which is not supported."
      matplotlib.pyplot.close("all")
  
      # test explain
      assert isinstance(
          aml.explain(train, render=False), H2OExplanation
      )
  
      # test explain row
      assert isinstance(
          aml.explain_row(train, 1, render=False), H2OExplanation
      )
  
      # test shortening model ids work correctly
      from h2o.explanation._explain import _shorten_model_ids
  
      model_ids = aml.leaderboard.as_data_frame()["model_id"]
      shortened_model_ids = _shorten_model_ids(model_ids)
      assert len(set(model_ids)) == len(set(shortened_model_ids))
      for i in range(len(model_ids)):
          assert len(model_ids[i]) > len(shortened_model_ids[i])
  
      # Leaderboard slices work
      # test explain
      assert isinstance(
          h2o.explain(
              aml.leaderboard[
                  ~aml.leaderboard["model_id"].grep(
                      "^Stacked", output_logical=True
                  ),
                  :,
              ],
              train,
              render=False,
          ),
          H2OExplanation,
      )
  
      # test explain row
      assert isinstance(
          h2o.explain_row(
              aml.leaderboard[
                  ~aml.leaderboard["model_id"].grep(
                      "^Stacked", output_logical=True
                  ),
                  :,
              ],
              train,
              1,
              render=False,
          ),
          H2OExplanation,
      )
  
imports: import os
  import sys
  import pandas
  from h2o.grid import H2OGridSearch
  import matplotlib
  import h2o
  import pandas
  import matplotlib.pyplot
  from tests import pyunit_utils, test_plot_result_saving
  from h2o.automl import H2OAutoML
  from h2o.estimators import *
  from h2o.explanation._explain import H2OExplanation
label_desc: Use image node_id 4 for calling a global function with example usage: test_explanation_automl_regression() without return types