{ "cells": [ { "cell_type": "markdown", "id": "6c4d4faf-ab84-4a72-a80e-535b211747cd", "metadata": { "tags": [] }, "source": [ "# Original Feature Importance Explainer for MOJO Models (Naive Shapley method) Demo\n", "\n", "This example demonstrates how to interpret a **Driverless AI MOJO** model using\n", "the H2O Sonar library and retrieve the data and plot with original features importances." ] }, { "cell_type": "code", "execution_count": 1, "id": "69f414e3-bc88-478b-bed5-890352b1041a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import os\n", "import logging\n", "\n", "import datatable\n", "import daimojo\n", "import webbrowser\n", "\n", "from h2o_sonar import interpret\n", "from h2o_sonar.lib.api import commons\n", "from h2o_sonar.lib.api import explainers\n", "from h2o_sonar.explainers import fi_naive_shapley_explainer as explainer\n", "from h2o_sonar.lib.api.models import ModelApi" ] }, { "cell_type": "code", "execution_count": 2, "id": "bbe0ca51", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'id': 'h2o_sonar.explainers.fi_naive_shapley_explainer.NaiveShapleyMojoFeatureImportanceExplainer',\n", " 'name': 'NaiveShapleyMojoFeatureImportanceExplainer',\n", " 'display_name': 'Shapley Values for Original Features of MOJO Models (Naive Method)',\n", " 'description': 'Shapley values for original features of (Driverless AI) MOJO models are approximated from the accompanying Shapley values for transformed features with the Naive Shapley method. This method makes the assumption that input features to a transformer are independent. For example, if the transformed feature, feature1_feature2, has a Shapley value of 0.5, then the Shapley value of the original features feature1 and feature2 will be 0.25 each.',\n", " 'model_types': ['iid'],\n", " 'can_explain': ['regression', 'binomial', 'multinomial'],\n", " 'explanation_scopes': ['global_scope', 'local_scope'],\n", " 'explanations': [{'explanation_type': 'global-feature-importance',\n", " 'name': 'GlobalFeatImpExplanation',\n", " 'category': None,\n", " 'scope': 'global',\n", " 'has_local': None,\n", " 'formats': []},\n", " {'explanation_type': 'local-feature-importance',\n", " 'name': 'LocalFeatImpExplanation',\n", " 'category': None,\n", " 'scope': 'local',\n", " 'has_local': None,\n", " 'formats': []}],\n", " 'parameters': [{'name': 'sample_size',\n", " 'description': 'Sample size.',\n", " 'comment': '',\n", " 'type': 'int',\n", " 'val': 100000,\n", " 'predefined': [],\n", " 'tags': [],\n", " 'min_': 0.0,\n", " 'max_': 0.0,\n", " 'category': ''},\n", " {'name': 'fast_approx_contribs',\n", " 'description': 'Speed up predictions with fast contributions predictions approximation.',\n", " 'comment': '',\n", " 'type': 'bool',\n", " 'val': True,\n", " 'predefined': [],\n", " 'tags': [],\n", " 'min_': 0.0,\n", " 'max_': 0.0,\n", " 'category': ''},\n", " {'name': 'leakage_warning_threshold',\n", " 'description': 'The threshold above which to report a potentially detected feature importance leak problem.',\n", " 'comment': '',\n", " 'type': 'float',\n", " 'val': 0.95,\n", " 'predefined': [],\n", " 'tags': [],\n", " 'min_': 0.0,\n", " 'max_': 0.0,\n", " 'category': ''}],\n", " 'keywords': ['run-by-default',\n", " 'explains-original-feature-importance',\n", " 'is_fast',\n", " 'h2o-sonar']}" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# explainer description\n", "interpret.describe_explainer(explainer.NaiveShapleyMojoFeatureImportanceExplainer)" ] }, { "cell_type": "markdown", "id": "90d401d2-14cd-4686-982f-3cac9e9f5eb7", "metadata": { "tags": [] }, "source": [ "## Interpretation" ] }, { "cell_type": "code", "execution_count": 10, "id": "15201d08-873b-45c3-82ad-052266f0526c", "metadata": {}, "outputs": [], "source": [ "# dataset\n", "dataset_path = \"../../data/creditcard.csv\"\n", "target_col = \"default payment next month\"\n", "\n", "# model\n", "mojo_path = \"../../data/models/creditcard-binomial.mojo\"\n", "mojo_model = daimojo.model(mojo_path)\n", "model = ModelApi().create_model(\n", " model_src=mojo_model,\n", " target_col=target_col,\n", " used_features=list(mojo_model.feature_names),\n", ")\n", "\n", "# results\n", "results_location = \"./results\"\n", "os.makedirs(results_location, exist_ok=True)" ] }, { "cell_type": "code", "execution_count": 11, "id": "0ba8f0aa-2e0e-4a0a-93ab-77ce9e968fa0", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "h2o_sonar.explainers.fi_naive_shapley_explainer.NaiveShapleyMojoFeatureImportanceExplainer: progress 20.0%\n", "h2o_sonar.explainers.fi_naive_shapley_explainer.NaiveShapleyMojoFeatureImportanceExplainer: progress 90.0%\n", "h2o_sonar.explainers.fi_naive_shapley_explainer.NaiveShapleyMojoFeatureImportanceExplainer: progress 90.0%\n" ] }, { "data": { "image/png": "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TZuGgQMHIjIyErVr18a8efPg6OiIuLi4fL+TlZWFV199FePGjUPVqlXNqjARERER5VaopC4zMxP79u1DSEjI/wrQahESEoJdu3bl+73x48ejQoUK6N+/f4HiZGRkID093WQiIiIiovwVKqm7cuUKsrKy4OnpaTLf09MTycnJeX5nx44diI2NxZdfflngODExMXB1dTVOPj4+hakmERER0RPHqk+/3rx5E3369MGXX36JcuXKFfh7o0aNQlpamnG6ePGiFWtJREREVPrZFGblcuXKQafTISUlxWR+SkoKvLy8cq1/5swZnD9/Hs8995xxnsFgeBDYxgYnT55EtWrVcn1Pr9dDr9cXpmpERERET7RCnamzs7NDo0aNkJCQYJxnMBiQkJCAZs2a5Vq/Zs2aOHz4MBITE43T888/j7Zt2yIxMZGXVYmIiIgspFBn6gAgKioKERERCA4ORpMmTTBjxgzcvn0bkZGRAIDw8HBUqlQJMTExsLe3R926dU2+7+bmBgC55hMRERFR0RU6qevRowcuX76MMWPGIDk5GUFBQdiwYYPx4YmkpCRotXxRBREREZGSNCIixV2Jx0lPT4erqyvS0tLg4uJiskz2BBa6PE2TU5aqGhEREZFVPSoPehhPqRERERGpAJM6IiIiIhVgUkdERESkAkzqiIiIiFSASR0RERGRCjCpIyIiIlIBJnVEREREKsCkjoiIiEgFmNQRERERqQCTOiIiIiIVYFJHREREpAJM6oiIiIhUgEkdERERkQowqSMiIiJSASZ1RERERCrApI6IiIhIBZjUEREREakAkzoiIiIiFWBSR0RERKQCTOqIiIiIVIBJHREREZEKMKkjIiIiUgEmdUREREQqwKSOiIiISAWY1BERERGpAJM6IiIiIhVgUkdERESkAkzqiIiIiFSASR0RERGRCjCpIyIiIlIBJnVEREREKsCkjoiIiEgFmNQRERERqQCTOiIiIiIVYFJHREREpAJM6oiIiIhUgEkdERERkQowqSMiIiJSASZ1RERERCrApI6IiIhIBZjUEREREakAkzoiIiIiFWBSR0RERKQCTOqIiIiIVIBJHREREZEKMKkjIiIiUgEmdUREREQqwKSOiIiISAWY1BERERGpAJM6IiIiIhVgUkdERESkAkzqiIiIiFSgSEndnDlz4OfnB3t7ezRt2hR79uzJd91Vq1YhODgYbm5uKFOmDIKCgrBkyZIiV5iIiIiIcit0UrdixQpERUUhOjoa+/fvR/369REaGorU1NQ81y9btizef/997Nq1C4cOHUJkZCQiIyOxceNGsytPRERERA9oREQK84WmTZuicePGmD17NgDAYDDAx8cHb775JkaOHFmgMho2bIjOnTtjwoQJeS7PyMhARkaG8XN6ejp8fHyQlpYGFxcXk3VlT2Bhqg8A0DQ5VejvEBERERWH9PR0uLq65pkHPaxQZ+oyMzOxb98+hISE/K8ArRYhISHYtWvXY78vIkhISMDJkyfxzDPP5LteTEwMXF1djZOPj09hqklERET0xClUUnflyhVkZWXB09PTZL6npyeSk5Pz/V5aWhqcnJxgZ2eHzp0747PPPkOHDh3yXX/UqFFIS0szThcvXixMNYmIiIieODZKBHF2dkZiYiJu3bqFhIQEREVFoWrVqmjTpk2e6+v1euj1eiWqRkRERKQKhUrqypUrB51Oh5SUFJP5KSkp8PLyyvd7Wq0WAQEBAICgoCAcP34cMTEx+SZ1RERERFQ4hbr8amdnh0aNGiEhIcE4z2AwICEhAc2aNStwOQaDweRBCCIiIiIyT6Evv0ZFRSEiIgLBwcFo0qQJZsyYgdu3byMyMhIAEB4ejkqVKiEmJgbAg4cegoODUa1aNWRkZOCnn37CkiVLMHfuXMu2hIiIiOgJVuikrkePHrh8+TLGjBmD5ORkBAUFYcOGDcaHJ5KSkqDV/u8E4O3btzFkyBD89ddfcHBwQM2aNfHVV1+hR48elmsFERER0ROu0OPUFYdHjc/CceqIiIhIzawyTh0RERERlUxM6oiIiIhUgEkdERERkQowqSMiIiJSASZ1RERERCrApI6IiIhIBZjUEREREakAkzoiIiIiFWBSR0RERKQCTOqIiIiIVIBJHREREZEKMKkjIiIiUgEmdUREREQqwKSOiIiISAWY1BERERGpAJM6IiIiIhVgUkdERESkAkzqiIiIiFSASR0RERGRCjCpIyIiIlIBJnVEREREKsCkjoiIiEgFmNQRERERqQCTOiIiIiIVYFJHREREpAJM6oiIiIhUgEkdERERkQowqSMiIiJSASZ1RERERCrApI6IiIhIBZjUEREREakAkzoiIiIiFWBSR0RERKQCTOqIiIiIVIBJHREREZEKMKkjIiIiUgEmdUREREQqwKSOiIiISAWY1BERERGpAJM6IiIiIhVgUkdERESkAkzqiIiIiFSASR0RERGRCjCpIyIiIlIBJnVEREREKsCkjoiIiEgFmNQRERERqQCTOiIiIiIVYFJHREREpAJM6oiIiIhUgEkdERERkQoUKambM2cO/Pz8YG9vj6ZNm2LPnj35rvvll1+iVatWcHd3h7u7O0JCQh65PhEREREVXqGTuhUrViAqKgrR0dHYv38/6tevj9DQUKSmpua5/tatWxEWFoYtW7Zg165d8PHxwX/+8x/8/fffZleeiIiIiB7QiIgU5gtNmzZF48aNMXv2bACAwWCAj48P3nzzTYwcOfKx38/KyoK7uztmz56N8PDwAsVMT0+Hq6sr0tLS4OLiYrJM9gQWpvoAAE2TU4X+DhEREVFxeFQe9LBCnanLzMzEvn37EBIS8r8CtFqEhIRg165dBSrjzp07uHfvHsqWLZvvOhkZGUhPTzeZiIiIiCh/hUrqrly5gqysLHh6eprM9/T0RHJycoHKGDFiBCpWrGiSGOYUExMDV1dX4+Tj41OYahIRERE9cRR9+nXSpElYvnw5vv/+e9jb2+e73qhRo5CWlmacLl68qGAtiYiIiEofm8KsXK5cOeh0OqSkpJjMT0lJgZeX1yO/O2XKFEyaNAmbN29GvXr1HrmuXq+HXq8vTNWIiIiInmiFOlNnZ2eHRo0aISEhwTjPYDAgISEBzZo1y/d7n3zyCSZMmIANGzYgODi46LUlIiIiojwV6kwdAERFRSEiIgLBwcFo0qQJZsyYgdu3byMyMhIAEB4ejkqVKiEmJgYAMHnyZIwZMwZLly6Fn5+f8d47JycnODk5WbApRERERE+uQid1PXr0wOXLlzFmzBgkJycjKCgIGzZsMD48kZSUBK32fycA586di8zMTHTv3t2knOjoaIwdO9a82hMRERERgCKMU1ccOE4dERERPamsMk4dEREREZVMTOqIiIiIVIBJHREREZEKMKkjIiIiUgEmdUREREQqwKSOiIiISAWY1BERERGpQKEHH36ScUw8IiIiKql4po6IiIhIBZjUEREREakAkzoiIiIiFWBSR0RERKQCTOqIiIiIVIBJHREREZEKMKkjIiIiUgEmdUREREQqwKSOiIiISAWY1BERERGpAJM6IiIiIhVgUkdERESkAkzqiIiIiFSASR0RERGRCjCpIyIiIlIBJnVEREREKsCkjoiIiEgFmNQRERERqQCTOiIiIiIVYFJHREREpAI2xV0Byk32BBb6O5omp6xQEyIiIioteKaOiIiISAWY1BERERGpAJM6IiIiIhVgUkdERESkAkzqiIiIiFSASR0RERGRCjCpIyIiIlIBJnVEREREKsCkjoiIiEgFmNQRERERqQBfE/YE4+vIiIiI1INn6oiIiIhUgEkdERERkQowqSMiIiJSASZ1RERERCrApI6IiIhIBZjUEREREakAkzoiIiIiFWBSR0RERKQCTOqIiIiIVIBvlCCrK8qbKwC+vYKIiKgweKaOiIiISAWKlNTNmTMHfn5+sLe3R9OmTbFnz5581z169Ci6desGPz8/aDQazJgxo6h1JSIiIqJ8FDqpW7FiBaKiohAdHY39+/ejfv36CA0NRWpqap7r37lzB1WrVsWkSZPg5eVldoWJiIiIKLdCJ3XTpk3DwIEDERkZidq1a2PevHlwdHREXFxcnus3btwYn376KXr27Am9Xm92hYmIiIgot0IldZmZmdi3bx9CQkL+V4BWi5CQEOzatctilcrIyEB6errJRERERET5K1RSd+XKFWRlZcHT09NkvqenJ5KTky1WqZiYGLi6uhonHx8fi5VNREREpEYl8unXUaNGIS0tzThdvHixuKtEREREVKIVapy6cuXKQafTISUlxWR+SkqKRR+C0Ov1vP+OiIiIqBAKdabOzs4OjRo1QkJCgnGewWBAQkICmjVrZvHKEREREVHBFPqNElFRUYiIiEBwcDCaNGmCGTNm4Pbt24iMjAQAhIeHo1KlSoiJiQHw4OGKY8eOGf//77//RmJiIpycnBAQEGDBphARERE9uQqd1PXo0QOXL1/GmDFjkJycjKCgIGzYsMH48ERSUhK02v+dAPznn3/QoEED4+cpU6ZgypQpaN26NbZu3Wp+C4iIiIioaO9+feONN/DGG2/kuSxnoubn5wcRKUoYIiIiIiqgEvn0KxEREREVDpM6IiIiIhUo0uVXopJK9gQW+juaJqesUBMiIiJl8UwdERERkQowqSMiIiJSASZ1RERERCrApI6IiIhIBZjUEREREakAkzoiIiIiFWBSR0RERKQCTOqIiIiIVIBJHREREZEKMKkjIiIiUgEmdUREREQqwKSOiIiISAWY1BERERGpAJM6IiIi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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "interpretation = interpret.run_interpretation(\n", " dataset=dataset_path,\n", " model=model,\n", " target_col=target_col,\n", " results_location=results_location,\n", " explainers=[explainer.NaiveShapleyMojoFeatureImportanceExplainer.explainer_id()],\n", " log_level=logging.INFO,\n", ")" ] }, { "cell_type": "markdown", "id": "ff9df4be-d4da-44db-a479-7d8d7f45c29d", "metadata": { "tags": [] }, "source": [ "## Explainer Result" ] }, { "cell_type": "code", "execution_count": 12, "id": "25556ca5-8239-4201-8a23-1ace2b3a46d4", "metadata": { "tags": [] }, "outputs": [], "source": [ "# retrieve the result\n", "result = interpretation.get_explainer_result(\n", " explainer.NaiveShapleyMojoFeatureImportanceExplainer.explainer_id()\n", ")" ] }, { "cell_type": "code", "execution_count": 13, "id": "7b321906-a0d8-4f37-b450-62e9c43b3af9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# open interpretation HTML report in web browser\n", "webbrowser.open(interpretation.result.get_html_report_location())" ] }, { "cell_type": "code", "execution_count": 14, "id": "43c0bfe4-654d-4d46-89a5-7a85e8fb01c0", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'id': 'h2o_sonar.explainers.fi_naive_shapley_explainer.NaiveShapleyMojoFeatureImportanceExplainer',\n", " 'name': 'NaiveShapleyMojoFeatureImportanceExplainer',\n", " 'display_name': 'Shapley Values for Original Features of MOJO Models (Naive Method)',\n", " 'description': 'Shapley values for original features of (Driverless AI) MOJO models are approximated from the accompanying Shapley values for transformed features with the Naive Shapley method. This method makes the assumption that input features to a transformer are independent. For example, if the transformed feature, feature1_feature2, has a Shapley value of 0.5, then the Shapley value of the original features feature1 and feature2 will be 0.25 each.',\n", " 'model_types': ['iid'],\n", " 'can_explain': ['regression', 'binomial', 'multinomial'],\n", " 'explanation_scopes': ['global_scope', 'local_scope'],\n", " 'explanations': [{'explanation_type': 'global-feature-importance',\n", " 'name': 'Shapley Values for Original Features of MOJO Models (Naive Method)',\n", " 'category': 'DAI MODEL',\n", " 'scope': 'global',\n", " 'has_local': 'local-feature-importance',\n", " 'formats': ['application/vnd.h2oai.json+datatable.jay',\n", " 'application/vnd.h2oai.json+csv',\n", " 'application/json']},\n", " {'explanation_type': 'local-feature-importance',\n", " 'name': 'Shapley Values for Original Features of MOJO Models (Naive Method)',\n", " 'category': 'DAI MODEL',\n", " 'scope': 'local',\n", " 'has_local': None,\n", " 'formats': ['application/vnd.h2oai.json+datatable.jay']},\n", " {'explanation_type': 'global-html-fragment',\n", " 'name': 'Shapley Values for Original Features of MOJO Models (Naive Method)',\n", " 'category': 'DAI MODEL',\n", " 'scope': 'global',\n", " 'has_local': None,\n", " 'formats': ['text/html']}],\n", " 'parameters': [{'name': 'sample_size',\n", " 'description': 'Sample size.',\n", " 'comment': '',\n", " 'type': 'int',\n", " 'val': 100000,\n", " 'predefined': [],\n", " 'tags': [],\n", " 'min_': 0.0,\n", " 'max_': 0.0,\n", " 'category': ''},\n", " {'name': 'fast_approx_contribs',\n", " 'description': 'Speed up predictions with fast contributions predictions approximation.',\n", " 'comment': '',\n", " 'type': 'bool',\n", " 'val': True,\n", " 'predefined': [],\n", " 'tags': [],\n", " 'min_': 0.0,\n", " 'max_': 0.0,\n", " 'category': ''}],\n", " 'keywords': ['run-by-default',\n", " 'explains-original-feature-importance',\n", " 'is_fast',\n", " 'h2o-sonar']}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# summary\n", "result.summary()" ] }, { "cell_type": "code", "execution_count": 15, "id": "f08239e0-9a1e-436b-ad50-cbf057ec90ae", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'sample_size': 100000, 'fast_approx_contribs': True}" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# parameters\n", "result.params()" ] }, { "cell_type": "markdown", "id": "490d132b-b7e2-48a2-8ec4-dbd71886edf9", "metadata": { "tags": [] }, "source": [ "### Display Data" ] }, { "cell_type": "code", "execution_count": 16, "id": "2aa6274e-79d5-49b1-b29a-2263db5cb8a8", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
featureimportance
▪▪▪▪▪▪▪▪▪▪▪▪
0PAY_00.484314
1PAY_20.177288
2LIMIT_BAL0.14293
3PAY_AMT40.125988
4PAY_AMT20.109839
5BILL_AMT10.0856685
6PAY_30.0460469
7PAY_AMT30.0405643
8PAY_60.035129
9BILL_AMT20.0307533
10PAY_40.0292232
11BILL_AMT60.0230935
12PAY_50.0203799
13PAY_AMT10.014774
14EDUCATION0.00983341
15AGE0.00831316
16MARRIAGE0.00725285
17PAY_AMT60.00588243
18PAY_AMT50.00541516
19BILL_AMT50.00464642
20BILL_AMT40.00144066
21BILL_AMT30.000818275
\n", " \n", "
\n" ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.data()" ] }, { "cell_type": "markdown", "id": "df8a083b-3b88-4349-bb63-28551c24cc4f", "metadata": {}, "source": [ "### Plot Feature Importance Data" ] }, { "cell_type": "code", "execution_count": 17, "id": "5a9d8262-574e-4073-a282-567d4fd1209c", "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result.plot()" ] }, { "cell_type": "markdown", "id": "a493b092-6236-419f-906c-16d52c47674f", "metadata": {}, "source": [ "### Save Explainer Log and Data" ] }, { "cell_type": "code", "execution_count": 18, "id": "7c638a2c-6b01-4228-aa0f-93fd8dd7feab", "metadata": {}, "outputs": [], "source": [ "# save the explainer log\n", "log_file_path = \"./feature-importance-demo.log\"\n", "result.log(path=log_file_path)" ] }, { "cell_type": "code", "execution_count": 19, "id": "f5d91240-09ff-4893-b652-b0259a8f222a", "metadata": {}, "outputs": [], "source": [ "!cat $log_file_path" ] }, { "cell_type": "code", "execution_count": 20, "id": "da4e2b28-96d7-440e-bfea-41cb694a52d4", "metadata": {}, "outputs": [], "source": [ "# save the explainer data\n", "result.zip(file_path=\"./feature-importance-demo-archive.zip\")" ] }, { "cell_type": "code", "execution_count": 21, "id": "c0540819-f896-481a-b470-b9d53a243b0a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Archive: feature-importance-demo-archive.zip\n", " Length Date Time Name\n", "--------- ---------- ----- ----\n", " 2991 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/result_descriptor.json\n", " 1762120 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/work/shapley.orig.feat.bin\n", " 1742542 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/work/shapley_formatted_orig_feat.zip\n", " 4693127 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/work/shapley.orig.feat.csv\n", " 40216 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/work/y_hat.bin\n", " 110 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_html_fragment/text_html.meta\n", " 378 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_html_fragment/text_html/explanation.html\n", " 24441 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_html_fragment/text_html/fi-class-0.png\n", " 201 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/local_feature_importance/application_vnd_h2oai_json_datatable_jay.meta\n", " 1762120 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/local_feature_importance/application_vnd_h2oai_json_datatable_jay/feature_importance_class_0.jay\n", " 831 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/local_feature_importance/application_vnd_h2oai_json_datatable_jay/explanation.json\n", " 40216 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/local_feature_importance/application_vnd_h2oai_json_datatable_jay/y_hat.bin\n", " 2 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/model_problems/problems_and_actions.json\n", " 0 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/log/explainer_run_6b2f1f72-b743-4ffd-84ec-b2f8383153ca.log\n", " 143 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_feature_importance/application_json.meta\n", " 163 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_feature_importance/application_vnd_h2oai_json_csv.meta\n", " 185 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_feature_importance/application_vnd_h2oai_json_datatable_jay.meta\n", " 880 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_feature_importance/application_vnd_h2oai_json_datatable_jay/feature_importance_class_0.jay\n", " 1245 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_feature_importance/application_vnd_h2oai_json_datatable_jay/explanation.json\n", " 1593 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_feature_importance/application_json/feature_importance_class_0.json\n", " 578 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_feature_importance/application_json/explanation.json\n", " 726 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_feature_importance/application_vnd_h2oai_json_csv/feature_importance_class_0.csv\n", " 577 2023-03-12 23:02 explainer_h2o_sonar_explainers_fi_naive_shapley_explainer_NaiveShapleyMojoFeatureImportanceExplainer_6b2f1f72-b743-4ffd-84ec-b2f8383153ca/global_feature_importance/application_vnd_h2oai_json_csv/explanation.json\n", "--------- -------\n", " 10075385 23 files\n" ] } ], "source": [ "!unzip -l feature-importance-demo-archive.zip" ] }, { "cell_type": "code", "execution_count": null, "id": "72ae2b2f-5817-4ccc-a7d0-3cbc70d3eaa5", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "h2o-sonar", "language": "python", "name": "h2o-sonar" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }