{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "KXYTwHCZp2d2"
      },
      "outputs": [],
      "source": [
        "import pandas as pd\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "df = pd.read_csv('/content/california_housing_train.csv')"
      ],
      "metadata": {
        "id": "DmTpVlHDqB09"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "df.head()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 226
        },
        "id": "2kH70XMWqByB",
        "outputId": "a4bcb79e-905a-4e12-baad-0c50adc10371"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "   longitude  latitude  housing_median_age  total_rooms  total_bedrooms  \\\n",
              "0    -114.31     34.19                15.0       5612.0          1283.0   \n",
              "1    -114.47     34.40                19.0       7650.0          1901.0   \n",
              "2    -114.56     33.69                17.0        720.0           174.0   \n",
              "3    -114.57     33.64                14.0       1501.0           337.0   \n",
              "4    -114.57     33.57                20.0       1454.0           326.0   \n",
              "\n",
              "   population  households  median_income  median_house_value  \n",
              "0      1015.0       472.0         1.4936             66900.0  \n",
              "1      1129.0       463.0         1.8200             80100.0  \n",
              "2       333.0       117.0         1.6509             85700.0  \n",
              "3       515.0       226.0         3.1917             73400.0  \n",
              "4       624.0       262.0         1.9250             65500.0  "
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-9fdfc0cf-5a51-4ece-9515-a46cb0733c6f\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>longitude</th>\n",
              "      <th>latitude</th>\n",
              "      <th>housing_median_age</th>\n",
              "      <th>total_rooms</th>\n",
              "      <th>total_bedrooms</th>\n",
              "      <th>population</th>\n",
              "      <th>households</th>\n",
              "      <th>median_income</th>\n",
              "      <th>median_house_value</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>-114.31</td>\n",
              "      <td>34.19</td>\n",
              "      <td>15.0</td>\n",
              "      <td>5612.0</td>\n",
              "      <td>1283.0</td>\n",
              "      <td>1015.0</td>\n",
              "      <td>472.0</td>\n",
              "      <td>1.4936</td>\n",
              "      <td>66900.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>-114.47</td>\n",
              "      <td>34.40</td>\n",
              "      <td>19.0</td>\n",
              "      <td>7650.0</td>\n",
              "      <td>1901.0</td>\n",
              "      <td>1129.0</td>\n",
              "      <td>463.0</td>\n",
              "      <td>1.8200</td>\n",
              "      <td>80100.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>-114.56</td>\n",
              "      <td>33.69</td>\n",
              "      <td>17.0</td>\n",
              "      <td>720.0</td>\n",
              "      <td>174.0</td>\n",
              "      <td>333.0</td>\n",
              "      <td>117.0</td>\n",
              "      <td>1.6509</td>\n",
              "      <td>85700.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>-114.57</td>\n",
              "      <td>33.64</td>\n",
              "      <td>14.0</td>\n",
              "      <td>1501.0</td>\n",
              "      <td>337.0</td>\n",
              "      <td>515.0</td>\n",
              "      <td>226.0</td>\n",
              "      <td>3.1917</td>\n",
              "      <td>73400.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>-114.57</td>\n",
              "      <td>33.57</td>\n",
              "      <td>20.0</td>\n",
              "      <td>1454.0</td>\n",
              "      <td>326.0</td>\n",
              "      <td>624.0</td>\n",
              "      <td>262.0</td>\n",
              "      <td>1.9250</td>\n",
              "      <td>65500.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9fdfc0cf-5a51-4ece-9515-a46cb0733c6f')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-9fdfc0cf-5a51-4ece-9515-a46cb0733c6f button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-9fdfc0cf-5a51-4ece-9515-a46cb0733c6f');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-90bc2abf-5b9e-4473-9195-bca33cd192e5\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-90bc2abf-5b9e-4473-9195-bca33cd192e5')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-90bc2abf-5b9e-4473-9195-bca33cd192e5 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "variable_name": "df",
              "summary": "{\n  \"name\": \"df\",\n  \"rows\": 17000,\n  \"fields\": [\n    {\n      \"column\": \"longitude\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 2.005166408426173,\n        \"min\": -124.35,\n        \"max\": -114.31,\n        \"num_unique_values\": 827,\n        \"samples\": [\n          -117.56,\n          -123.32,\n          -118.26\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"latitude\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 2.1373397946570734,\n        \"min\": 32.54,\n        \"max\": 41.95,\n        \"num_unique_values\": 840,\n        \"samples\": [\n          38.44,\n          40.79,\n          32.69\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"housing_median_age\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 12.586936981660335,\n        \"min\": 1.0,\n        \"max\": 52.0,\n        \"num_unique_values\": 52,\n        \"samples\": [\n          23.0,\n          52.0,\n          47.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"total_rooms\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 2179.947071452768,\n        \"min\": 2.0,\n        \"max\": 37937.0,\n        \"num_unique_values\": 5533,\n        \"samples\": [\n          3564.0,\n          6955.0,\n          5451.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"total_bedrooms\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 421.49945157986514,\n        \"min\": 1.0,\n        \"max\": 6445.0,\n        \"num_unique_values\": 1848,\n        \"samples\": [\n          729.0,\n          719.0,\n          2075.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"population\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1147.852959159525,\n        \"min\": 3.0,\n        \"max\": 35682.0,\n        \"num_unique_values\": 3683,\n        \"samples\": [\n          249.0,\n          1735.0,\n          235.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"households\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 384.52084085590013,\n        \"min\": 1.0,\n        \"max\": 6082.0,\n        \"num_unique_values\": 1740,\n        \"samples\": [\n          390.0,\n          1089.0,\n          1351.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"median_income\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1.908156518379093,\n        \"min\": 0.4999,\n        \"max\": 15.0001,\n        \"num_unique_values\": 11175,\n        \"samples\": [\n          7.2655,\n          5.6293,\n          4.2262\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"median_house_value\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 115983.76438720913,\n        \"min\": 14999.0,\n        \"max\": 500001.0,\n        \"num_unique_values\": 3694,\n        \"samples\": [\n          162300.0,\n          346800.0,\n          116700.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {},
          "execution_count": 32
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "df['total_bedrooms'].fillna(df['total_bedrooms'].mean(),inplace=True)\n",
        "df.isna().sum()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 508
        },
        "id": "52BeZIIoqBvV",
        "outputId": "a1ac7984-91ef-4f7c-c700-1caa4ad62a96"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/tmp/ipython-input-33-3685529444.py:1: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\n",
            "The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\n",
            "\n",
            "For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\n",
            "\n",
            "\n",
            "  df['total_bedrooms'].fillna(df['total_bedrooms'].mean(),inplace=True)\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "longitude             0\n",
              "latitude              0\n",
              "housing_median_age    0\n",
              "total_rooms           0\n",
              "total_bedrooms        0\n",
              "population            0\n",
              "households            0\n",
              "median_income         0\n",
              "median_house_value    0\n",
              "dtype: int64"
            ],
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>0</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>longitude</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>latitude</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>housing_median_age</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>total_rooms</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>total_bedrooms</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>population</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>households</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>median_income</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>median_house_value</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div><br><label><b>dtype:</b> int64</label>"
            ]
          },
          "metadata": {},
          "execution_count": 33
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "!pip install h2o"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "yML2CxNewGyC",
        "outputId": "e040810b-cd82-41a4-e2ae-23d10d91e812"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Requirement already satisfied: h2o in /usr/local/lib/python3.11/dist-packages (3.46.0.7)\n",
            "Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from h2o) (2.32.3)\n",
            "Requirement already satisfied: tabulate in /usr/local/lib/python3.11/dist-packages (from h2o) (0.9.0)\n",
            "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests->h2o) (3.4.2)\n",
            "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests->h2o) (3.10)\n",
            "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests->h2o) (2.4.0)\n",
            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests->h2o) (2025.6.15)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import h2o"
      ],
      "metadata": {
        "id": "LMX0k221qBsZ"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "h2o.init()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 406
        },
        "id": "QPW4MIR1qBpH",
        "outputId": "9d4e9ff4-8511-4be9-c795-a34f63ce765d"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Checking whether there is an H2O instance running at http://localhost:54321. connected.\n",
            "Warning: Your H2O cluster version is (3 months and 9 days) old.  There may be a newer version available.\n",
            "Please download and install the latest version from: https://h2o-release.s3.amazonaws.com/h2o/latest_stable.html\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "--------------------------  -----------------------------------------------------------------------------------------\n",
              "H2O_cluster_uptime:         32 mins 18 secs\n",
              "H2O_cluster_timezone:       Etc/UTC\n",
              "H2O_data_parsing_timezone:  UTC\n",
              "H2O_cluster_version:        3.46.0.7\n",
              "H2O_cluster_version_age:    3 months and 9 days\n",
              "H2O_cluster_name:           H2O_from_python_unknownUser_cc3bvk\n",
              "H2O_cluster_total_nodes:    1\n",
              "H2O_cluster_free_memory:    2.950 Gb\n",
              "H2O_cluster_total_cores:    2\n",
              "H2O_cluster_allowed_cores:  2\n",
              "H2O_cluster_status:         locked, healthy\n",
              "H2O_connection_url:         http://localhost:54321\n",
              "H2O_connection_proxy:       {\"http\": null, \"https\": null, \"colab_language_server\": \"/usr/colab/bin/language_service\"}\n",
              "H2O_internal_security:      False\n",
              "Python_version:             3.11.13 final\n",
              "--------------------------  -----------------------------------------------------------------------------------------"
            ],
            "text/html": [
              "\n",
              "<style>\n",
              "\n",
              "#h2o-table-4.h2o-container {\n",
              "  overflow-x: auto;\n",
              "}\n",
              "#h2o-table-4 .h2o-table {\n",
              "  /* width: 100%; */\n",
              "  margin-top: 1em;\n",
              "  margin-bottom: 1em;\n",
              "}\n",
              "#h2o-table-4 .h2o-table caption {\n",
              "  white-space: nowrap;\n",
              "  caption-side: top;\n",
              "  text-align: left;\n",
              "  /* margin-left: 1em; */\n",
              "  margin: 0;\n",
              "  font-size: larger;\n",
              "}\n",
              "#h2o-table-4 .h2o-table thead {\n",
              "  white-space: nowrap; \n",
              "  position: sticky;\n",
              "  top: 0;\n",
              "  box-shadow: 0 -1px inset;\n",
              "}\n",
              "#h2o-table-4 .h2o-table tbody {\n",
              "  overflow: auto;\n",
              "}\n",
              "#h2o-table-4 .h2o-table th,\n",
              "#h2o-table-4 .h2o-table td {\n",
              "  text-align: right;\n",
              "  /* border: 1px solid; */\n",
              "}\n",
              "#h2o-table-4 .h2o-table tr:nth-child(even) {\n",
              "  /* background: #F5F5F5 */\n",
              "}\n",
              "\n",
              "</style>      \n",
              "<div id=\"h2o-table-4\" class=\"h2o-container\">\n",
              "  <table class=\"h2o-table\">\n",
              "    <caption></caption>\n",
              "    <thead></thead>\n",
              "    <tbody><tr><td>H2O_cluster_uptime:</td>\n",
              "<td>32 mins 18 secs</td></tr>\n",
              "<tr><td>H2O_cluster_timezone:</td>\n",
              "<td>Etc/UTC</td></tr>\n",
              "<tr><td>H2O_data_parsing_timezone:</td>\n",
              "<td>UTC</td></tr>\n",
              "<tr><td>H2O_cluster_version:</td>\n",
              "<td>3.46.0.7</td></tr>\n",
              "<tr><td>H2O_cluster_version_age:</td>\n",
              "<td>3 months and 9 days</td></tr>\n",
              "<tr><td>H2O_cluster_name:</td>\n",
              "<td>H2O_from_python_unknownUser_cc3bvk</td></tr>\n",
              "<tr><td>H2O_cluster_total_nodes:</td>\n",
              "<td>1</td></tr>\n",
              "<tr><td>H2O_cluster_free_memory:</td>\n",
              "<td>2.950 Gb</td></tr>\n",
              "<tr><td>H2O_cluster_total_cores:</td>\n",
              "<td>2</td></tr>\n",
              "<tr><td>H2O_cluster_allowed_cores:</td>\n",
              "<td>2</td></tr>\n",
              "<tr><td>H2O_cluster_status:</td>\n",
              "<td>locked, healthy</td></tr>\n",
              "<tr><td>H2O_connection_url:</td>\n",
              "<td>http://localhost:54321</td></tr>\n",
              "<tr><td>H2O_connection_proxy:</td>\n",
              "<td>{\"http\": null, \"https\": null, \"colab_language_server\": \"/usr/colab/bin/language_service\"}</td></tr>\n",
              "<tr><td>H2O_internal_security:</td>\n",
              "<td>False</td></tr>\n",
              "<tr><td>Python_version:</td>\n",
              "<td>3.11.13 final</td></tr></tbody>\n",
              "  </table>\n",
              "</div>\n"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "train_df = h2o.H2OFrame(df)\n",
        "train_df.describe()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 709
        },
        "id": "gSWgdrOBy9sh",
        "outputId": "34867ad6-7a0c-480d-8420-cc693ed5bcc5"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "Rows:17000\n",
              "Cols:9\n"
            ],
            "text/html": [
              "<pre style='margin: 1em 0 1em 0;'>Rows:17000\n",
              "Cols:9\n",
              "</pre>"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "         longitude           latitude           housing_median_age    total_rooms         total_bedrooms     population         households          median_income       median_house_value\n",
              "-------  ------------------  -----------------  --------------------  ------------------  -----------------  -----------------  ------------------  ------------------  --------------------\n",
              "type     real                real               int                   int                 int                int                int                 real                int\n",
              "mins     -124.35             32.54              1.0                   2.0                 1.0                3.0                1.0                 0.4999              14999.0\n",
              "mean     -119.5621082352941  35.62522470588239  28.589352941176436    2643.6644117647143  539.4108235294095  1429.573941176477  501.2219411764718   3.8835781000000016  207300.9123529415\n",
              "maxs     -114.31             41.95              52.0                  37937.0             6445.0             35682.0            6082.0              15.0001             500001.0\n",
              "sigma    2.0051664084260357  2.137339794657087  12.586936981660406    2179.9470714527765  421.4994515798648  1147.852959159527  384.52084085590155  1.9081565183791034  115983.76438720895\n",
              "zeros    0                   0                  0                     0                   0                  0                  0                   0                   0\n",
              "missing  0                   0                  0                     0                   0                  0                  0                   0                   0\n",
              "0        -114.31             34.19              15.0                  5612.0              1283.0             1015.0             472.0               1.4936              66900.0\n",
              "1        -114.47             34.4               19.0                  7650.0              1901.0             1129.0             463.0               1.82                80100.0\n",
              "2        -114.56             33.69              17.0                  720.0               174.0              333.0              117.0               1.6509              85700.0\n",
              "3        -114.57             33.64              14.0                  1501.0              337.0              515.0              226.0               3.1917              73400.0\n",
              "4        -114.57             33.57              20.0                  1454.0              326.0              624.0              262.0               1.925               65500.0\n",
              "5        -114.58             33.63              29.0                  1387.0              236.0              671.0              239.0               3.3438              74000.0\n",
              "6        -114.58             33.61              25.0                  2907.0              680.0              1841.0             633.0               2.6768              82400.0\n",
              "7        -114.59             34.83              41.0                  812.0               168.0              375.0              158.0               1.7083              48500.0\n",
              "8        -114.59             33.61              34.0                  4789.0              1175.0             3134.0             1056.0              2.1782              58400.0\n",
              "9        -114.6              34.83              46.0                  1497.0              309.0              787.0              271.0               2.1908              48100.0\n",
              "[17000 rows x 9 columns]\n"
            ],
            "text/html": [
              "<table class='dataframe'>\n",
              "<thead>\n",
              "<tr><th>       </th><th>longitude         </th><th>latitude         </th><th>housing_median_age  </th><th>total_rooms       </th><th>total_bedrooms   </th><th>population       </th><th>households        </th><th>median_income     </th><th>median_house_value  </th></tr>\n",
              "</thead>\n",
              "<tbody>\n",
              "<tr><td>type   </td><td>real              </td><td>real             </td><td>int                 </td><td>int               </td><td>int              </td><td>int              </td><td>int               </td><td>real              </td><td>int                 </td></tr>\n",
              "<tr><td>mins   </td><td>-124.35           </td><td>32.54            </td><td>1.0                 </td><td>2.0               </td><td>1.0              </td><td>3.0              </td><td>1.0               </td><td>0.4999            </td><td>14999.0             </td></tr>\n",
              "<tr><td>mean   </td><td>-119.5621082352941</td><td>35.62522470588239</td><td>28.589352941176436  </td><td>2643.6644117647143</td><td>539.4108235294095</td><td>1429.573941176477</td><td>501.2219411764718 </td><td>3.8835781000000016</td><td>207300.9123529415   </td></tr>\n",
              "<tr><td>maxs   </td><td>-114.31           </td><td>41.95            </td><td>52.0                </td><td>37937.0           </td><td>6445.0           </td><td>35682.0          </td><td>6082.0            </td><td>15.0001           </td><td>500001.0            </td></tr>\n",
              "<tr><td>sigma  </td><td>2.0051664084260357</td><td>2.137339794657087</td><td>12.586936981660406  </td><td>2179.9470714527765</td><td>421.4994515798648</td><td>1147.852959159527</td><td>384.52084085590155</td><td>1.9081565183791034</td><td>115983.76438720895  </td></tr>\n",
              "<tr><td>zeros  </td><td>0                 </td><td>0                </td><td>0                   </td><td>0                 </td><td>0                </td><td>0                </td><td>0                 </td><td>0                 </td><td>0                   </td></tr>\n",
              "<tr><td>missing</td><td>0                 </td><td>0                </td><td>0                   </td><td>0                 </td><td>0                </td><td>0                </td><td>0                 </td><td>0                 </td><td>0                   </td></tr>\n",
              "<tr><td>0      </td><td>-114.31           </td><td>34.19            </td><td>15.0                </td><td>5612.0            </td><td>1283.0           </td><td>1015.0           </td><td>472.0             </td><td>1.4936            </td><td>66900.0             </td></tr>\n",
              "<tr><td>1      </td><td>-114.47           </td><td>34.4             </td><td>19.0                </td><td>7650.0            </td><td>1901.0           </td><td>1129.0           </td><td>463.0             </td><td>1.82              </td><td>80100.0             </td></tr>\n",
              "<tr><td>2      </td><td>-114.56           </td><td>33.69            </td><td>17.0                </td><td>720.0             </td><td>174.0            </td><td>333.0            </td><td>117.0             </td><td>1.6509            </td><td>85700.0             </td></tr>\n",
              "<tr><td>3      </td><td>-114.57           </td><td>33.64            </td><td>14.0                </td><td>1501.0            </td><td>337.0            </td><td>515.0            </td><td>226.0             </td><td>3.1917            </td><td>73400.0             </td></tr>\n",
              "<tr><td>4      </td><td>-114.57           </td><td>33.57            </td><td>20.0                </td><td>1454.0            </td><td>326.0            </td><td>624.0            </td><td>262.0             </td><td>1.925             </td><td>65500.0             </td></tr>\n",
              "<tr><td>5      </td><td>-114.58           </td><td>33.63            </td><td>29.0                </td><td>1387.0            </td><td>236.0            </td><td>671.0            </td><td>239.0             </td><td>3.3438            </td><td>74000.0             </td></tr>\n",
              "<tr><td>6      </td><td>-114.58           </td><td>33.61            </td><td>25.0                </td><td>2907.0            </td><td>680.0            </td><td>1841.0           </td><td>633.0             </td><td>2.6768            </td><td>82400.0             </td></tr>\n",
              "<tr><td>7      </td><td>-114.59           </td><td>34.83            </td><td>41.0                </td><td>812.0             </td><td>168.0            </td><td>375.0            </td><td>158.0             </td><td>1.7083            </td><td>48500.0             </td></tr>\n",
              "<tr><td>8      </td><td>-114.59           </td><td>33.61            </td><td>34.0                </td><td>4789.0            </td><td>1175.0           </td><td>3134.0           </td><td>1056.0            </td><td>2.1782            </td><td>58400.0             </td></tr>\n",
              "<tr><td>9      </td><td>-114.6            </td><td>34.83            </td><td>46.0                </td><td>1497.0            </td><td>309.0            </td><td>787.0            </td><td>271.0             </td><td>2.1908            </td><td>48100.0             </td></tr>\n",
              "</tbody>\n",
              "</table><pre style='font-size: smaller; margin-bottom: 1em;'>[17000 rows x 9 columns]</pre>"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "test = pd.read_csv('/content/california_housing_test.csv')\n",
        "test = h2o.H2OFrame(test)\n",
        "\n",
        "# Defining feature and label columns\n",
        "x = test.columns\n",
        "y = 'median_house_value'\n",
        "x.remove(y)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Ey38x0B-y9pQ",
        "outputId": "e1bccd62-1e9b-40df-ccbc-2ad49fa946e0"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Import autoML from H2O\n",
        "from h2o.automl import H2OAutoML\n",
        "# callh20automl  function\n",
        "aml = H2OAutoML(max_runtime_secs = 600,\n",
        "                # exclude_algos =['DeepLearning'],\n",
        "                seed = 1,\n",
        "                # stopping_metric ='logloss',\n",
        "                # sort_metric ='logloss',\n",
        "                balance_classes = False,\n",
        "                project_name ='Project_1'\n",
        ")\n",
        "# Train model and record time % time\n",
        "aml.train(x = x, y = y, training_frame = train_df)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "3bcm18Uny9l-",
        "outputId": "232690ca-152b-4fef-ac4e-04ddcee0d8cc"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "AutoML progress: |\n",
            "09:41:01.68: New models will be added to existing leaderboard Project_1@@median_house_value (leaderboard frame=null) with already 33 models.\n",
            "\n",
            "███████\n",
            "09:41:56.66: StackedEnsemble_BestOfFamily_5_AutoML_2_20250707_94101 [StackedEnsemble best_of_family_1 (built with AUTO metalearner, using top model from each algorithm type)] failed: water.exceptions.H2OIllegalArgumentException: Failed to find the xval predictions frame. . .  Looks like keep_cross_validation_predictions wasn't set when building the models, or the frame was deleted.\n",
            "\n",
            "███████████\n",
            "09:43:47.916: StackedEnsemble_BestOfFamily_6_AutoML_2_20250707_94101 [StackedEnsemble best_of_family_2 (built with AUTO metalearner, using top model from each algorithm type)] failed: water.exceptions.H2OIllegalArgumentException: Failed to find the xval predictions frame. . .  Looks like keep_cross_validation_predictions wasn't set when building the models, or the frame was deleted.\n",
            "09:43:47.939: StackedEnsemble_AllModels_4_AutoML_2_20250707_94101 [StackedEnsemble all_2 (built with AUTO metalearner, using all AutoML models)] failed: water.exceptions.H2OIllegalArgumentException: Failed to find the xval predictions frame. . .  Looks like keep_cross_validation_predictions wasn't set when building the models, or the frame was deleted.\n",
            "\n",
            "███████████\n",
            "09:45:28.221: StackedEnsemble_BestOfFamily_7_AutoML_2_20250707_94101 [StackedEnsemble best_of_family_3 (built with AUTO metalearner, using top model from each algorithm type)] failed: water.exceptions.H2OIllegalArgumentException: Failed to find the xval predictions frame. . .  Looks like keep_cross_validation_predictions wasn't set when building the models, or the frame was deleted.\n",
            "09:45:28.283: StackedEnsemble_AllModels_5_AutoML_2_20250707_94101 [StackedEnsemble all_3 (built with AUTO metalearner, using all AutoML models)] failed: water.exceptions.H2OIllegalArgumentException: Failed to find the xval predictions frame. . .  Looks like keep_cross_validation_predictions wasn't set when building the models, or the frame was deleted.\n",
            "\n",
            "███████████████████████████████\n",
            "09:50:37.144: StackedEnsemble_AllModels_6_AutoML_2_20250707_94101 [StackedEnsemble all_4 (built with AUTO metalearner, using all AutoML models)] failed: water.exceptions.H2OIllegalArgumentException: Failed to find the xval predictions frame. . .  Looks like keep_cross_validation_predictions wasn't set when building the models, or the frame was deleted.\n",
            "\n",
            "███| (done) 100%\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Model Details\n",
              "=============\n",
              "H2OStackedEnsembleEstimator : Stacked Ensemble\n",
              "Model Key: StackedEnsemble_AllModels_3_AutoML_1_20250707_91158\n",
              "\n",
              "\n",
              "Model Summary for Stacked Ensemble: \n",
              "key                                        value\n",
              "-----------------------------------------  ----------------\n",
              "Stacking strategy                          cross_validation\n",
              "Number of base models (used / total)       11/26\n",
              "# GBM base models (used / total)           5/10\n",
              "# XGBoost base models (used / total)       6/10\n",
              "# DRF base models (used / total)           0/2\n",
              "# DeepLearning base models (used / total)  0/3\n",
              "# GLM base models (used / total)           0/1\n",
              "Metalearner algorithm                      GLM\n",
              "Metalearner fold assignment scheme         Random\n",
              "Metalearner nfolds                         5\n",
              "Metalearner fold_column\n",
              "Custom metalearner hyperparameters         None\n",
              "\n",
              "ModelMetricsRegressionGLM: stackedensemble\n",
              "** Reported on train data. **\n",
              "\n",
              "MSE: 767473248.6093858\n",
              "RMSE: 27703.307539161924\n",
              "MAE: 18884.627811706105\n",
              "RMSLE: 0.1410694324080585\n",
              "Mean Residual Deviance: 767473248.6093858\n",
              "R^2: 0.9435628150737745\n",
              "Null degrees of freedom: 10056\n",
              "Residual degrees of freedom: 10045\n",
              "Null deviance: 136762522909302.33\n",
              "Residual deviance: 7718478461264.594\n",
              "AIC: 234318.8124810902\n",
              "\n",
              "ModelMetricsRegressionGLM: stackedensemble\n",
              "** Reported on cross-validation data. **\n",
              "\n",
              "MSE: 2013854660.997773\n",
              "RMSE: 44875.992033578186\n",
              "MAE: 29368.02054417076\n",
              "RMSLE: 0.22033689880319052\n",
              "Mean Residual Deviance: 2013854660.997773\n",
              "R^2: 0.8502870831954857\n",
              "Null degrees of freedom: 16999\n",
              "Residual degrees of freedom: 16988\n",
              "Null deviance: 228735799781891.16\n",
              "Residual deviance: 34235529236962.14\n",
              "AIC: 412466.2900218574\n",
              "\n",
              "Cross-Validation Metrics Summary: \n",
              "                        mean         sd           cv_1_valid    cv_2_valid    cv_3_valid    cv_4_valid    cv_5_valid\n",
              "----------------------  -----------  -----------  ------------  ------------  ------------  ------------  ------------\n",
              "aic                     82510.9      1050.87      82634.8       82708.6       83850.7       82450.8       80909.6\n",
              "loglikelihood           0            0            0             0             0             0             0\n",
              "mae                     29367.2      417.32       29427.2       29030.8       29377.6       30022         28978.7\n",
              "mean_residual_deviance  2.01404e+09  9.21073e+07  1.97099e+09   1.93002e+09   2.00108e+09   2.1708e+09    1.99732e+09\n",
              "mse                     2.01404e+09  9.21073e+07  1.97099e+09   1.93002e+09   2.00108e+09   2.1708e+09    1.99732e+09\n",
              "null_deviance           4.57472e+13  1.49452e+12  4.47703e+13   4.54346e+13   4.60673e+13   4.81436e+13   4.432e+13\n",
              "r2                      0.850252     0.00272747   0.849919      0.854655      0.849872      0.847121      0.849691\n",
              "residual_deviance       6.84711e+12  3.075e+11    6.71712e+12   6.58909e+12   6.91575e+12   7.35251e+12   6.66107e+12\n",
              "rmse                    44868.9      1014.9       44395.8       43932         44733.5       46591.9       44691.4\n",
              "rmsle                   0.220311     0.00378677   0.213761      0.223045      0.221418      0.222688      0.220643\n",
              "\n",
              "[tips]\n",
              "Use `model.explain()` to inspect the model.\n",
              "--\n",
              "Use `h2o.display.toggle_user_tips()` to switch on/off this section."
            ],
            "text/html": [
              "<pre style='margin: 1em 0 1em 0;'>Model Details\n",
              "=============\n",
              "H2OStackedEnsembleEstimator : Stacked Ensemble\n",
              "Model Key: StackedEnsemble_AllModels_3_AutoML_1_20250707_91158\n",
              "</pre>\n",
              "<div style='margin: 1em 0 1em 0;'>\n",
              "<style>\n",
              "\n",
              "#h2o-table-5.h2o-container {\n",
              "  overflow-x: auto;\n",
              "}\n",
              "#h2o-table-5 .h2o-table {\n",
              "  /* width: 100%; */\n",
              "  margin-top: 1em;\n",
              "  margin-bottom: 1em;\n",
              "}\n",
              "#h2o-table-5 .h2o-table caption {\n",
              "  white-space: nowrap;\n",
              "  caption-side: top;\n",
              "  text-align: left;\n",
              "  /* margin-left: 1em; */\n",
              "  margin: 0;\n",
              "  font-size: larger;\n",
              "}\n",
              "#h2o-table-5 .h2o-table thead {\n",
              "  white-space: nowrap; \n",
              "  position: sticky;\n",
              "  top: 0;\n",
              "  box-shadow: 0 -1px inset;\n",
              "}\n",
              "#h2o-table-5 .h2o-table tbody {\n",
              "  overflow: auto;\n",
              "}\n",
              "#h2o-table-5 .h2o-table th,\n",
              "#h2o-table-5 .h2o-table td {\n",
              "  text-align: right;\n",
              "  /* border: 1px solid; */\n",
              "}\n",
              "#h2o-table-5 .h2o-table tr:nth-child(even) {\n",
              "  /* background: #F5F5F5 */\n",
              "}\n",
              "\n",
              "</style>      \n",
              "<div id=\"h2o-table-5\" class=\"h2o-container\">\n",
              "  <table class=\"h2o-table\">\n",
              "    <caption>Model Summary for Stacked Ensemble: </caption>\n",
              "    <thead><tr><th>key</th>\n",
              "<th>value</th></tr></thead>\n",
              "    <tbody><tr><td>Stacking strategy</td>\n",
              "<td>cross_validation</td></tr>\n",
              "<tr><td>Number of base models (used / total)</td>\n",
              "<td>11/26</td></tr>\n",
              "<tr><td># GBM base models (used / total)</td>\n",
              "<td>5/10</td></tr>\n",
              "<tr><td># XGBoost base models (used / total)</td>\n",
              "<td>6/10</td></tr>\n",
              "<tr><td># DRF base models (used / total)</td>\n",
              "<td>0/2</td></tr>\n",
              "<tr><td># DeepLearning base models (used / total)</td>\n",
              "<td>0/3</td></tr>\n",
              "<tr><td># GLM base models (used / total)</td>\n",
              "<td>0/1</td></tr>\n",
              "<tr><td>Metalearner algorithm</td>\n",
              "<td>GLM</td></tr>\n",
              "<tr><td>Metalearner fold assignment scheme</td>\n",
              "<td>Random</td></tr>\n",
              "<tr><td>Metalearner nfolds</td>\n",
              "<td>5</td></tr>\n",
              "<tr><td>Metalearner fold_column</td>\n",
              "<td>None</td></tr>\n",
              "<tr><td>Custom metalearner hyperparameters</td>\n",
              "<td>None</td></tr></tbody>\n",
              "  </table>\n",
              "</div>\n",
              "</div>\n",
              "<div style='margin: 1em 0 1em 0;'><pre style='margin: 1em 0 1em 0;'>ModelMetricsRegressionGLM: stackedensemble\n",
              "** Reported on train data. **\n",
              "\n",
              "MSE: 767473248.6093858\n",
              "RMSE: 27703.307539161924\n",
              "MAE: 18884.627811706105\n",
              "RMSLE: 0.1410694324080585\n",
              "Mean Residual Deviance: 767473248.6093858\n",
              "R^2: 0.9435628150737745\n",
              "Null degrees of freedom: 10056\n",
              "Residual degrees of freedom: 10045\n",
              "Null deviance: 136762522909302.33\n",
              "Residual deviance: 7718478461264.594\n",
              "AIC: 234318.8124810902</pre></div>\n",
              "<div style='margin: 1em 0 1em 0;'><pre style='margin: 1em 0 1em 0;'>ModelMetricsRegressionGLM: stackedensemble\n",
              "** Reported on cross-validation data. **\n",
              "\n",
              "MSE: 2013854660.997773\n",
              "RMSE: 44875.992033578186\n",
              "MAE: 29368.02054417076\n",
              "RMSLE: 0.22033689880319052\n",
              "Mean Residual Deviance: 2013854660.997773\n",
              "R^2: 0.8502870831954857\n",
              "Null degrees of freedom: 16999\n",
              "Residual degrees of freedom: 16988\n",
              "Null deviance: 228735799781891.16\n",
              "Residual deviance: 34235529236962.14\n",
              "AIC: 412466.2900218574</pre></div>\n",
              "<div style='margin: 1em 0 1em 0;'>\n",
              "<style>\n",
              "\n",
              "#h2o-table-6.h2o-container {\n",
              "  overflow-x: auto;\n",
              "}\n",
              "#h2o-table-6 .h2o-table {\n",
              "  /* width: 100%; */\n",
              "  margin-top: 1em;\n",
              "  margin-bottom: 1em;\n",
              "}\n",
              "#h2o-table-6 .h2o-table caption {\n",
              "  white-space: nowrap;\n",
              "  caption-side: top;\n",
              "  text-align: left;\n",
              "  /* margin-left: 1em; */\n",
              "  margin: 0;\n",
              "  font-size: larger;\n",
              "}\n",
              "#h2o-table-6 .h2o-table thead {\n",
              "  white-space: nowrap; \n",
              "  position: sticky;\n",
              "  top: 0;\n",
              "  box-shadow: 0 -1px inset;\n",
              "}\n",
              "#h2o-table-6 .h2o-table tbody {\n",
              "  overflow: auto;\n",
              "}\n",
              "#h2o-table-6 .h2o-table th,\n",
              "#h2o-table-6 .h2o-table td {\n",
              "  text-align: right;\n",
              "  /* border: 1px solid; */\n",
              "}\n",
              "#h2o-table-6 .h2o-table tr:nth-child(even) {\n",
              "  /* background: #F5F5F5 */\n",
              "}\n",
              "\n",
              "</style>      \n",
              "<div id=\"h2o-table-6\" class=\"h2o-container\">\n",
              "  <table class=\"h2o-table\">\n",
              "    <caption>Cross-Validation Metrics Summary: </caption>\n",
              "    <thead><tr><th></th>\n",
              "<th>mean</th>\n",
              "<th>sd</th>\n",
              "<th>cv_1_valid</th>\n",
              "<th>cv_2_valid</th>\n",
              "<th>cv_3_valid</th>\n",
              "<th>cv_4_valid</th>\n",
              "<th>cv_5_valid</th></tr></thead>\n",
              "    <tbody><tr><td>aic</td>\n",
              "<td>82510.9</td>\n",
              "<td>1050.8673</td>\n",
              "<td>82634.82</td>\n",
              "<td>82708.55</td>\n",
              "<td>83850.695</td>\n",
              "<td>82450.84</td>\n",
              "<td>80909.586</td></tr>\n",
              "<tr><td>loglikelihood</td>\n",
              "<td>0.0</td>\n",
              "<td>0.0</td>\n",
              "<td>0.0</td>\n",
              "<td>0.0</td>\n",
              "<td>0.0</td>\n",
              "<td>0.0</td>\n",
              "<td>0.0</td></tr>\n",
              "<tr><td>mae</td>\n",
              "<td>29367.25</td>\n",
              "<td>417.3203</td>\n",
              "<td>29427.23</td>\n",
              "<td>29030.76</td>\n",
              "<td>29377.596</td>\n",
              "<td>30022.0</td>\n",
              "<td>28978.666</td></tr>\n",
              "<tr><td>mean_residual_deviance</td>\n",
              "<td>2014042750.0000000</td>\n",
              "<td>92107288.0000000</td>\n",
              "<td>1970986110.0000000</td>\n",
              "<td>1930019460.0000000</td>\n",
              "<td>2001083900.0000000</td>\n",
              "<td>2170802690.0000000</td>\n",
              "<td>1997321600.0000000</td></tr>\n",
              "<tr><td>mse</td>\n",
              "<td>2014042750.0000000</td>\n",
              "<td>92107288.0000000</td>\n",
              "<td>1970986110.0000000</td>\n",
              "<td>1930019460.0000000</td>\n",
              "<td>2001083900.0000000</td>\n",
              "<td>2170802690.0000000</td>\n",
              "<td>1997321600.0000000</td></tr>\n",
              "<tr><td>null_deviance</td>\n",
              "<td>45747160000000.0000000</td>\n",
              "<td>1494524490000.0000000</td>\n",
              "<td>44770257000000.0000000</td>\n",
              "<td>45434635000000.0000000</td>\n",
              "<td>46067345000000.0000000</td>\n",
              "<td>48143610000000.0000000</td>\n",
              "<td>44319952000000.0000000</td></tr>\n",
              "<tr><td>r2</td>\n",
              "<td>0.8502515</td>\n",
              "<td>0.0027275</td>\n",
              "<td>0.8499186</td>\n",
              "<td>0.8546548</td>\n",
              "<td>0.8498719</td>\n",
              "<td>0.8471214</td>\n",
              "<td>0.8496908</td></tr>\n",
              "<tr><td>residual_deviance</td>\n",
              "<td>6847105900000.0000000</td>\n",
              "<td>307499631000.0000000</td>\n",
              "<td>6717120700000.0000000</td>\n",
              "<td>6589086400000.0000000</td>\n",
              "<td>6915745600000.0000000</td>\n",
              "<td>7352509000000.0000000</td>\n",
              "<td>6661067500000.0000000</td></tr>\n",
              "<tr><td>rmse</td>\n",
              "<td>44868.906</td>\n",
              "<td>1014.9045400</td>\n",
              "<td>44395.79</td>\n",
              "<td>43931.984</td>\n",
              "<td>44733.477</td>\n",
              "<td>46591.875</td>\n",
              "<td>44691.406</td></tr>\n",
              "<tr><td>rmsle</td>\n",
              "<td>0.2203111</td>\n",
              "<td>0.0037868</td>\n",
              "<td>0.2137614</td>\n",
              "<td>0.2230455</td>\n",
              "<td>0.2214183</td>\n",
              "<td>0.2226876</td>\n",
              "<td>0.2206425</td></tr></tbody>\n",
              "  </table>\n",
              "</div>\n",
              "</div><pre style=\"font-size: smaller; margin: 1em 0 0 0;\">\n",
              "\n",
              "[tips]\n",
              "Use `model.explain()` to inspect the model.\n",
              "--\n",
              "Use `h2o.display.toggle_user_tips()` to switch on/off this section.</pre>"
            ]
          },
          "metadata": {},
          "execution_count": 40
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "lb = aml.leaderboard\n",
        "lb.head(rows = lb.nrows)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "VipY2dHBy9ig",
        "outputId": "92622f78-ad1b-4d06-9955-8a0046fe0b77"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "model_id                                                    rmse          mse       mae       rmsle    mean_residual_deviance\n",
              "------------------------------------------------------  --------  -----------  --------  ----------  ------------------------\n",
              "StackedEnsemble_AllModels_3_AutoML_1_20250707_91158      44876    2.01385e+09   29368      0.220337               2.01385e+09\n",
              "StackedEnsemble_AllModels_2_AutoML_1_20250707_91158      45093.1  2.03339e+09   29494.1    0.221225               2.03339e+09\n",
              "StackedEnsemble_AllModels_1_AutoML_1_20250707_91158      45093.8  2.03345e+09   29498.8    0.221259               2.03345e+09\n",
              "StackedEnsemble_BestOfFamily_2_AutoML_1_20250707_91158   45571.9  2.0768e+09    29913.2    0.224815               2.0768e+09\n",
              "StackedEnsemble_BestOfFamily_8_AutoML_2_20250707_94101   45789.1  2.09665e+09   30116.5    0.224983               2.09665e+09\n",
              "StackedEnsemble_BestOfFamily_4_AutoML_1_20250707_91158   45789.1  2.09665e+09   30116.5    0.224983               2.09665e+09\n",
              "StackedEnsemble_BestOfFamily_3_AutoML_1_20250707_91158   45934.1  2.10994e+09   30319.1    0.226491               2.10994e+09\n",
              "StackedEnsemble_BestOfFamily_1_AutoML_1_20250707_91158   46022    2.11802e+09   30492.5    0.228275               2.11802e+09\n",
              "GBM_9_AutoML_2_20250707_94101                            46141.4  2.12903e+09   30517.2    0.227739               2.12903e+09\n",
              "GBM_4_AutoML_1_20250707_91158                            46141.4  2.12903e+09   30517.2    0.227739               2.12903e+09\n",
              "GBM_3_AutoML_1_20250707_91158                            46306.8  2.14432e+09   30633.4    0.227464               2.14432e+09\n",
              "GBM_8_AutoML_2_20250707_94101                            46306.8  2.14432e+09   30633.4    0.227464               2.14432e+09\n",
              "GBM_7_AutoML_2_20250707_94101                            46464    2.1589e+09    30839.8    0.229185               2.1589e+09\n",
              "GBM_2_AutoML_1_20250707_91158                            46464    2.1589e+09    30839.8    0.229185               2.1589e+09\n",
              "GBM_1_AutoML_1_20250707_91158                            46831    2.19314e+09   31360      0.233194               2.19314e+09\n",
              "GBM_6_AutoML_2_20250707_94101                            46831    2.19314e+09   31360      0.233194               2.19314e+09\n",
              "GBM_5_AutoML_1_20250707_91158                            47775.9  2.28254e+09   31747.6    0.235581               2.28254e+09\n",
              "GBM_10_AutoML_2_20250707_94101                           47775.9  2.28254e+09   31747.6    0.235581               2.28254e+09\n",
              "XGBoost_grid_2_AutoML_2_20250707_94101_model_3           48661.2  2.36791e+09   32500.8  nan                      2.36791e+09\n",
              "XGBoost_grid_1_AutoML_1_20250707_91158_model_3           48661.2  2.36791e+09   32500.8  nan                      2.36791e+09\n",
              "GBM_grid_2_AutoML_2_20250707_94101_model_2               48845.4  2.38587e+09   33117.1    0.241984               2.38587e+09\n",
              "GBM_grid_1_AutoML_1_20250707_91158_model_2               48845.4  2.38587e+09   33117.1    0.241984               2.38587e+09\n",
              "GBM_grid_2_AutoML_2_20250707_94101_model_4               49145.5  2.41528e+09   33726.7  nan                      2.41528e+09\n",
              "XGBoost_grid_1_AutoML_1_20250707_91158_model_1           49347.4  2.43517e+09   33408.7  nan                      2.43517e+09\n",
              "XGBoost_grid_2_AutoML_2_20250707_94101_model_1           49347.4  2.43517e+09   33408.7  nan                      2.43517e+09\n",
              "XGBoost_grid_2_AutoML_2_20250707_94101_model_7           49364.1  2.43681e+09   33474.8    0.247001               2.43681e+09\n",
              "GBM_grid_1_AutoML_1_20250707_91158_model_3               49375.4  2.43793e+09   33662.2  nan                      2.43793e+09\n",
              "GBM_grid_2_AutoML_2_20250707_94101_model_3               49375.4  2.43793e+09   33662.2  nan                      2.43793e+09\n",
              "GBM_grid_2_AutoML_2_20250707_94101_model_1               49443    2.44461e+09   34222.9    0.257013               2.44461e+09\n",
              "GBM_grid_1_AutoML_1_20250707_91158_model_1               49443    2.44461e+09   34222.9    0.257013               2.44461e+09\n",
              "XGBoost_3_AutoML_1_20250707_91158                        49470.9  2.44737e+09   33486.9    0.249606               2.44737e+09\n",
              "XGBoost_6_AutoML_2_20250707_94101                        49470.9  2.44737e+09   33486.9    0.249606               2.44737e+09\n",
              "GBM_grid_1_AutoML_1_20250707_91158_model_4               49645.4  2.46467e+09   34094.9    0.255603               2.46467e+09\n",
              "XGBoost_1_AutoML_1_20250707_91158                        49711.4  2.47122e+09   33582.8  nan                      2.47122e+09\n",
              "XGBoost_4_AutoML_2_20250707_94101                        49711.4  2.47122e+09   33582.8  nan                      2.47122e+09\n",
              "XGBoost_grid_2_AutoML_2_20250707_94101_model_2           49791.4  2.47918e+09   33386.9    0.249071               2.47918e+09\n",
              "XGBoost_grid_1_AutoML_1_20250707_91158_model_2           49791.4  2.47918e+09   33386.9    0.249071               2.47918e+09\n",
              "XGBoost_5_AutoML_2_20250707_94101                        50075.6  2.50756e+09   33740    nan                      2.50756e+09\n",
              "XGBoost_2_AutoML_1_20250707_91158                        50075.6  2.50756e+09   33740    nan                      2.50756e+09\n",
              "XGBoost_grid_1_AutoML_1_20250707_91158_model_4           50351.5  2.53527e+09   34061.7  nan                      2.53527e+09\n",
              "XGBoost_grid_2_AutoML_2_20250707_94101_model_4           50351.5  2.53527e+09   34061.7  nan                      2.53527e+09\n",
              "XGBoost_grid_1_AutoML_1_20250707_91158_model_7           50485.5  2.54878e+09   34303.9    0.249589               2.54878e+09\n",
              "XGBoost_grid_1_AutoML_1_20250707_91158_model_6           50588.4  2.55919e+09   34168    nan                      2.55919e+09\n",
              "XGBoost_grid_2_AutoML_2_20250707_94101_model_6           50588.4  2.55919e+09   34168    nan                      2.55919e+09\n",
              "XGBoost_grid_1_AutoML_1_20250707_91158_model_5           52010.1  2.70505e+09   36009.5  nan                      2.70505e+09\n",
              "XGBoost_grid_2_AutoML_2_20250707_94101_model_5           52010.1  2.70505e+09   36009.5  nan                      2.70505e+09\n",
              "XRT_2_AutoML_2_20250707_94101                            52530.6  2.75947e+09   35845.1    0.25624                2.75947e+09\n",
              "XRT_1_AutoML_1_20250707_91158                            52530.6  2.75947e+09   35845.1    0.25624                2.75947e+09\n",
              "DRF_2_AutoML_2_20250707_94101                            52878.3  2.79611e+09   36044.2    0.258542               2.79611e+09\n",
              "DRF_1_AutoML_1_20250707_91158                            52878.3  2.79611e+09   36044.2    0.258542               2.79611e+09\n",
              "GBM_grid_2_AutoML_2_20250707_94101_model_5               66208.9  4.38362e+09   49486      0.351629               4.38362e+09\n",
              "DeepLearning_2_AutoML_2_20250707_94101                   67739.5  4.58864e+09   48003.7    0.347514               4.58864e+09\n",
              "DeepLearning_1_AutoML_1_20250707_91158                   69136.7  4.77989e+09   48655.3    0.339401               4.77989e+09\n",
              "GBM_grid_1_AutoML_1_20250707_91158_model_5               82363.6  6.78376e+09   63158.9    0.435589               6.78376e+09\n",
              "DeepLearning_grid_3_AutoML_2_20250707_94101_model_1      89509.5  8.01194e+09   62642.8  nan                      8.01194e+09\n",
              "DeepLearning_grid_1_AutoML_1_20250707_91158_model_1      90959.6  8.27365e+09   63825.9  nan                      8.27365e+09\n",
              "DeepLearning_grid_1_AutoML_1_20250707_91158_model_2      96136    9.24213e+09   68575.4  nan                      9.24213e+09\n",
              "GLM_2_AutoML_2_20250707_94101                           115985    1.34525e+10   91648.3    0.592579               1.34525e+10\n",
              "GLM_1_AutoML_1_20250707_91158                           115985    1.34525e+10   91648.3    0.592579               1.34525e+10\n",
              "XGBoost_grid_2_AutoML_2_20250707_94101_model_8          171184    2.9304e+10   146019      1.24439                2.9304e+10\n",
              "[60 rows x 6 columns]\n"
            ],
            "text/html": [
              "<table class='dataframe'>\n",
              "<thead>\n",
              "<tr><th>model_id                                              </th><th style=\"text-align: right;\">    rmse</th><th style=\"text-align: right;\">        mse</th><th style=\"text-align: right;\">     mae</th><th style=\"text-align: right;\">     rmsle</th><th style=\"text-align: right;\">  mean_residual_deviance</th></tr>\n",
              "</thead>\n",
              "<tbody>\n",
              "<tr><td>StackedEnsemble_AllModels_3_AutoML_1_20250707_91158   </td><td style=\"text-align: right;\"> 44876  </td><td style=\"text-align: right;\">2.01385e+09</td><td style=\"text-align: right;\"> 29368  </td><td style=\"text-align: right;\">  0.220337</td><td style=\"text-align: right;\">             2.01385e+09</td></tr>\n",
              "<tr><td>StackedEnsemble_AllModels_2_AutoML_1_20250707_91158   </td><td style=\"text-align: right;\"> 45093.1</td><td style=\"text-align: right;\">2.03339e+09</td><td style=\"text-align: right;\"> 29494.1</td><td style=\"text-align: right;\">  0.221225</td><td style=\"text-align: right;\">             2.03339e+09</td></tr>\n",
              "<tr><td>StackedEnsemble_AllModels_1_AutoML_1_20250707_91158   </td><td style=\"text-align: right;\"> 45093.8</td><td style=\"text-align: right;\">2.03345e+09</td><td style=\"text-align: right;\"> 29498.8</td><td style=\"text-align: right;\">  0.221259</td><td style=\"text-align: right;\">             2.03345e+09</td></tr>\n",
              "<tr><td>StackedEnsemble_BestOfFamily_2_AutoML_1_20250707_91158</td><td style=\"text-align: right;\"> 45571.9</td><td style=\"text-align: right;\">2.0768e+09 </td><td style=\"text-align: right;\"> 29913.2</td><td style=\"text-align: right;\">  0.224815</td><td style=\"text-align: right;\">             2.0768e+09 </td></tr>\n",
              "<tr><td>StackedEnsemble_BestOfFamily_8_AutoML_2_20250707_94101</td><td style=\"text-align: right;\"> 45789.1</td><td style=\"text-align: right;\">2.09665e+09</td><td style=\"text-align: right;\"> 30116.5</td><td style=\"text-align: right;\">  0.224983</td><td style=\"text-align: right;\">             2.09665e+09</td></tr>\n",
              "<tr><td>StackedEnsemble_BestOfFamily_4_AutoML_1_20250707_91158</td><td style=\"text-align: right;\"> 45789.1</td><td style=\"text-align: right;\">2.09665e+09</td><td style=\"text-align: right;\"> 30116.5</td><td style=\"text-align: right;\">  0.224983</td><td style=\"text-align: right;\">             2.09665e+09</td></tr>\n",
              "<tr><td>StackedEnsemble_BestOfFamily_3_AutoML_1_20250707_91158</td><td style=\"text-align: right;\"> 45934.1</td><td style=\"text-align: right;\">2.10994e+09</td><td style=\"text-align: right;\"> 30319.1</td><td style=\"text-align: right;\">  0.226491</td><td style=\"text-align: right;\">             2.10994e+09</td></tr>\n",
              "<tr><td>StackedEnsemble_BestOfFamily_1_AutoML_1_20250707_91158</td><td style=\"text-align: right;\"> 46022  </td><td style=\"text-align: right;\">2.11802e+09</td><td style=\"text-align: right;\"> 30492.5</td><td style=\"text-align: right;\">  0.228275</td><td style=\"text-align: right;\">             2.11802e+09</td></tr>\n",
              "<tr><td>GBM_9_AutoML_2_20250707_94101                         </td><td style=\"text-align: right;\"> 46141.4</td><td style=\"text-align: right;\">2.12903e+09</td><td style=\"text-align: right;\"> 30517.2</td><td style=\"text-align: right;\">  0.227739</td><td style=\"text-align: right;\">             2.12903e+09</td></tr>\n",
              "<tr><td>GBM_4_AutoML_1_20250707_91158                         </td><td style=\"text-align: right;\"> 46141.4</td><td style=\"text-align: right;\">2.12903e+09</td><td style=\"text-align: right;\"> 30517.2</td><td style=\"text-align: right;\">  0.227739</td><td style=\"text-align: right;\">             2.12903e+09</td></tr>\n",
              "<tr><td>GBM_3_AutoML_1_20250707_91158                         </td><td style=\"text-align: right;\"> 46306.8</td><td style=\"text-align: right;\">2.14432e+09</td><td style=\"text-align: right;\"> 30633.4</td><td style=\"text-align: right;\">  0.227464</td><td style=\"text-align: right;\">             2.14432e+09</td></tr>\n",
              "<tr><td>GBM_8_AutoML_2_20250707_94101                         </td><td style=\"text-align: right;\"> 46306.8</td><td style=\"text-align: right;\">2.14432e+09</td><td style=\"text-align: right;\"> 30633.4</td><td style=\"text-align: right;\">  0.227464</td><td style=\"text-align: right;\">             2.14432e+09</td></tr>\n",
              "<tr><td>GBM_7_AutoML_2_20250707_94101                         </td><td style=\"text-align: right;\"> 46464  </td><td style=\"text-align: right;\">2.1589e+09 </td><td style=\"text-align: right;\"> 30839.8</td><td style=\"text-align: right;\">  0.229185</td><td style=\"text-align: right;\">             2.1589e+09 </td></tr>\n",
              "<tr><td>GBM_2_AutoML_1_20250707_91158                         </td><td style=\"text-align: right;\"> 46464  </td><td style=\"text-align: right;\">2.1589e+09 </td><td style=\"text-align: right;\"> 30839.8</td><td style=\"text-align: right;\">  0.229185</td><td style=\"text-align: right;\">             2.1589e+09 </td></tr>\n",
              "<tr><td>GBM_1_AutoML_1_20250707_91158                         </td><td style=\"text-align: right;\"> 46831  </td><td style=\"text-align: right;\">2.19314e+09</td><td style=\"text-align: right;\"> 31360  </td><td style=\"text-align: right;\">  0.233194</td><td style=\"text-align: right;\">             2.19314e+09</td></tr>\n",
              "<tr><td>GBM_6_AutoML_2_20250707_94101                         </td><td style=\"text-align: right;\"> 46831  </td><td style=\"text-align: right;\">2.19314e+09</td><td style=\"text-align: right;\"> 31360  </td><td style=\"text-align: right;\">  0.233194</td><td style=\"text-align: right;\">             2.19314e+09</td></tr>\n",
              "<tr><td>GBM_5_AutoML_1_20250707_91158                         </td><td style=\"text-align: right;\"> 47775.9</td><td style=\"text-align: right;\">2.28254e+09</td><td style=\"text-align: right;\"> 31747.6</td><td style=\"text-align: right;\">  0.235581</td><td style=\"text-align: right;\">             2.28254e+09</td></tr>\n",
              "<tr><td>GBM_10_AutoML_2_20250707_94101                        </td><td style=\"text-align: right;\"> 47775.9</td><td style=\"text-align: right;\">2.28254e+09</td><td style=\"text-align: right;\"> 31747.6</td><td style=\"text-align: right;\">  0.235581</td><td style=\"text-align: right;\">             2.28254e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_2_AutoML_2_20250707_94101_model_3        </td><td style=\"text-align: right;\"> 48661.2</td><td style=\"text-align: right;\">2.36791e+09</td><td style=\"text-align: right;\"> 32500.8</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.36791e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_1_AutoML_1_20250707_91158_model_3        </td><td style=\"text-align: right;\"> 48661.2</td><td style=\"text-align: right;\">2.36791e+09</td><td style=\"text-align: right;\"> 32500.8</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.36791e+09</td></tr>\n",
              "<tr><td>GBM_grid_2_AutoML_2_20250707_94101_model_2            </td><td style=\"text-align: right;\"> 48845.4</td><td style=\"text-align: right;\">2.38587e+09</td><td style=\"text-align: right;\"> 33117.1</td><td style=\"text-align: right;\">  0.241984</td><td style=\"text-align: right;\">             2.38587e+09</td></tr>\n",
              "<tr><td>GBM_grid_1_AutoML_1_20250707_91158_model_2            </td><td style=\"text-align: right;\"> 48845.4</td><td style=\"text-align: right;\">2.38587e+09</td><td style=\"text-align: right;\"> 33117.1</td><td style=\"text-align: right;\">  0.241984</td><td style=\"text-align: right;\">             2.38587e+09</td></tr>\n",
              "<tr><td>GBM_grid_2_AutoML_2_20250707_94101_model_4            </td><td style=\"text-align: right;\"> 49145.5</td><td style=\"text-align: right;\">2.41528e+09</td><td style=\"text-align: right;\"> 33726.7</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.41528e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_1_AutoML_1_20250707_91158_model_1        </td><td style=\"text-align: right;\"> 49347.4</td><td style=\"text-align: right;\">2.43517e+09</td><td style=\"text-align: right;\"> 33408.7</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.43517e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_2_AutoML_2_20250707_94101_model_1        </td><td style=\"text-align: right;\"> 49347.4</td><td style=\"text-align: right;\">2.43517e+09</td><td style=\"text-align: right;\"> 33408.7</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.43517e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_2_AutoML_2_20250707_94101_model_7        </td><td style=\"text-align: right;\"> 49364.1</td><td style=\"text-align: right;\">2.43681e+09</td><td style=\"text-align: right;\"> 33474.8</td><td style=\"text-align: right;\">  0.247001</td><td style=\"text-align: right;\">             2.43681e+09</td></tr>\n",
              "<tr><td>GBM_grid_1_AutoML_1_20250707_91158_model_3            </td><td style=\"text-align: right;\"> 49375.4</td><td style=\"text-align: right;\">2.43793e+09</td><td style=\"text-align: right;\"> 33662.2</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.43793e+09</td></tr>\n",
              "<tr><td>GBM_grid_2_AutoML_2_20250707_94101_model_3            </td><td style=\"text-align: right;\"> 49375.4</td><td style=\"text-align: right;\">2.43793e+09</td><td style=\"text-align: right;\"> 33662.2</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.43793e+09</td></tr>\n",
              "<tr><td>GBM_grid_2_AutoML_2_20250707_94101_model_1            </td><td style=\"text-align: right;\"> 49443  </td><td style=\"text-align: right;\">2.44461e+09</td><td style=\"text-align: right;\"> 34222.9</td><td style=\"text-align: right;\">  0.257013</td><td style=\"text-align: right;\">             2.44461e+09</td></tr>\n",
              "<tr><td>GBM_grid_1_AutoML_1_20250707_91158_model_1            </td><td style=\"text-align: right;\"> 49443  </td><td style=\"text-align: right;\">2.44461e+09</td><td style=\"text-align: right;\"> 34222.9</td><td style=\"text-align: right;\">  0.257013</td><td style=\"text-align: right;\">             2.44461e+09</td></tr>\n",
              "<tr><td>XGBoost_3_AutoML_1_20250707_91158                     </td><td style=\"text-align: right;\"> 49470.9</td><td style=\"text-align: right;\">2.44737e+09</td><td style=\"text-align: right;\"> 33486.9</td><td style=\"text-align: right;\">  0.249606</td><td style=\"text-align: right;\">             2.44737e+09</td></tr>\n",
              "<tr><td>XGBoost_6_AutoML_2_20250707_94101                     </td><td style=\"text-align: right;\"> 49470.9</td><td style=\"text-align: right;\">2.44737e+09</td><td style=\"text-align: right;\"> 33486.9</td><td style=\"text-align: right;\">  0.249606</td><td style=\"text-align: right;\">             2.44737e+09</td></tr>\n",
              "<tr><td>GBM_grid_1_AutoML_1_20250707_91158_model_4            </td><td style=\"text-align: right;\"> 49645.4</td><td style=\"text-align: right;\">2.46467e+09</td><td style=\"text-align: right;\"> 34094.9</td><td style=\"text-align: right;\">  0.255603</td><td style=\"text-align: right;\">             2.46467e+09</td></tr>\n",
              "<tr><td>XGBoost_1_AutoML_1_20250707_91158                     </td><td style=\"text-align: right;\"> 49711.4</td><td style=\"text-align: right;\">2.47122e+09</td><td style=\"text-align: right;\"> 33582.8</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.47122e+09</td></tr>\n",
              "<tr><td>XGBoost_4_AutoML_2_20250707_94101                     </td><td style=\"text-align: right;\"> 49711.4</td><td style=\"text-align: right;\">2.47122e+09</td><td style=\"text-align: right;\"> 33582.8</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.47122e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_2_AutoML_2_20250707_94101_model_2        </td><td style=\"text-align: right;\"> 49791.4</td><td style=\"text-align: right;\">2.47918e+09</td><td style=\"text-align: right;\"> 33386.9</td><td style=\"text-align: right;\">  0.249071</td><td style=\"text-align: right;\">             2.47918e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_1_AutoML_1_20250707_91158_model_2        </td><td style=\"text-align: right;\"> 49791.4</td><td style=\"text-align: right;\">2.47918e+09</td><td style=\"text-align: right;\"> 33386.9</td><td style=\"text-align: right;\">  0.249071</td><td style=\"text-align: right;\">             2.47918e+09</td></tr>\n",
              "<tr><td>XGBoost_5_AutoML_2_20250707_94101                     </td><td style=\"text-align: right;\"> 50075.6</td><td style=\"text-align: right;\">2.50756e+09</td><td style=\"text-align: right;\"> 33740  </td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.50756e+09</td></tr>\n",
              "<tr><td>XGBoost_2_AutoML_1_20250707_91158                     </td><td style=\"text-align: right;\"> 50075.6</td><td style=\"text-align: right;\">2.50756e+09</td><td style=\"text-align: right;\"> 33740  </td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.50756e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_1_AutoML_1_20250707_91158_model_4        </td><td style=\"text-align: right;\"> 50351.5</td><td style=\"text-align: right;\">2.53527e+09</td><td style=\"text-align: right;\"> 34061.7</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.53527e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_2_AutoML_2_20250707_94101_model_4        </td><td style=\"text-align: right;\"> 50351.5</td><td style=\"text-align: right;\">2.53527e+09</td><td style=\"text-align: right;\"> 34061.7</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.53527e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_1_AutoML_1_20250707_91158_model_7        </td><td style=\"text-align: right;\"> 50485.5</td><td style=\"text-align: right;\">2.54878e+09</td><td style=\"text-align: right;\"> 34303.9</td><td style=\"text-align: right;\">  0.249589</td><td style=\"text-align: right;\">             2.54878e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_1_AutoML_1_20250707_91158_model_6        </td><td style=\"text-align: right;\"> 50588.4</td><td style=\"text-align: right;\">2.55919e+09</td><td style=\"text-align: right;\"> 34168  </td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.55919e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_2_AutoML_2_20250707_94101_model_6        </td><td style=\"text-align: right;\"> 50588.4</td><td style=\"text-align: right;\">2.55919e+09</td><td style=\"text-align: right;\"> 34168  </td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.55919e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_1_AutoML_1_20250707_91158_model_5        </td><td style=\"text-align: right;\"> 52010.1</td><td style=\"text-align: right;\">2.70505e+09</td><td style=\"text-align: right;\"> 36009.5</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.70505e+09</td></tr>\n",
              "<tr><td>XGBoost_grid_2_AutoML_2_20250707_94101_model_5        </td><td style=\"text-align: right;\"> 52010.1</td><td style=\"text-align: right;\">2.70505e+09</td><td style=\"text-align: right;\"> 36009.5</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             2.70505e+09</td></tr>\n",
              "<tr><td>XRT_2_AutoML_2_20250707_94101                         </td><td style=\"text-align: right;\"> 52530.6</td><td style=\"text-align: right;\">2.75947e+09</td><td style=\"text-align: right;\"> 35845.1</td><td style=\"text-align: right;\">  0.25624 </td><td style=\"text-align: right;\">             2.75947e+09</td></tr>\n",
              "<tr><td>XRT_1_AutoML_1_20250707_91158                         </td><td style=\"text-align: right;\"> 52530.6</td><td style=\"text-align: right;\">2.75947e+09</td><td style=\"text-align: right;\"> 35845.1</td><td style=\"text-align: right;\">  0.25624 </td><td style=\"text-align: right;\">             2.75947e+09</td></tr>\n",
              "<tr><td>DRF_2_AutoML_2_20250707_94101                         </td><td style=\"text-align: right;\"> 52878.3</td><td style=\"text-align: right;\">2.79611e+09</td><td style=\"text-align: right;\"> 36044.2</td><td style=\"text-align: right;\">  0.258542</td><td style=\"text-align: right;\">             2.79611e+09</td></tr>\n",
              "<tr><td>DRF_1_AutoML_1_20250707_91158                         </td><td style=\"text-align: right;\"> 52878.3</td><td style=\"text-align: right;\">2.79611e+09</td><td style=\"text-align: right;\"> 36044.2</td><td style=\"text-align: right;\">  0.258542</td><td style=\"text-align: right;\">             2.79611e+09</td></tr>\n",
              "<tr><td>GBM_grid_2_AutoML_2_20250707_94101_model_5            </td><td style=\"text-align: right;\"> 66208.9</td><td style=\"text-align: right;\">4.38362e+09</td><td style=\"text-align: right;\"> 49486  </td><td style=\"text-align: right;\">  0.351629</td><td style=\"text-align: right;\">             4.38362e+09</td></tr>\n",
              "<tr><td>DeepLearning_2_AutoML_2_20250707_94101                </td><td style=\"text-align: right;\"> 67739.5</td><td style=\"text-align: right;\">4.58864e+09</td><td style=\"text-align: right;\"> 48003.7</td><td style=\"text-align: right;\">  0.347514</td><td style=\"text-align: right;\">             4.58864e+09</td></tr>\n",
              "<tr><td>DeepLearning_1_AutoML_1_20250707_91158                </td><td style=\"text-align: right;\"> 69136.7</td><td style=\"text-align: right;\">4.77989e+09</td><td style=\"text-align: right;\"> 48655.3</td><td style=\"text-align: right;\">  0.339401</td><td style=\"text-align: right;\">             4.77989e+09</td></tr>\n",
              "<tr><td>GBM_grid_1_AutoML_1_20250707_91158_model_5            </td><td style=\"text-align: right;\"> 82363.6</td><td style=\"text-align: right;\">6.78376e+09</td><td style=\"text-align: right;\"> 63158.9</td><td style=\"text-align: right;\">  0.435589</td><td style=\"text-align: right;\">             6.78376e+09</td></tr>\n",
              "<tr><td>DeepLearning_grid_3_AutoML_2_20250707_94101_model_1   </td><td style=\"text-align: right;\"> 89509.5</td><td style=\"text-align: right;\">8.01194e+09</td><td style=\"text-align: right;\"> 62642.8</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             8.01194e+09</td></tr>\n",
              "<tr><td>DeepLearning_grid_1_AutoML_1_20250707_91158_model_1   </td><td style=\"text-align: right;\"> 90959.6</td><td style=\"text-align: right;\">8.27365e+09</td><td style=\"text-align: right;\"> 63825.9</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             8.27365e+09</td></tr>\n",
              "<tr><td>DeepLearning_grid_1_AutoML_1_20250707_91158_model_2   </td><td style=\"text-align: right;\"> 96136  </td><td style=\"text-align: right;\">9.24213e+09</td><td style=\"text-align: right;\"> 68575.4</td><td style=\"text-align: right;\">nan       </td><td style=\"text-align: right;\">             9.24213e+09</td></tr>\n",
              "<tr><td>GLM_2_AutoML_2_20250707_94101                         </td><td style=\"text-align: right;\">115985  </td><td style=\"text-align: right;\">1.34525e+10</td><td style=\"text-align: right;\"> 91648.3</td><td style=\"text-align: right;\">  0.592579</td><td style=\"text-align: right;\">             1.34525e+10</td></tr>\n",
              "<tr><td>GLM_1_AutoML_1_20250707_91158                         </td><td style=\"text-align: right;\">115985  </td><td style=\"text-align: right;\">1.34525e+10</td><td style=\"text-align: right;\"> 91648.3</td><td style=\"text-align: right;\">  0.592579</td><td style=\"text-align: right;\">             1.34525e+10</td></tr>\n",
              "<tr><td>XGBoost_grid_2_AutoML_2_20250707_94101_model_8        </td><td style=\"text-align: right;\">171184  </td><td style=\"text-align: right;\">2.9304e+10 </td><td style=\"text-align: right;\">146019  </td><td style=\"text-align: right;\">  1.24439 </td><td style=\"text-align: right;\">             2.9304e+10 </td></tr>\n",
              "</tbody>\n",
              "</table><pre style='font-size: smaller; margin-bottom: 1em;'>[60 rows x 6 columns]</pre>"
            ]
          },
          "metadata": {},
          "execution_count": 42
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Get the top model of leaderboard\n",
        "se = aml.leader\n",
        "\n",
        "# Get the metalearner model of top model\n",
        "metalearner = h2o.get_model(se.metalearner()['name'])\n",
        "\n",
        "# Baselearner models :\n",
        "metalearner.varimp()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "A3T7AO2kK7Xw",
        "outputId": "ab64692c-7e64-4ca3-9368-ba9c60f959c1"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.11/dist-packages/h2o/estimators/stackedensemble.py:965: H2ODeprecationWarning: The usage of stacked_ensemble.metalearner()['name'] will be deprecated. Metalearner now returns the metalearner object. If you need to get the 'name' please use stacked_ensemble.metalearner().model_id\n",
            "  warnings.warn(\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[('GBM_3_AutoML_1_20250707_91158', 23234.78125, 1.0, 0.21439825598646953),\n",
              " ('GBM_4_AutoML_1_20250707_91158',\n",
              "  21459.20703125,\n",
              "  0.9235811949488442,\n",
              "  0.19801419745893173),\n",
              " ('XGBoost_grid_1_AutoML_1_20250707_91158_model_1',\n",
              "  16433.328125,\n",
              "  0.7072727712898094,\n",
              "  0.15163804867125227),\n",
              " ('XGBoost_1_AutoML_1_20250707_91158',\n",
              "  11521.1337890625,\n",
              "  0.49585720928887594,\n",
              "  0.10631092088985282),\n",
              " ('GBM_1_AutoML_1_20250707_91158',\n",
              "  10094.076171875,\n",
              "  0.43443818399947276,\n",
              "  0.09314278898341592),\n",
              " ('GBM_2_AutoML_1_20250707_91158',\n",
              "  10015.4267578125,\n",
              "  0.43105319779210316,\n",
              "  0.09241705384401762),\n",
              " ('GBM_grid_1_AutoML_1_20250707_91158_model_1',\n",
              "  4718.55029296875,\n",
              "  0.20308133062232941,\n",
              "  0.043540283108839034),\n",
              " ('XGBoost_grid_1_AutoML_1_20250707_91158_model_4',\n",
              "  3821.77587890625,\n",
              "  0.16448512416729769,\n",
              "  0.035265323757186516),\n",
              " ('XGBoost_2_AutoML_1_20250707_91158',\n",
              "  3534.77685546875,\n",
              "  0.1521329948164995,\n",
              "  0.0326170487666561),\n",
              " ('XGBoost_grid_1_AutoML_1_20250707_91158_model_3',\n",
              "  3403.84326171875,\n",
              "  0.14649775373799787,\n",
              "  0.031408862907362035),\n",
              " ('XGBoost_grid_1_AutoML_1_20250707_91158_model_5',\n",
              "  135.163330078125,\n",
              "  0.005817284381712223,\n",
              "  0.0012472156260164282),\n",
              " ('GBM_5_AutoML_1_20250707_91158', 0.0, 0.0, 0.0),\n",
              " ('GBM_grid_1_AutoML_1_20250707_91158_model_2', 0.0, 0.0, 0.0),\n",
              " ('GBM_grid_1_AutoML_1_20250707_91158_model_3', 0.0, 0.0, 0.0),\n",
              " ('XGBoost_3_AutoML_1_20250707_91158', 0.0, 0.0, 0.0),\n",
              " ('GBM_grid_1_AutoML_1_20250707_91158_model_4', 0.0, 0.0, 0.0),\n",
              " ('XGBoost_grid_1_AutoML_1_20250707_91158_model_2', 0.0, 0.0, 0.0),\n",
              " ('XGBoost_grid_1_AutoML_1_20250707_91158_model_7', 0.0, 0.0, 0.0),\n",
              " ('XGBoost_grid_1_AutoML_1_20250707_91158_model_6', 0.0, 0.0, 0.0),\n",
              " ('XRT_1_AutoML_1_20250707_91158', 0.0, 0.0, 0.0),\n",
              " ('DRF_1_AutoML_1_20250707_91158', 0.0, 0.0, 0.0),\n",
              " ('DeepLearning_1_AutoML_1_20250707_91158', 0.0, 0.0, 0.0),\n",
              " ('GBM_grid_1_AutoML_1_20250707_91158_model_5', 0.0, 0.0, 0.0),\n",
              " ('DeepLearning_grid_1_AutoML_1_20250707_91158_model_1', 0.0, 0.0, 0.0),\n",
              " ('DeepLearning_grid_1_AutoML_1_20250707_91158_model_2', 0.0, 0.0, 0.0),\n",
              " ('GLM_1_AutoML_1_20250707_91158', 0.0, 0.0, 0.0)]"
            ]
          },
          "metadata": {},
          "execution_count": 43
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Get the best model from the AutoML run\n",
        "model = aml.leader\n",
        "\n",
        "# Evaluate the model on the test data\n",
        "performance = model.model_performance(test)\n",
        "\n",
        "# Print the performance metrics\n",
        "print(performance)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "suxyrUkvK7Kk",
        "outputId": "c483afd4-32bb-4a08-cbbe-d80b366196ef"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "ModelMetricsRegressionGLM: stackedensemble\n",
            "** Reported on test data. **\n",
            "\n",
            "MSE: 2082655548.9724505\n",
            "RMSE: 45636.121099108\n",
            "MAE: 29539.84376082709\n",
            "RMSLE: 0.2277528452878982\n",
            "Mean Residual Deviance: 2082655548.9724505\n",
            "R^2: 0.8371882128037335\n",
            "Null degrees of freedom: 2999\n",
            "Residual degrees of freedom: 2988\n",
            "Null deviance: 38381742925483.984\n",
            "Residual deviance: 6247966646917.352\n",
            "AIC: 72910.360067028\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "model = h2o.get_model('StackedEnsemble_AllModels_3_AutoML_1_20250707_91158')\n",
        "model.model_performance(test)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 288
        },
        "id": "QYbQa9D4OeX3",
        "outputId": "660aa216-a501-4156-ecc9-b69c28a42cf0"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "ModelMetricsRegressionGLM: stackedensemble\n",
              "** Reported on test data. **\n",
              "\n",
              "MSE: 2082655548.9724505\n",
              "RMSE: 45636.121099108\n",
              "MAE: 29539.84376082709\n",
              "RMSLE: 0.2277528452878982\n",
              "Mean Residual Deviance: 2082655548.9724505\n",
              "R^2: 0.8371882128037335\n",
              "Null degrees of freedom: 2999\n",
              "Residual degrees of freedom: 2988\n",
              "Null deviance: 38381742925483.984\n",
              "Residual deviance: 6247966646917.352\n",
              "AIC: 72910.360067028"
            ],
            "text/html": [
              "<pre style='margin: 1em 0 1em 0;'>ModelMetricsRegressionGLM: stackedensemble\n",
              "** Reported on test data. **\n",
              "\n",
              "MSE: 2082655548.9724505\n",
              "RMSE: 45636.121099108\n",
              "MAE: 29539.84376082709\n",
              "RMSLE: 0.2277528452878982\n",
              "Mean Residual Deviance: 2082655548.9724505\n",
              "R^2: 0.8371882128037335\n",
              "Null degrees of freedom: 2999\n",
              "Residual degrees of freedom: 2988\n",
              "Null deviance: 38381742925483.984\n",
              "Residual deviance: 6247966646917.352\n",
              "AIC: 72910.360067028</pre>"
            ]
          },
          "metadata": {},
          "execution_count": 51
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "base_models = model.base_models\n",
        "# Access one of the base models\n",
        "base_model = h2o.get_model(base_models[0])\n",
        "base_model.varimp_plot(num_of_features=9)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 739
        },
        "id": "fchMGEMRaRcu",
        "outputId": "7149e12f-38ed-47e1-e49a-ec0d6a5179de"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1400x1000 with 1 Axes>"
            ],
            "image/png": "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li9frueff16dO3dW8eLFdebMGS1YsEBhYWEqWbKkLl26lK4RF9WrV1ffvn0VHh6udu3aqUCBAjp69KjGjh1rjvJq3LixXnrppQzV6ubmpnnz5ik4OFjXrl3TM888o9dff11NmzZViRIllJCQoOjoaO3atUuLFi3Svn37NGHChHRf+dHqSpcurbNnz+qJJ55Q3759FRwcLOl2yDN69GhzJMeECRPME9onCgoKUs+ePfXZZ59p7969qlq1qvr27asqVaro+vXr+vnnnzV+/HjFx8fL1dVVkydPvut6E09en5CQoHfeeUfvvfee3XnjSpcuLen2YUgTJkxQQkKCGjVqpN69e6tevXpyd3fXrl279MUXX+jo0aP35TVRuXJlDRkyRAMHDtSRI0cUFBSkd999V08//bTy5cunS5cuKTw8XAsXLlSOHDm0du1as+3D/vw8fvy4QkJCzPBm+PDh8vb2TjX0KlCgQIpXxaxWrZpmzZqldu3a6ebNm3r99dc1efJktW7dWuXLl5erq6uioqK0ZMkSff/99+aolZ49e2Y47L/T0KFD9c8//+jbb79VRESEKlWqpJdeekkNGzZUuXLllCdPHt26dUt//fWXtm/frjlz5piHnefMmfOult2iRQt9+OGHunnzpjp06KDw8HA999xz8vb21oEDBzRhwgTt2rUrzef6xIkTVa9ePcXGxuq5555Tjx499OKLL8rNzU3btm3TyJEjde7cOVWqVCnVQ2hT8+KLL6pbt24aN26cfv/9dwUEBOidd95RvXr1lC9fPl2/fl3Hjh3Thg0btHDhQl28eFHt27fP7KZJVXr3JZlx5/M3ISFB58+f14YNGzR+/HjzlAStW7dW5cqV7eZ1dXXVlClT1LhxY125ckV169ZV79699eyzzypHjhzavHmzRo8ebV4dc8yYMcku1OLr66vPPvtM7777rk6fPq1q1aqpX79+qlOnjuLi4rR69Wp99tlnunbtmmw2m6ZMmWJ3ov4rV67oP//5j/z9/dW8eXPVqlVLxYsXl7Ozs6Kjo/Xzzz+bAUeRIkWSve8mvchIjx499NFHH6lQoULmj3n+/v5ydr5/XyO7du2q6dOna//+/fryyy917NgxderUSUWLFtXp06c1ZcoULV26VDVr1jQ/T1jpEN9EWfW+NmvWLNWsWdM8J+GPP/6o119/XSVLllR8fLyO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IPs4Z3cBD6odO3YoV65c921548aNk2EY9215AAAAAAAAyD6Edpnk6+t7X5fn7e19X5cHAAAAAACA7PPAHx4bHBys9957T927d1eePHlUsGBBTZ06VdevX1eHDh3k5eWl0qVLa9myZWab/fv3q2HDhvL09FTBggXVtm1bnTt3zpx+/fp1tWvXTp6enipUqJA+//zzZMu98/DYsWPHKigoSLly5ZKfn5+6dOmia9eumdPDwsLk4+OjFStWKCAgQJ6ennrhhRcUHR2drvW88/DY4OBgvf/+++rTp4/y5s2rxx57TIMHD7Zrc+nSJb399tsqWLCg3N3d9fjjj+uXX34xpy9YsEAVKlSQm5ub/P39k62nv7+/hg8fbm6L4sWLa8mSJTp79qyaNGkiT09PVaxYUTt37rRrt3HjRj355JPKmTOn/Pz89P777+v69evpWk8AAAAAAAA8BKGdJM2YMUP58+fX9u3b9d5776lz58569dVXVadOHe3evVvPP/+82rZtqxs3bujSpUt65plnVKVKFe3cuVPLly/XP//8oxYtWpj99e7dW+vXr9dPP/2klStXat26ddq9e3eqNTg5OWn8+PE6cOCAZsyYod9++019+vSxm+fGjRsaM2aMZs2apd9//11RUVHq1avXXa13rly5tG3bNn366acaOnSoVq1aJUlKSEhQw4YNtWnTJn333Xc6ePCgRo8erRw5ckiSdu3apRYtWuj111/Xvn37NHjwYA0cOFBhYWF2y/jiiy9Ut25d7dmzR40aNVLbtm3Vrl07tWnTRrt371apUqXUrl0789Dd48eP64UXXtDLL7+sP/74Q3PnztXGjRvVtWtXh+tx8+ZNXblyxbxdvXo109sEAAAAAADgYWAzHvATpQUHBys+Pl4bNmyQJMXHx8vb21vNmzfXzJkzJUl///23ChUqpC1btmj16tXasGGDVqxYYfZx+vRp+fn56fDhwypcuLDy5cun7777Tq+++qok6cKFCypatKjeeustc3Sdv7+/unfvbndxiqTmz5+vd955xxzBFxYWpg4dOujYsWMqVaqUJGnixIkaOnSo/v777zTXMzQ0VJcuXdLixYtTXG9Jqlmzpp555hmNHj1aK1euVMOGDRUREaGyZcsm669169Y6e/asVq5caT7Wp08fLV26VAcOHDDX8cknn9SsWbPstuPAgQM1dOhQ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CWrSpIkuXLig9evXa9WqVfrzzz/12muvpbvv6OhotWzZUm+88YYiIiK0bt06NW/ePNVDYh3VI0nx8fFq2rSpPDw8tG3bNk2ZMkUfffRRRldZgwYN0oABA7R79245OzurVatW6tOnj8aNG6cNGzbo2LFj+vjjj835Z8+erY8//lgjRoxQRESERo4cqYEDB2rGjBmSpGvXrumll15SYGCgdu3apcGDB6tXr16p1hATE6Nq1app6dKl2r9/v9566y21bdtW27dvT/f2SIuTk5PGjx+vAwcOaMaMGfrtt9/Up08fc/qmTZv0zjvvqFu3bgoPD9dzzz2nESNG2PWxYcMGtWvXTt26ddPBgwc1efJkhYWFJZsvqZs3b+rKlSvm7erVq+mqFwAAAAAA4GGV4cNjK1asqEGDBkmSypQpo6+++kpr1qyRJO3bt08nTpyQn5+fJGnmzJmqUKGCduzYoRo1aqTZd3R0tOLi4tS8eXMVL15ckhQUFJSpep577jmtWrVKx48f17p168xDTUeMGKHnnnsuQ+vcq1cvhYSESJK6deumli1bas2aNapbt64kqWPHjgoLCzPnHzRokD7//HM1b95cklSiRAkzwGrfvr2+//57JSQk6Ntvv5W7u7sqVKig06dPq3Pnzg5rKFKkiF2w995772nFihWaN2+eatasma7tkZakFxnx9/fX8OHD9c4775ijBCdMmKCGDRuadZQtW1abN2/WL7/8YrYbMmSI+vXrp/bt20uSSpYsqWHDhqlPnz5mXXcaNWqUhgwZYt53dXVV796906wXAAAAAADgYZXhkXYVK1a0u1+oUCGdOXNGERER8vPzMwM7SQoMDJSPj48iIiLS1XelSpX07LPPKigoSK+++qqmTp2qixcvZqoeSTp8+LD8/Pzszg2XNOBKr6TLKFiwoCT7MLFgwYLmMq9fv67jx4+rY8eO8vT0NG/Dhw/X8ePHJUkRERGqWLGi3N3dzT5q166dag3x8fEaNmyYgoKClDdvXnl6emrFihWKiopyWKtkvz3Ssnr1aj377LMqUqSIvLy81LZtW50/f143btyQdHt73rn97ry/d+9eDR061G7dO3XqpOjoaLOfO/Xv31+XL182b6dPn05XvQAAAAAAAA+rDI+0c3Fxsbtvs9mUkJCQrrZOTk7JDnWNjY01/86RI4dWrVqlzZs3a+XKlZowYYI++ugjbdu2TSVKlMjyetIr6TJsNluKjyUuM/EccFOnTlWtWrXs+smRI0ema/jss880btw4ffnll+Z557p3765bt245rPXO2lITGRmpl156SZ07d9aIESOUN29ebdy4UR07dtStW7fk4eGRrjqvXbumIUOGmKMMk0oaUibl5uYmNzc3835MTEy6lgUAAAAAAPCwyrKrxwYEBOjUqVM6deqUOdru4MGDunTpkgIDAyVJvr6+2r9/v1278PDwZAFY3bp1VbduXX388ccqXry4Fi1apA8++CDDNZUrV06nTp3SP//8Y46Q27FjR2ZXMV0KFiyowoUL688//1Tr1q1TnCcgIECzZs1STEyMGWRt3bo11X43bdqkJk2aqE2bNpJuXxDkyJEj5ra9W7t27VJCQoI+//xzOTndHoA5b948u3nKlSuXbPvdeb9q1ao6fPiwSpcunSV1AQAAAAAAPIoyfHisIw0aNFBQUJBat26t3bt3a/v27WrXrp3q16+v6tWrS5KeeeYZ7dy5UzNnztTRo0c1aNAguxBv27ZtGjlypHbu3KmoqCgtXLhQZ8+eVUBAQKZqeu6551SqVCm1b99ef/zxhzZt2qQBAwZI+v8Rc/fCkCFDNGrUKI0fP15HjhzRvn37NH36dI0dO1aS1KpVK9lsNnXq1EkHDx7Ur7/+qjFjxqTaZ5kyZcxRiBEREXr77bftrsx7t0qXLq3Y2FhNmDBBf/75p2bNmqVJkybZzfPee+/p119/1dixY3X06FFNnjxZy5Yts9uWH3/8sWbOnKkhQ4bowIEDioiI0Jw5c8ztDgAAAAAAgLRlWWhns9n0008/KU+ePHrqqafUoEEDlSxZUnPnzjXnCQkJ0cCBA9WnTx/VqFFDV69eVbt27czpuXPn1u+//64XX3xRZcuW1YABA/T555+rYcOGmaopR44cWrx4sa5du6YaNWrozTffNK8e6+hQzazw5ptv6ptvvtH06dMVFBSk+vXrKywszDzE19PTUz///LP27dunKlWq6KOPPtInn3ySap8DBgxQ1apVFRISouDgYD322GNq2rRpltVcqVIljR07Vp988okef/xxzZ49W6NGjbKbp27dupo0aZLGjh2rSpUqafny5erRo4fdtgwJCdEvv/yilStXqkaNGnriiSf0xRdfmBcWAQAAAAAAQNpsxp0nmXvIbdq0SfXq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Qi666KJyj7FZS5cuTUVFRWpraz/X6+y33365+eabt3hMRUVF7r///s/17wEAAADgP0Q7AAAAACgY0Q4AAAAACka0+5w2btyYyy67LLvvvns6dOiQMWPG1D22bNmynH766dlll13Spk2bDBw4MK+//nrd48OGDcuAAQPqvd5FF12UE044oe7ne++9Nz169MhOO+2UPfbYI/369cvq1avrHr/99tvTrVu3VFVVpWvXrrn11ls/MePixYtz4oknZuedd06vXr0yZ86ceo/fd999Ofjgg1NZWZn99tsvEydO3OI5v/zyyznuuONSVVWV7t2759FHH633+Nq1a3PBBRekY8eOqaqqyr777pvrr79+i68JAAAAwH+1KPcA27rf/OY3GTFiRObOnZs5c+Zk2LBh6du3b0466aS6YPfXv/4169evz/nnn59BgwZl9uzZn+m1ly9fnsGDB+eGG27It771raxatSpPPPFESqVSkuR3v/tdrrrqqkyaNCmHHXZY5s2bl+9///v5whe+kKFDh9a9zqhRo3LjjTemc+fOGTVqVAYPHpyFCxemRYsWefbZZzNw4MCMGTMmgwYNytNPP53zzjsve+yxR4YNG/aJmTZu3Jgzzjgj7du3z9y5c/POO+984nP9fvazn+WBBx7I3XffnS9+8Yt55ZVX8sorrzT2jxgAAABghyPafU49e/ZMTU1NkqRz586ZNGlSZs2alSR5/vnns2TJklRXVydJ7rzzzhx88MH5xz/+kd69e3/qay9fvjzr16/PGWeckX333TdJ0qNHj7rHa2pqMnHixJxxxhlJkv333z/z58/PL3/5y3rR7tJLL82pp56aJLn66qtz8MEHZ+HChenatWtuuummnHTSSbnyyiuTJF26dMn8+fMzYcKETUa7xx57LC+++GIefvjhdOrUKUly3XXX5Rvf+EbdMcuWLUvnzp1zzDHHpKKiom72zVmzZk3WrFlT72cAAACAHZm3x35OPXv2rPdzx44d88Ybb2TBggWprq6uC3ZJ0r179+y2225ZsGDBZ3rtXr165aSTTkqPHj3y7W9/O5MnT87bb7+dJFm9enUWLVqUc845J7vsskvdbdy4cVm0aNFmZ+zYsWOS5I033kiSLFiwIH379q13fN++ffPyyy9nw4YNn5jpo/P6KNglSZ8+feodM2zYsNTW1uaggw7KhRdemEceeWSL53n99ddn1113rbvts88+n/ZHAwAAALBdE+0+p5YtW9b7uaKiIhs3bvxMz23WrFndW10/sm7durp/bt68eR599NH86U9/Svfu3fPzn/88Bx10UJYsWZL33nsvSTJ58uTU1tbW3V544YX87W9/2+yMFRUVSfKZZ2yMww8/PEuWLMnYsWPzwQcfZODAgTnzzDM3e/xPfvKTvPPOO3W3V199davNBgAAALAtEO22km7dun3is9zmz5+flStXpnv37kmSvfbaK8uXL6/3vNra2no/V1RUpG/fvrn66qszb968tGrVKtOnT0/79u3TqVOnLF68OAceeGC92/7779+gOZ966ql69z311FPp0qVLmjdvvtnz+v9zfzwSJkmbNm0yaNCgTJ48OdOmTct9992Xf//735ucobKyMm3atKm7tW7d+jPPDwAAALA98pl2W0m/fv3So0ePnHXWWbn55puzfv36nHfeeTn++ONz5JFHJkm++tWvZsKECbnzzjvTp0+f/Pa3v80LL7yQww47LEkyd+7czJo1KyeffHLatWuXuXPn5s0330y3bt2S/Ofz6S688MLsuuuu+frXv541a9bkmWeeydtvv50RI0Z8pjkvueSS9O7dO2PHjs2gQYMyZ86cTJo0aZPfQvvReXXp0iVDhw7NhAkT8u6772bUqFH1jrnpppvSsWPHHHbYYWnWrFnuueeedOjQIbvttlsj/zQBAAAAdiyutNtKKioq8sc//jFt27bNcccdl379+uVLX/pSpk2bVndM//79c+WVV+ayyy5L7969s2rVqpx99tl1j7dp0yaPP/54TjnllHTp0iWjR4/OxIkT6770Yfjw4bn99tvz61//Oj169Mjxxx+fKVOmNOhKu8MPPzx33313pk6dmkMOOSRXXXVVrrnmmk1+CUXyn7f0Tp8+PR988EG+/OUvZ/jw4bn22mvrHdO6devccMMNOfLII9O7d+8sXbo0M2bMSLNm/nMDAAAA+CwqSh//UDUosw8//DDjxo3LtPW9s247uhh06fhTyz0CAAAAsI1w6RMAAAAAFIxoBwAAAAAFI9oBAAAAQMGIdgAAAABQMKIdAAAAABSMaAcAAAAABSPaAQAAAEDBiHYAAAAAUDCiHQAAAAAUjGgHAAAAAAUj2gEAAABAwYh2AAAAAFAwoh0AAAAAFIxoBwAAAAAFI9oBAAAAQMGIdgAAAABQMKIdAAAAABSMaAcAAAAABSPaAQAAAEDBiHYAAAAAUDCiHQAAAAAUjGgHAAAAAAUj2gEAAABAwYh2AAAAAFAwoh0AAAAAFIxoBwAAAAAFI9oBAAAAQMGIdgAAAABQMC3KPQBszvNj+qeqqqrcYwAAAAA0OVfaAQAAAEDBiHYAAAAAUDCiHQAAAAAUjGgHAAAAAAUj2gEAAABAwYh2AAAAAFAwoh0AAAAAFIxoBwAAAAAFI9oBAAAAQMGIdgAAAABQMKIdAAAAABSMaAcAAAAABSPaAQAAAEDBiHYAAAAAUDCiHQAAAAAUjGgHAAAAAAUj2gEAAABAwYh2AAAAAFAwoh0AAAAAFIxoBwAAAAAFI9oBAAAAQMGIdgAAAABQMKIdAAAAABSMaAcAAAAABSPaAQAAAEDBiHYAAAAAUDCiHQAAAAAUjGgHAAAAAAUj2gEAAABAwYh2AAAAAFAwoh0AAAAAFIxoBwAAAAAFI9oBAAAAQMGIdgAAAABQMKIdAAAAABSMaAcAAAAABSPaAQAAAEDBiHYAAAAAUDCiHQAAAAAUjGgHAAAAAAUj2gEAAABAwYh2AAAAAFAwoh0AAAAAFIxoBwAAAAAFI9oBAAAAQMGIdgAAAABQMKIdAAAAABSMaAcAAAAABSPaAQAAAEDBtCj3APBxpVIpSbJmzZoyTwIAAADwv1dZWZmKiootHiPaUTjvvfdekmTChAllngQAAADgf2/06NGpqqra4jEVpY8ua4KCWLlyZaqrq7No0aK0adOm3OPANmPVqlXZZ5998uqrr6Z169blHge2GXYHGs7eQOPYHWic7XF3XGnHNqlZs2Z57733UlVV9anVGfivtWvXZu3atamsrLQ70AB2BxrO3kDj2B1onB11d3wRBQAAAAAUjGgHAAAAAAUj2lE4lZWVqampSWVlZblHgW2K3YHGsTvQcPYGGsfuQOPsqLvjiygAAAAAoGBcaQcAAAAABSPaAQAAAEDBiHYAAAAAUDCiHQAAAAAUjGhHWdxyyy3Zb7/9UlVVlaOOOip///vft3j8Pffck65du6aqqio9evTIjBkzmmhSKJaG7M7kyZNz7LHHpm3btmnbtm369ev3qbsG26uG/t75yNSpU1NRUZEBAwZs3QGhgBq6NytXrsz555+fjh07prKyMl26dPH/bOyQGro7N998cw466KDstNNOqa6uzsUXX5wPP/ywiaaF8nv88cdz2mmnpVOnTqmoqMj999//qc+ZPXt2Dj/88FRWVubAAw/MlClTtvqc5SDa0eSmTZuWESNGpKamJs8991x69eqV/v3754033tjk8U8//XQGDx6cc845J/PmzcuAAQMyYMCAvPDCC008OZRXQ3dn9uzZGTx4cP7yl79kzpw5qa6uzsknn5zXXnutiSeH8mro7nxk6dKlufTSS3Psscc20aRQHA3dm7Vr1+ZrX/tali5dmnvvvTcvvfRSJk+enL333ruJJ4fyauju3HXXXRk5cmRqamqyYMGC3HHHHZk2bVquuOKKJp4cymf16tXp1atXbrnlls90/JIlS3LqqafmxBNPTG1tbS666KIMHz48Dz/88FaetOlVlEqlUrmHYMdy1FFHpXfv3pk0aVKSZOPGjamurs4Pf/jDjBw58hPHDxo0KKtXr86DDz5Yd99XvvKVHHroobntttuabG4ot4buzsdt2LAhbdu2zaRJk3L22Wdv7XGhMBqzOxs2bMhxxx2X733ve3niiSeycuXKz/S3vrC9aOje3HbbbZkwYUJefPHFtGzZsqnHhcJo6O5ccMEFWbBgQWbNmlV33yWXXJK5c+fmySefbLK5oSgqKioyffr0Lb7L4fLLL89DDz1U70Ke73znO1m5cmVmzpzZBFM2HVfa0aTWrl2bZ599Nv369au7r1mzZunXr1/mzJmzyefMmTOn3vFJ0r9//80eD9ujxuzOx73//vtZt25ddt999601JhROY3fnmmuuSbt27XLOOec0xZhQKI3ZmwceeCB9+vTJ+eefn/bt2+eQQw7Jddddlw0bNjTV2FB2jdmdo48+Os8++2zdW2gXL16cGTNm5JRTTmmSmWFbtCM1ghblHoAdy1tvvZUNGzakffv29e5v3759XnzxxU0+Z8WKFZs8fsWKFVttTiiaxuzOx11++eXp1KnTJ37BwfasMbvz5JNP5o477khtbW0TTAjF05i9Wbx4cf785z/nrLPOyowZM7Jw4cKcd955WbduXWpqappibCi7xuzOd7/73bz11ls55phjUiqVsn79+vzgBz/w9ljYgs01gnfffTcffPBBdtpppzJN9r/nSjuAHcD48eMzderUTJ8+PVVVVeUeBwpr1apVGTJkSCZPnpw999yz3OPANmPjxo1p165dfvWrX+WII47IoEGDMmrUKB9lAp9i9uzZue6663Lrrbfmueeeyx/+8Ic89NBDGTt2bLlHAwrAlXY0qT333DPNmzfP66+/Xu/+119/PR06dNjkczp06NCg42F71Jjd+ciNN96Y8ePH57HHHkvPnj235phQOA3dnUWLFmXp0qU57bTT6u7buHFjkqRFixZ56aWXcsABB2zdoaHMGvM7p2PHjmnZsmWaN29ed1+3bt2yYsWKrF27Nq1atdqqM0MRNGZ3rrzyygwZMiTDhw9PkvTo0SOrV6/Oueeem1GjRqVZM9fZwMdtrhG0adNmu7rKLnGlHU2sVatWOeKII+p90OrGjRsza9as9OnTZ5PP6dOnT73jk+TRRx/d7PGwPWrM7iTJDTfckLFjx2bmzJk58sgjm2JUKJSG7k7Xrl3z/PPPp7a2tu72zW9+s+7byaqrq5tyfCiLxvzO6du3bxYuXFgXuZPkn//8Zzp27CjYscNozO68//77nwhzH8Vv3xkJm7ZDNYISNLGpU6eWKisrS1OmTCnNnz+/dO6555Z222230ooVK0qlUqk0ZMiQ0siRI+uOf+qpp0otWrQo3XjjjaUFCxaUampqSi1btiw9//zz5ToFKIuG7s748eNLrVq1Kt17772l5cuX191WrVpVrlOAsmjo7nzc0KFDS6effnoTTQvF0NC9WbZsWal169alCy64oPTSSy+VHnzwwVK7du1K48aNK9cpQFk0dHdqampKrVu3Lv3+978vLV68uPTII4+UDjjggNLAgQPLdQrQ5FatWlWaN29ead68eaUkpZtuuqk0b9680r/+9a9SqVQqjRw5sjRkyJC64xcvXlzaeeedSz/+8Y9LCxYsKN1yyy2l5s2bl2bOnFmuU9hqvD2WJjdo0KC8+eabueqqq7JixYoceuihmTlzZt0HSS5btqze3zYdffTRueuuuzJ69OhcccUV6dy5c+6///4ccsgh5ToFKIuG7s4vfvGLrF27NmeeeWa916mpqcmYMWOacnQoq4buDtDwvamurs7DDz+ciy++OD179szee++dH/3oR7n88svLdQpQFg3dndGjR6eioiKjR4/Oa6+9lr322iunnXZarr322nKdAjS5Z555JieeeGLdzyNGjEiSDB06NFOmTMny5cuzbNmyusf333//PPTQQ7n44ovz05/+NPvss09uv/329O/fv8ln39oqSiXX3AIAAABAkfhrZQAAAAAoGNEOAAAAAApGtAMAAACAghHtAAAAAKBgRDsAAAAAKBjRDgAAAAAKRrQDAAAAgIIR7QAAAACgYEQ7AAAAACgY0Q4AAAAACka0AwAAAICCEe0AAAAAoGD+D920tCcLtP63AAAAAElFTkSuQmCC\n"
          },
          "metadata": {}
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<h2o.plot._plot_result._MObject at 0x7d9145e83a90>"
            ]
          },
          "metadata": {},
          "execution_count": 54
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 0 Axes>"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "model_ids = [key for key in h2o.ls()['key'] if \"model\" in key.lower()]\n",
        "print(\"Model keys:\", model_ids)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "MaEE_GFrPGBF",
        "outputId": "51f51411-67de-4214-dc1e-2e6ae3859896"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model keys: ['DeepLearning_grid_1_AutoML_1_20250707_91158_model_1', 'DeepLearning_grid_1_AutoML_1_20250707_91158_model_2', 'DeepLearning_grid_3_AutoML_2_20250707_94101_model_1', 'GBM_grid_1_AutoML_1_20250707_91158_model_1', 'GBM_grid_1_AutoML_1_20250707_91158_model_2', 'GBM_grid_1_AutoML_1_20250707_91158_model_3', 'GBM_grid_1_AutoML_1_20250707_91158_model_4', 'GBM_grid_1_AutoML_1_20250707_91158_model_5', 'GBM_grid_2_AutoML_2_20250707_94101_model_1', 'GBM_grid_2_AutoML_2_20250707_94101_model_2', 'GBM_grid_2_AutoML_2_20250707_94101_model_3', 'GBM_grid_2_AutoML_2_20250707_94101_model_4', 'GBM_grid_2_AutoML_2_20250707_94101_model_5', 'StackedEnsemble_AllModels_1_AutoML_1_20250707_91158', 'StackedEnsemble_AllModels_2_AutoML_1_20250707_91158', 'StackedEnsemble_AllModels_3_AutoML_1_20250707_91158', 'XGBoost_grid_1_AutoML_1_20250707_91158_model_1', 'XGBoost_grid_1_AutoML_1_20250707_91158_model_2', 'XGBoost_grid_1_AutoML_1_20250707_91158_model_3', 'XGBoost_grid_1_AutoML_1_20250707_91158_model_4', 'XGBoost_grid_1_AutoML_1_20250707_91158_model_5', 'XGBoost_grid_1_AutoML_1_20250707_91158_model_6', 'XGBoost_grid_1_AutoML_1_20250707_91158_model_7', 'XGBoost_grid_2_AutoML_2_20250707_94101_model_1', 'XGBoost_grid_2_AutoML_2_20250707_94101_model_2', 'XGBoost_grid_2_AutoML_2_20250707_94101_model_3', 'XGBoost_grid_2_AutoML_2_20250707_94101_model_4', 'XGBoost_grid_2_AutoML_2_20250707_94101_model_5', 'XGBoost_grid_2_AutoML_2_20250707_94101_model_6', 'XGBoost_grid_2_AutoML_2_20250707_94101_model_7', 'XGBoost_grid_2_AutoML_2_20250707_94101_model_8', 'levelone_training_StackedEnsemble_AllModels_1_AutoML_1_20250707_91158', 'levelone_training_StackedEnsemble_AllModels_2_AutoML_1_20250707_91158', 'levelone_training_StackedEnsemble_AllModels_3_AutoML_1_20250707_91158', 'metalearner_AUTO_StackedEnsemble_AllModels_1_AutoML_1_20250707_91158', 'metalearner_AUTO_StackedEnsemble_AllModels_2_AutoML_1_20250707_91158', 'metalearner_AUTO_StackedEnsemble_AllModels_3_AutoML_1_20250707_91158', 'modelmetrics_DRF_1_AutoML_1_20250707_91158@8809773276511986292_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_DRF_2_AutoML_2_20250707_94101@1433543472273281404_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_DeepLearning_1_AutoML_1_20250707_91158@3055007165537805416_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex.temporary.sample.58.82%@-9121722699753449683', 'modelmetrics_DeepLearning_1_AutoML_1_20250707_91158@3055007165537805416_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_DeepLearning_2_AutoML_2_20250707_94101@1723428860597539000_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex.temporary.sample.58.82%@-9121722699753449683', 'modelmetrics_DeepLearning_2_AutoML_2_20250707_94101@1723428860597539000_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_DeepLearning_grid_1_AutoML_1_20250707_91158_model_1@931689185444217552_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex.temporary.sample.58.82%@4288903748972694663', 'modelmetrics_DeepLearning_grid_1_AutoML_1_20250707_91158_model_1@931689185444217552_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_DeepLearning_grid_1_AutoML_1_20250707_91158_model_2@8385261208438086952_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex.temporary.sample.58.82%@5921418155906320313', 'modelmetrics_DeepLearning_grid_1_AutoML_1_20250707_91158_model_2@8385261208438086952_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_DeepLearning_grid_3_AutoML_2_20250707_94101_model_1@7066114228727102044_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex.temporary.sample.58.82%@4288903748972694663', 'modelmetrics_DeepLearning_grid_3_AutoML_2_20250707_94101_model_1@7066114228727102044_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_GBM_10_AutoML_2_20250707_94101@-7823252752129038832_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_GBM_1_AutoML_1_20250707_91158@-1289769029863402260_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_GBM_2_AutoML_1_20250707_91158@-3904433776563313512_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_GBM_3_AutoML_1_20250707_91158@876239198614716560_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_GBM_4_AutoML_1_20250707_91158@4594879595482419456_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_GBM_5_AutoML_1_20250707_91158@-8847431910127972644_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_GBM_6_AutoML_2_20250707_94101@3184767699240190752_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_GBM_7_AutoML_2_20250707_94101@7663214038365827788_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_GBM_8_AutoML_2_20250707_94101@-3820576024255451452_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_GBM_9_AutoML_2_20250707_94101@3725757422776423988_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_GBM_grid_1_AutoML_1_20250707_91158_model_1@-5590630960911445216_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_GBM_grid_1_AutoML_1_20250707_91158_model_2@1580881568719762480_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_GBM_grid_1_AutoML_1_20250707_91158_model_3@-7536422631997967240_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_GBM_grid_1_AutoML_1_20250707_91158_model_4@-9165818860075557052_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_GBM_grid_1_AutoML_1_20250707_91158_model_5@5072946998659960104_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_GBM_grid_2_AutoML_2_20250707_94101_model_1@-4830574072262078124_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_GBM_grid_2_AutoML_2_20250707_94101_model_2@8179405707021656676_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_GBM_grid_2_AutoML_2_20250707_94101_model_3@-7879292593258814804_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_GBM_grid_2_AutoML_2_20250707_94101_model_4@4476709469186623384_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_GBM_grid_2_AutoML_2_20250707_94101_model_5@-698797995257808204_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_GLM_1_AutoML_1_20250707_91158@6921737403501183208_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_GLM_2_AutoML_2_20250707_94101@-831640194818126448_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_StackedEnsemble_AllModels_1_AutoML_1_20250707_91158@-3683039356614819396_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex.temporary.sample.58.82%@2260175735545383275', 'modelmetrics_StackedEnsemble_AllModels_2_AutoML_1_20250707_91158@3606749139215043084_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex.temporary.sample.58.82%@6425296141993263465', 'modelmetrics_StackedEnsemble_AllModels_3_AutoML_1_20250707_91158@-3587721952433344660_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex.temporary.sample.58.82%@419931511102799360', 'modelmetrics_StackedEnsemble_AllModels_3_AutoML_1_20250707_91158@-3587721952433344660_on_Key_Frame__upload_99b751a6716a3daf5d5a2106e55e440b.hex@-5158700594373557672', 'modelmetrics_StackedEnsemble_AllModels_3_AutoML_1_20250707_91158@-3587721952433344660_on_Key_Frame__upload_9eed3d013ad823f1d5ab7bd469104502.hex@-5158700594373557672', 'modelmetrics_StackedEnsemble_BestOfFamily_1_AutoML_1_20250707_91158@2705715140868697116_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex.temporary.sample.58.82%@-8872661092438102612', 'modelmetrics_StackedEnsemble_BestOfFamily_2_AutoML_1_20250707_91158@-8779655101252668740_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex.temporary.sample.58.82%@-196771992635658664', 'modelmetrics_StackedEnsemble_BestOfFamily_3_AutoML_1_20250707_91158@-649844829921040288_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex.temporary.sample.58.82%@-1421552436020262500', 'modelmetrics_StackedEnsemble_BestOfFamily_4_AutoML_1_20250707_91158@4297155048529344344_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex.temporary.sample.58.82%@-29231218504468640', 'modelmetrics_StackedEnsemble_BestOfFamily_8_AutoML_2_20250707_94101@-2320526121880729856_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex.temporary.sample.58.82%@-29231218504468640', 'modelmetrics_XGBoost_1_AutoML_1_20250707_91158@-5689558933265923240_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_XGBoost_2_AutoML_1_20250707_91158@6899590150996185980_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_XGBoost_3_AutoML_1_20250707_91158@-38798446915869796_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_XGBoost_4_AutoML_2_20250707_94101@-3949112535036441212_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_XGBoost_5_AutoML_2_20250707_94101@-4614740548366073432_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_XGBoost_6_AutoML_2_20250707_94101@-6860740851757410616_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_1_AutoML_1_20250707_91158_model_1@3578118541722759368_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_1_AutoML_1_20250707_91158_model_2@6434860691201655360_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_1_AutoML_1_20250707_91158_model_3@6747015288251156580_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_1_AutoML_1_20250707_91158_model_4@-1924558957737064816_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_1_AutoML_1_20250707_91158_model_5@-4846793152680732972_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_1_AutoML_1_20250707_91158_model_6@-3434113081075775852_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_1_AutoML_1_20250707_91158_model_7@-6719645223920875364_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_2_AutoML_2_20250707_94101_model_1@1553105980929784564_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_2_AutoML_2_20250707_94101_model_2@-3353140368847145620_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_2_AutoML_2_20250707_94101_model_3@5759467123673845136_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_2_AutoML_2_20250707_94101_model_4@5514389441462498492_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_2_AutoML_2_20250707_94101_model_5@-8613103863312572320_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_2_AutoML_2_20250707_94101_model_6@3899454868309813500_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_2_AutoML_2_20250707_94101_model_7@-488271450036587176_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_XGBoost_grid_2_AutoML_2_20250707_94101_model_8@1964826731792511036_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_XRT_1_AutoML_1_20250707_91158@-7789801476782203664_on_AutoML_1_20250707_91158_training_Key_Frame__upload_ac0ee102296bc9e6aa4f16d9fd174e44.hex@5742864181011626912', 'modelmetrics_XRT_2_AutoML_2_20250707_94101@5904910436468322428_on_AutoML_2_20250707_94101_training_Key_Frame__upload_b5105239135e916a605bc013eee4851.hex@5742864181011626912', 'modelmetrics_metalearner_AUTO_StackedEnsemble_AllModels_1_AutoML_1_20250707_91158@-5294510782993423616_on_levelone_training_StackedEnsemble_AllModels_1_AutoML_1_20250707_91158@-7183972079879764516', 'modelmetrics_metalearner_AUTO_StackedEnsemble_AllModels_2_AutoML_1_20250707_91158@3827321718600575648_on_levelone_training_StackedEnsemble_AllModels_2_AutoML_1_20250707_91158@8550362939277114556', 'modelmetrics_metalearner_AUTO_StackedEnsemble_AllModels_3_AutoML_1_20250707_91158@1206798189852945196_on_levelone_training_StackedEnsemble_AllModels_3_AutoML_1_20250707_91158@6113654796526636082', 'modelmetrics_metalearner_AUTO_StackedEnsemble_BestOfFamily_1_AutoML_1_20250707_91158@5421700551273938488_on_levelone_training_StackedEnsemble_BestOfFamily_1_AutoML_1_20250707_91158@242762089531443664', 'modelmetrics_metalearner_AUTO_StackedEnsemble_BestOfFamily_2_AutoML_1_20250707_91158@-1670327779798875580_on_levelone_training_StackedEnsemble_BestOfFamily_2_AutoML_1_20250707_91158@-5074465575612763297', 'modelmetrics_metalearner_AUTO_StackedEnsemble_BestOfFamily_3_AutoML_1_20250707_91158@945330412307429220_on_levelone_training_StackedEnsemble_BestOfFamily_3_AutoML_1_20250707_91158@356023308171934172', 'modelmetrics_metalearner_AUTO_StackedEnsemble_BestOfFamily_4_AutoML_1_20250707_91158@-7910517244431495496_on_levelone_training_StackedEnsemble_BestOfFamily_4_AutoML_1_20250707_91158@7808240451217754928', 'modelmetrics_metalearner_AUTO_StackedEnsemble_BestOfFamily_8_AutoML_2_20250707_94101@-650364832519364528_on_levelone_training_StackedEnsemble_BestOfFamily_8_AutoML_2_20250707_94101@-4926499110542062384', 'transformation_8095_StackedEnsemble_AllModels_3_AutoML_1_20250707_91158_on_Key_Frame__upload_9eed3d013ad823f1d5ab7bd469104502.hex']\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.11/dist-packages/h2o/frame.py:1983: H2ODependencyWarning: Converting H2O frame to pandas dataframe using single-thread.  For faster conversion using multi-thread, install polars and pyarrow and use it as pandas_df = h2o_df.as_data_frame(use_multi_thread=True)\n",
            "\n",
            "  warnings.warn(\"Converting H2O frame to pandas dataframe using single-thread.  For faster conversion using\"\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "model_ids = h2o.ls()['key']\n",
        "print(model_ids)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "GSVqNIGtZtxj",
        "outputId": "d08bdca1-a830-4fa1-c7e3-75d7159d44cc"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "0            AutoMLSession_Project_1@@median_house_value\n",
            "1      AutoML_1_20250707_91158_training_Key_Frame__up...\n",
            "2      AutoML_2_20250707_94101_training_Key_Frame__up...\n",
            "3                          DRF_1_AutoML_1_20250707_91158\n",
            "4                          DRF_2_AutoML_2_20250707_94101\n",
            "                             ...                        \n",
            "196    modelmetrics_metalearner_AUTO_StackedEnsemble_...\n",
            "197    modelmetrics_metalearner_AUTO_StackedEnsemble_...\n",
            "198    modelmetrics_metalearner_AUTO_StackedEnsemble_...\n",
            "199                                        py_4_sid_94bd\n",
            "200    transformation_8095_StackedEnsemble_AllModels_...\n",
            "Name: key, Length: 201, dtype: object\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.11/dist-packages/h2o/frame.py:1983: H2ODependencyWarning: Converting H2O frame to pandas dataframe using single-thread.  For faster conversion using multi-thread, install polars and pyarrow and use it as pandas_df = h2o_df.as_data_frame(use_multi_thread=True)\n",
            "\n",
            "  warnings.warn(\"Converting H2O frame to pandas dataframe using single-thread.  For faster conversion using\"\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "model_path = h2o.save_model(model = model, path ='/content', force = True)"
      ],
      "metadata": {
        "id": "IBWh0BHkaRW-"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}