{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "Tce3stUlHN0L" }, "source": [ "##### Copyright 2020 The TensorFlow Authors." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2022-04-27T09:07:43.037744Z", "iopub.status.busy": "2022-04-27T09:07:43.037276Z", "iopub.status.idle": "2022-04-27T09:07:43.040920Z", "shell.execute_reply": "2022-04-27T09:07:43.040475Z" }, "id": "tuOe1ymfHZPu" }, "outputs": [], "source": [ "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License." ] }, { "cell_type": "markdown", "metadata": { "id": "23R0Z9RojXYW" }, "source": [ "# Scikit-Learn Model Card Toolkit Demo\n" ] }, { "cell_type": "markdown", "metadata": { "id": "MfBg1C5NB3X0" }, "source": [ "\n", " \n", " \n", " \n", " \n", "
\n", " View on TensorFlow.org\n", " \n", " Run in Google Colab\n", " \n", " View on GitHub\n", " \n", " Download notebook\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "A5epNF_aiYj0" }, "source": [ "## Background\n", "This notebook demonstrates how to generate a model card using the Model Card Toolkit with a scikit-learn model in a Jupyter/Colab environment. You can learn more about model cards at [https://modelcards.withgoogle.com/about](https://modelcards.withgoogle.com/about).\n", "\n", "## Setup\n", "We first need to install and import the necessary packages.\n", "\n", "### Upgrade to Pip 20.2 and Install Packages" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:43.044075Z", "iopub.status.busy": "2022-04-27T09:07:43.043707Z", "iopub.status.idle": "2022-04-27T09:07:49.048715Z", "shell.execute_reply": "2022-04-27T09:07:49.048111Z" }, "id": "1OiOQJDPiYj3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pip==21.3 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (21.3)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33mWARNING: You are using pip version 21.3; however, version 22.0.4 is available.\r\n", "You should consider upgrading via the '/tmpfs/src/tf_docs_env/bin/python -m pip install --upgrade pip' command.\u001b[0m\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: seaborn in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (0.11.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: scikit-learn in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (1.0.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: model-card-toolkit in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (1.3.1)\r\n", "Requirement already satisfied: scipy>=1.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from seaborn) (1.7.3)\r\n", "Requirement already satisfied: matplotlib>=2.2 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from seaborn) (3.5.1)\r\n", "Requirement already satisfied: numpy>=1.15 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from seaborn) (1.19.5)\r\n", "Requirement already satisfied: pandas>=0.23 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from seaborn) (1.3.5)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: threadpoolctl>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from scikit-learn) (3.1.0)\r\n", "Requirement already satisfied: joblib>=0.11 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from scikit-learn) (0.14.1)\r\n", "Requirement already satisfied: jsonschema<4,>=3.2.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from model-card-toolkit) (3.2.0)\r\n", "Requirement already satisfied: tensorflow-metadata<1.6.0,>=1.5.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from model-card-toolkit) (1.5.0)\r\n", "Requirement already satisfied: tensorflow-model-analysis<0.37.0,>=0.36.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from model-card-toolkit) (0.36.0)\r\n", "Requirement already satisfied: absl-py<1.1,>=0.9 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from model-card-toolkit) (0.12.0)\r\n", "Requirement already satisfied: semantic-version<3,>=2.8.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from model-card-toolkit) (2.9.0)\r\n", "Requirement already satisfied: ml-metadata<1.6.0,>=1.5.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from model-card-toolkit) (1.5.0)\r\n", "Requirement already satisfied: tfx<1.6.0,>=1.5.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from model-card-toolkit) (1.5.0)\r\n", "Requirement already satisfied: jinja2<3,>=2.10 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from model-card-toolkit) (2.11.3)\r\n", "Requirement already satisfied: six in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from absl-py<1.1,>=0.9->model-card-toolkit) (1.16.0)\r\n", "Requirement already satisfied: MarkupSafe>=0.23 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from jinja2<3,>=2.10->model-card-toolkit) (2.0.1)\r\n", "Requirement already satisfied: pyrsistent>=0.14.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from jsonschema<4,>=3.2.0->model-card-toolkit) (0.18.1)\r\n", "Requirement already satisfied: importlib-metadata in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from jsonschema<4,>=3.2.0->model-card-toolkit) (4.11.3)\r\n", "Requirement already satisfied: attrs>=17.4.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from jsonschema<4,>=3.2.0->model-card-toolkit) (20.3.0)\r\n", "Requirement already satisfied: setuptools in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from jsonschema<4,>=3.2.0->model-card-toolkit) (62.1.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pillow>=6.2.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (9.1.0)\r\n", "Requirement already satisfied: fonttools>=4.22.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (4.33.3)\r\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (1.4.2)\r\n", "Requirement already satisfied: python-dateutil>=2.7 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.8.2)\r\n", "Requirement already satisfied: packaging>=20.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (20.9)\r\n", "Requirement already satisfied: pyparsing>=2.2.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.4.7)\r\n", "Requirement already satisfied: cycler>=0.10 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (0.11.0)\r\n", "Requirement already satisfied: protobuf<4,>=3.13 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ml-metadata<1.6.0,>=1.5.0->model-card-toolkit) (3.20.1)\r\n", "Requirement already satisfied: grpcio<2,>=1.8.6 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ml-metadata<1.6.0,>=1.5.0->model-card-toolkit) (1.46.0rc2)\r\n", "Requirement already satisfied: pytz>=2017.3 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2022.1)\r\n", "Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow-metadata<1.6.0,>=1.5.0->model-card-toolkit) (1.56.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: ipython<8,>=7 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (7.32.0)\r\n", "Requirement already satisfied: apache-beam[gcp]<3,>=2.34 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.38.0)\r\n", "Requirement already satisfied: tfx-bsl<1.6.0,>=1.5.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.5.0)\r\n", "Requirement already satisfied: pyarrow<6,>=1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (5.0.0)\r\n", "Requirement already satisfied: tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.7.1)\r\n", "Requirement already satisfied: ipywidgets<8,>=7 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (7.7.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: kubernetes<13,>=10.0.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (12.0.1)\r\n", "Requirement already satisfied: google-api-python-client<2,>=1.8 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.12.11)\r\n", "Requirement already satisfied: google-cloud-bigquery<3,>=2.26.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (2.34.3)\r\n", "Requirement already satisfied: keras-tuner<2,>=1.0.4 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.1.2)\r\n", "Requirement already satisfied: docker<5,>=4.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (4.4.4)\r\n", "Requirement already satisfied: ml-pipelines-sdk==1.5.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.5.0)\r\n", "Requirement already satisfied: portpicker<2,>=1.3.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.5.0)\r\n", "Requirement already satisfied: tensorflow-transform<1.6.0,>=1.5.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.5.0)\r\n", "Requirement already satisfied: tensorflow-serving-api!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (2.7.0)\r\n", "Requirement already satisfied: click<8,>=7 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (7.1.2)\r\n", "Requirement already satisfied: tensorflow-hub<0.13,>=0.9.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (0.12.0)\r\n", "Requirement already satisfied: tensorflow-data-validation<1.6.0,>=1.5.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.5.0)\r\n", "Requirement already satisfied: pyyaml<6,>=3.12 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (5.4.1)\r\n", "Requirement already satisfied: google-apitools<1,>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (0.5.31)\r\n", "Requirement already satisfied: google-cloud-aiplatform<2,>=1.5.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.12.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: oauth2client<5,>=2.0.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (4.1.3)\r\n", "Requirement already satisfied: hdfs<3.0.0,>=2.1.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.7.0)\r\n", "Requirement already satisfied: proto-plus<2,>=1.7.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.20.3)\r\n", "Requirement already satisfied: dill<0.3.2,>=0.3.1.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.3.1.1)\r\n", "Requirement already satisfied: fastavro<2,>=0.23.6 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.4.11)\r\n", "Requirement already satisfied: typing-extensions>=3.7.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (4.2.0)\r\n", "Requirement already satisfied: cloudpickle<3,>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.0.0)\r\n", "Requirement already satisfied: pydot<2,>=1.2.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.4.2)\r\n", "Requirement already satisfied: crcmod<2.0,>=1.7 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.7)\r\n", "Requirement already satisfied: orjson<4.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (3.6.8)\r\n", "Requirement already satisfied: httplib2<0.20.0,>=0.8 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.19.1)\r\n", "Requirement already satisfied: pymongo<4.0.0,>=3.8.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (3.12.3)\r\n", "Requirement already satisfied: requests<3.0.0,>=2.24.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.27.1)\r\n", "Requirement already satisfied: google-cloud-bigtable<2,>=0.31.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.7.1)\r\n", "Requirement already satisfied: google-cloud-spanner<2,>=1.13.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.19.2)\r\n", "Requirement already satisfied: google-cloud-datastore<2,>=1.8.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.15.4)\r\n", "Requirement already satisfied: google-cloud-core<2,>=0.28.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.7.2)\r\n", "Requirement already satisfied: google-cloud-language<2,>=1.3.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.3.1)\r\n", "Requirement already satisfied: cachetools<5,>=3.1.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (4.2.4)\r\n", "Requirement already satisfied: google-auth<3,>=1.18.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.35.0)\r\n", "Requirement already satisfied: google-cloud-dlp<4,>=3.0.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (3.6.2)\r\n", "Requirement already satisfied: grpcio-gcp<1,>=0.2.2 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.2.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: google-cloud-bigquery-storage>=2.6.3 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.13.1)\r\n", "Requirement already satisfied: google-cloud-pubsublite<2,>=1.2.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.4.2)\r\n", "Requirement already satisfied: google-cloud-videointelligence<2,>=1.8.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.16.2)\r\n", "Requirement already satisfied: google-cloud-vision<2,>=0.38.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.0.1)\r\n", "Requirement already satisfied: google-cloud-pubsub<3,>=2.1.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.12.0)\r\n", "Requirement already satisfied: google-cloud-recommendations-ai<=0.2.0,>=0.1.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.2.0)\r\n", "Requirement already satisfied: websocket-client>=0.32.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from docker<5,>=4.1->tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.3.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: uritemplate<4dev,>=3.0.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-api-python-client<2,>=1.8->tfx<1.6.0,>=1.5.0->model-card-toolkit) (3.0.1)\r\n", "Requirement already satisfied: google-api-core<3dev,>=1.21.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-api-python-client<2,>=1.8->tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.31.5)\r\n", "Requirement already satisfied: google-auth-httplib2>=0.0.3 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-api-python-client<2,>=1.8->tfx<1.6.0,>=1.5.0->model-card-toolkit) (0.1.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: fasteners>=0.14 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-apitools<1,>=0.5->tfx<1.6.0,>=1.5.0->model-card-toolkit) (0.17.3)\r\n", "Requirement already satisfied: google-cloud-resource-manager<3.0.0dev,>=1.3.3 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-cloud-aiplatform<2,>=1.5.0->tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.4.1)\r\n", "Requirement already satisfied: google-cloud-storage<3.0.0dev,>=1.32.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-cloud-aiplatform<2,>=1.5.0->tfx<1.6.0,>=1.5.0->model-card-toolkit) (2.2.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: google-resumable-media<3.0dev,>=0.6.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-cloud-bigquery<3,>=2.26.0->tfx<1.6.0,>=1.5.0->model-card-toolkit) (2.3.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pickleshare in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.7.5)\r\n", "Requirement already satisfied: decorator in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (5.1.1)\r\n", "Requirement already satisfied: pexpect>4.3 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (4.8.0)\r\n", "Requirement already satisfied: traitlets>=4.2 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (5.1.1)\r\n", "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (3.0.29)\r\n", "Requirement already satisfied: matplotlib-inline in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.1.3)\r\n", "Requirement already satisfied: jedi>=0.16 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.18.1)\r\n", "Requirement already satisfied: backcall in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.2.0)\r\n", "Requirement already satisfied: pygments in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.12.0)\r\n", "Requirement already satisfied: nbformat>=4.2.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (5.3.0)\r\n", "Requirement already satisfied: ipython-genutils~=0.2.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.2.0)\r\n", "Requirement already satisfied: widgetsnbextension~=3.6.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (3.6.0)\r\n", "Requirement already satisfied: ipykernel>=4.5.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (6.13.0)\r\n", "Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.1.0)\r\n", "Requirement already satisfied: tensorboard in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from keras-tuner<2,>=1.0.4->tfx<1.6.0,>=1.5.0->model-card-toolkit) (2.8.0)\r\n", "Requirement already satisfied: kt-legacy in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from keras-tuner<2,>=1.0.4->tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.0.4)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: requests-oauthlib in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from kubernetes<13,>=10.0.1->tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.3.1)\r\n", "Requirement already satisfied: urllib3>=1.24.2 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from kubernetes<13,>=10.0.1->tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.26.9)\r\n", "Requirement already satisfied: certifi>=14.05.14 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from kubernetes<13,>=10.0.1->tfx<1.6.0,>=1.5.0->model-card-toolkit) (2021.10.8)\r\n", "Requirement already satisfied: psutil in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from portpicker<2,>=1.3.1->tfx<1.6.0,>=1.5.0->model-card-toolkit) (5.9.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: astunparse>=1.6.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.6.3)\r\n", "Requirement already satisfied: wrapt>=1.11.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.14.0)\r\n", "Requirement already satisfied: keras<2.8,>=2.7.0rc0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.7.0)\r\n", "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.21.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.25.0)\r\n", "Requirement already satisfied: h5py>=2.9.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (3.6.0)\r\n", "Requirement already satisfied: wheel<1.0,>=0.32.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.37.1)\r\n", "Requirement already satisfied: google-pasta>=0.1.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.2.0)\r\n", "Requirement already satisfied: termcolor>=1.1.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.1.0)\r\n", "Requirement already satisfied: opt-einsum>=2.3.2 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (3.3.0)\r\n", "Requirement already satisfied: flatbuffers<3.0,>=1.12 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.12)\r\n", "Requirement already satisfied: gast<0.5.0,>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.4.0)\r\n", "Requirement already satisfied: tensorflow-estimator<2.8,~=2.7.0rc0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.7.0)\r\n", "Requirement already satisfied: keras-preprocessing>=1.1.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.1.2)\r\n", "Requirement already satisfied: libclang>=9.0.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (14.0.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: zipp>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from importlib-metadata->jsonschema<4,>=3.2.0->model-card-toolkit) (3.8.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: rsa<5,>=3.1.4 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-auth<3,>=1.18.0->apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (4.8)\r\n", "Requirement already satisfied: pyasn1-modules>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-auth<3,>=1.18.0->apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.2.8)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: grpc-google-iam-v1<0.13dev,>=0.12.3 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-cloud-bigtable<2,>=0.31.1->apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.12.4)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: grpcio-status>=1.16.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-cloud-pubsub<3,>=2.1.0->apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.44.0)\r\n", "Requirement already satisfied: overrides<7.0.0,>=6.0.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-cloud-pubsublite<2,>=1.2.0->apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (6.1.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: google-crc32c<2.0dev,>=1.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from google-resumable-media<3.0dev,>=0.6.0->google-cloud-bigquery<3,>=2.26.0->tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.3.0)\r\n", "Requirement already satisfied: cached-property in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from h5py>=2.9.0->tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,<3,>=1.15.2->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.5.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: docopt in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from hdfs<3.0.0,>=2.1.0->apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.6.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: tornado>=6.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (6.1)\r\n", "Requirement already satisfied: nest-asyncio in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.5.5)\r\n", "Requirement already satisfied: debugpy>=1.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.6.0)\r\n", "Requirement already satisfied: jupyter-client>=6.1.12 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (7.3.0)\r\n", "Requirement already satisfied: parso<0.9.0,>=0.8.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from jedi>=0.16->ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.8.3)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: jupyter-core in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from nbformat>=4.2.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (4.10.0)\r\n", "Requirement already satisfied: fastjsonschema in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from nbformat>=4.2.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.15.3)\r\n", "Requirement already satisfied: pyasn1>=0.1.7 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from oauth2client<5,>=2.0.1->apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.4.8)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: ptyprocess>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from pexpect>4.3->ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.7.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: wcwidth in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.2.5)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: idna<4,>=2.5 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from requests<3.0.0,>=2.24.0->apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (3.3)\r\n", "Requirement already satisfied: charset-normalizer~=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from requests<3.0.0,>=2.24.0->apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.0.12)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: tensorboard-data-server<0.7.0,>=0.6.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorboard->keras-tuner<2,>=1.0.4->tfx<1.6.0,>=1.5.0->model-card-toolkit) (0.6.1)\r\n", "Requirement already satisfied: markdown>=2.6.8 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorboard->keras-tuner<2,>=1.0.4->tfx<1.6.0,>=1.5.0->model-card-toolkit) (3.3.6)\r\n", "Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorboard->keras-tuner<2,>=1.0.4->tfx<1.6.0,>=1.5.0->model-card-toolkit) (1.8.1)\r\n", "Requirement already satisfied: werkzeug>=0.11.15 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorboard->keras-tuner<2,>=1.0.4->tfx<1.6.0,>=1.5.0->model-card-toolkit) (2.1.1)\r\n", "Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from tensorboard->keras-tuner<2,>=1.0.4->tfx<1.6.0,>=1.5.0->model-card-toolkit) (0.4.6)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: notebook>=4.4.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (6.4.11)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: oauthlib>=3.0.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from requests-oauthlib->kubernetes<13,>=10.0.1->tfx<1.6.0,>=1.5.0->model-card-toolkit) (3.2.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pyzmq>=22.3 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (22.3.0)\r\n", "Requirement already satisfied: entrypoints in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.4)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: terminado>=0.8.3 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.13.3)\r\n", "Requirement already satisfied: argon2-cffi in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (21.3.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: prometheus-client in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.14.1)\r\n", "Requirement already satisfied: nbconvert>=5 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (6.4.5)\r\n", "Requirement already satisfied: Send2Trash>=1.8.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.8.0)\r\n", "Requirement already satisfied: typing-utils>=0.0.3 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from overrides<7.0.0,>=6.0.1->google-cloud-pubsublite<2,>=1.2.0->apache-beam[gcp]<3,>=2.34->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.1.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: bleach in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (5.0.0)\r\n", "Requirement already satisfied: beautifulsoup4 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (4.11.1)\r\n", "Requirement already satisfied: mistune<2,>=0.8.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.8.4)\r\n", "Requirement already satisfied: defusedxml in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.7.1)\r\n", "Requirement already satisfied: nbclient<0.6.0,>=0.5.0 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.5.13)\r\n", "Requirement already satisfied: pandocfilters>=1.4.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.5.0)\r\n", "Requirement already satisfied: testpath in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.6.0)\r\n", "Requirement already satisfied: jupyterlab-pygments in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.2.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: argon2-cffi-bindings in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (21.2.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: cffi>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (1.15.0)\r\n", "Requirement already satisfied: soupsieve>1.2 in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from beautifulsoup4->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.3.2.post1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: webencodings in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from bleach->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (0.5.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pycparser in /tmpfs/src/tf_docs_env/lib/python3.7/site-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.37.0,>=0.36.0->model-card-toolkit) (2.21)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33mWARNING: You are using pip version 21.3; however, version 22.0.4 is available.\r\n", "You should consider upgrading via the '/tmpfs/src/tf_docs_env/bin/python -m pip install --upgrade pip' command.\u001b[0m\r\n" ] } ], "source": [ "!pip install --upgrade pip==21.3\n", "!pip install -U seaborn scikit-learn model-card-toolkit" ] }, { "cell_type": "markdown", "metadata": { "id": "JpcNkrmLiYj7" }, "source": [ "### Did you restart the runtime?\n", "\n", "If you are using Google Colab, the first time that you run the cell above, you must restart the runtime (Runtime > Restart runtime ...)." ] }, { "cell_type": "markdown", "metadata": { "id": "YKbr6rJDC9bk" }, "source": [ "### Import packages\n", "\n", "We import necessary packages, including scikit-learn." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:49.052898Z", "iopub.status.busy": "2022-04-27T09:07:49.052411Z", "iopub.status.idle": "2022-04-27T09:07:52.517896Z", "shell.execute_reply": "2022-04-27T09:07:52.517321Z" }, "id": "y25vFI3WiYj7" }, "outputs": [], "source": [ "from datetime import date\n", "from io import BytesIO\n", "from IPython import display\n", "import model_card_toolkit as mctlib\n", "from sklearn.datasets import load_breast_cancer\n", "from sklearn.ensemble import GradientBoostingClassifier\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import plot_roc_curve, plot_confusion_matrix\n", "\n", "import base64\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import seaborn as sns\n", "import uuid" ] }, { "cell_type": "markdown", "metadata": { "id": "XVdpINibiYj-" }, "source": [ "## Load data\n", "\n", "This example uses the Breast Cancer Wisconsin Diagnostic dataset that scikit-learn can load using the [load_breast_cancer()](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html) function." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:52.521737Z", "iopub.status.busy": "2022-04-27T09:07:52.521317Z", "iopub.status.idle": "2022-04-27T09:07:52.534056Z", "shell.execute_reply": "2022-04-27T09:07:52.533567Z" }, "id": "aR6kzqPeiYj_" }, "outputs": [], "source": [ "cancer = load_breast_cancer()\n", "\n", "X = pd.DataFrame(cancer.data, columns=cancer.feature_names)\n", "y = pd.Series(cancer.target)\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X, y)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:52.536990Z", "iopub.status.busy": "2022-04-27T09:07:52.536539Z", "iopub.status.idle": "2022-04-27T09:07:52.557915Z", "shell.execute_reply": "2022-04-27T09:07:52.557475Z" }, "id": "DwjxhVtTiYkB" }, "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", " \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", " \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", " \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", " \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", " \n", "
mean radiusmean texturemean perimetermean areamean smoothnessmean compactnessmean concavitymean concave pointsmean symmetrymean fractal dimension...worst radiusworst textureworst perimeterworst areaworst smoothnessworst compactnessworst concavityworst concave pointsworst symmetryworst fractal dimension
1716.1320.68108.10798.80.117000.202200.172200.102800.21640.07356...20.9631.48136.801315.00.17890.42330.47840.207300.37060.11420
11714.8716.6798.64682.50.116200.164900.169000.089230.21570.06768...18.8127.37127.101095.00.18780.44800.47040.202700.35850.10650
19512.9116.3382.53516.40.079410.053660.038730.023770.18290.05667...13.8822.0090.81600.60.10970.15060.17640.082350.30240.06949
33718.7721.43122.901092.00.091160.140200.106000.060900.19530.06083...24.5434.37161.101873.00.14980.48270.46340.204800.36790.09870
50915.4623.95103.80731.30.118300.187000.203000.085200.18070.07083...17.1136.33117.70909.40.17320.49670.59110.216300.30130.10670
\n", "

5 rows × 30 columns

\n", "
" ], "text/plain": [ " mean radius mean texture mean perimeter mean area mean smoothness \\\n", "17 16.13 20.68 108.10 798.8 0.11700 \n", "117 14.87 16.67 98.64 682.5 0.11620 \n", "195 12.91 16.33 82.53 516.4 0.07941 \n", "337 18.77 21.43 122.90 1092.0 0.09116 \n", "509 15.46 23.95 103.80 731.3 0.11830 \n", "\n", " mean compactness mean concavity mean concave points mean symmetry \\\n", "17 0.20220 0.17220 0.10280 0.2164 \n", "117 0.16490 0.16900 0.08923 0.2157 \n", "195 0.05366 0.03873 0.02377 0.1829 \n", "337 0.14020 0.10600 0.06090 0.1953 \n", "509 0.18700 0.20300 0.08520 0.1807 \n", "\n", " mean fractal dimension ... worst radius worst texture \\\n", "17 0.07356 ... 20.96 31.48 \n", "117 0.06768 ... 18.81 27.37 \n", "195 0.05667 ... 13.88 22.00 \n", "337 0.06083 ... 24.54 34.37 \n", "509 0.07083 ... 17.11 36.33 \n", "\n", " worst perimeter worst area worst smoothness worst compactness \\\n", "17 136.80 1315.0 0.1789 0.4233 \n", "117 127.10 1095.0 0.1878 0.4480 \n", "195 90.81 600.6 0.1097 0.1506 \n", "337 161.10 1873.0 0.1498 0.4827 \n", "509 117.70 909.4 0.1732 0.4967 \n", "\n", " worst concavity worst concave points worst symmetry \\\n", "17 0.4784 0.20730 0.3706 \n", "117 0.4704 0.20270 0.3585 \n", "195 0.1764 0.08235 0.3024 \n", "337 0.4634 0.20480 0.3679 \n", "509 0.5911 0.21630 0.3013 \n", "\n", " worst fractal dimension \n", "17 0.11420 \n", "117 0.10650 \n", "195 0.06949 \n", "337 0.09870 \n", "509 0.10670 \n", "\n", "[5 rows x 30 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:52.560702Z", "iopub.status.busy": "2022-04-27T09:07:52.560256Z", "iopub.status.idle": "2022-04-27T09:07:52.564379Z", "shell.execute_reply": "2022-04-27T09:07:52.563899Z" }, "id": "fCOK-1gyiYkE" }, "outputs": [ { "data": { "text/plain": [ "17 0\n", "117 0\n", "195 1\n", "337 0\n", "509 0\n", "dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_train.head()" ] }, { "cell_type": "markdown", "metadata": { "id": "KmOnApwWiYkG" }, "source": [ "## Plot data\n", "\n", "We will create several plots from the data that we will include in the model card." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:52.567313Z", "iopub.status.busy": "2022-04-27T09:07:52.566873Z", "iopub.status.idle": "2022-04-27T09:07:52.569934Z", "shell.execute_reply": "2022-04-27T09:07:52.569529Z" }, "id": "O9n6rAV7iYkG" }, "outputs": [], "source": [ "# Utility function that will export a plot to a base-64 encoded string that the model card will accept.\n", "\n", "def plot_to_str():\n", " img = BytesIO()\n", " plt.savefig(img, format='png')\n", " return base64.encodebytes(img.getvalue()).decode('utf-8')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:52.572939Z", "iopub.status.busy": "2022-04-27T09:07:52.572459Z", "iopub.status.idle": "2022-04-27T09:07:53.352625Z", "shell.execute_reply": "2022-04-27T09:07:53.352067Z" }, "id": "lpZLJG3hiYkI" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the mean radius feature for both the train and test sets\n", "\n", "sns.displot(x=X_train['mean radius'], hue=y_train)\n", "mean_radius_train = plot_to_str()\n", "\n", "sns.displot(x=X_test['mean radius'], hue=y_test)\n", "mean_radius_test = plot_to_str()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:53.355734Z", "iopub.status.busy": "2022-04-27T09:07:53.355244Z", "iopub.status.idle": "2022-04-27T09:07:53.933975Z", "shell.execute_reply": "2022-04-27T09:07:53.933476Z" }, "id": "sFenUqQPiYkK" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the mean texture feature for both the train and test sets\n", "\n", "sns.displot(x=X_train['mean texture'], hue=y_train)\n", "mean_texture_train = plot_to_str()\n", "\n", "sns.displot(x=X_test['mean texture'], hue=y_test)\n", "mean_texture_test = plot_to_str()" ] }, { "cell_type": "markdown", "metadata": { "id": "hA7QthuhiYkM" }, "source": [ "## Train model" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:53.937161Z", "iopub.status.busy": "2022-04-27T09:07:53.936763Z", "iopub.status.idle": "2022-04-27T09:07:54.254570Z", "shell.execute_reply": "2022-04-27T09:07:54.254070Z" }, "id": "8VkTo7BxiYkN" }, "outputs": [], "source": [ "# Create a classifier and fit the training data\n", "\n", "clf = GradientBoostingClassifier().fit(X_train, y_train)" ] }, { "cell_type": "markdown", "metadata": { "id": "7fo-7XlIiYkP" }, "source": [ "## Evaluate model" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:54.257917Z", "iopub.status.busy": "2022-04-27T09:07:54.257505Z", "iopub.status.idle": "2022-04-27T09:07:54.403022Z", "shell.execute_reply": "2022-04-27T09:07:54.402455Z" }, "id": "_vEWAT2OiYkP" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/sklearn/utils/deprecation.py:87: FutureWarning: Function plot_roc_curve is deprecated; Function :func:`plot_roc_curve` is deprecated in 1.0 and will be removed in 1.2. Use one of the class methods: :meth:`sklearn.metric.RocCurveDisplay.from_predictions` or :meth:`sklearn.metric.RocCurveDisplay.from_estimator`.\n", " warnings.warn(msg, category=FutureWarning)\n" ] }, { "data": { "image/png": "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mWIt7nwZGRncfvvtpT7ezp07GTVqFMcccwydO3fm5JNP5pVXXgGgZcuWbNiwocwxF4wzNzeXrl270qlTJ95991369OnDd999V6bj/+53v+Odd97Jn9+wYQO1atViwoQJe21Xv379veYnTpzIiBEj8uefeuop2rVrR/v27enUqVP+30hZvPrqqxx33HEcffTRRb5XX375JaeffjodOnSgR48erFq1Kn/dH/7wB9q1a0e7du2YOnVq/vKLL76Yzz77rMzxQSk7nRNJFnenb9++dO/eneXLl5OVlcWUKVP2+kfJs2vXrlKdY8yYMZxxxhml2rfgBzPAwIEDyc7OZvHixdSuXXuvf96yKni+888/n1GjRpX6eDfffDNr1qxh0aJFzJ8/nxdeeIHNmzeXR6h7iY3zjTfeoH379ixYsIBu3boxc+ZMDjjggMjH2r17917zGzduZO7cuXTv3j1/2bRp0zjppJOYPHly5OO+8sor3Hvvvfz73//mo48+Yu7cuTRq1Cjy/kXFOnz4cF555RWWLFnC5MmTWbJkyT7bXXfddfz85z8nJyeH0aNHc+ONNwLw8ssvM3/+fLKzs/nggw8YN24c33//PQC/+c1vuPPOO8sUX56ozxGIcOuLi1ny9fflesw2hzfkz+cVPazFm2++Se3atfn1r3+dv+yII45g5MiRQPCN7vnnn2fLli3s3r2bl19+mQsuuIBvv/2WnTt3MnbsWC644AIAbrvtNp588kmaNGlC8+bNOeGEEwAYMmQI5557Lv379ycrK4trrrmGLVu20LhxYyZOnMhhhx1Gjx496Nq1K7NmzeK7777j8ccfp2vXrowePZpt27Yxe/bs/H/ePLt27eKHH37gwAMPBGDFihUMHTqUDRs2kJqayj/+8Q9atGhR5PJp06Zx6623kpKSQqNGjXj99df3Od+2bdvIzMzkgQceYMiQITRs2JDMzEzWrl3LnXfeSf/+/dmzZw8jRozgzTffpHnz5tSqVYuhQ4fSp08fHn30Ub744gv2228/AA455BAGDBiwz/vQt29fVq5cyfbt27n66qsZNmwYu3fv5oorriAzMxMzY+jQofz+979n/PjxTJgwgZo1a9KmTRumTJnCxIkTyczM5Morr+SGG27Ij3vOnDm0bt2azMxMGjduzDPPPMP48ePZsWMHXbt25aGHHiIlJYX69evzq1/9itdff50HH3yQn/zkJ/mxPffcc/Tu3XuveCdPnszdd9/NpZdeyqpVq2jWrFncv8W//vWvjBs3jsMPPxyA/fbbj1/+8pdx9yvOhx9+yNFHH82RRx4JBN/i//Wvf9GmTZu9tluyZAn33HMPAD179qRv3775y7t3707NmjWpWbMmHTp04NVXX2XAgAF069aNIUOGsGvXLmrWLNtHuUoE8qO2ePFiOnfuXOw28+fPZ/r06bz99tvUqVOHGTNmMH/+fGbNmsW1116Lu+eXJPK+Uc+bN2+f4+zcuZORI0cyffp0srKyGDp0KDfddFP++l27dvHhhx9y7733cuutt1K7dm3GjBmTXwIYOHAgAFOnTiUtLY2mTZvyzTffcN555wEwcuRILr/8cnJychg0aBBXXXVVscvHjBnDa6+9xsKFC8nIyCjyfLHWrFnD7Nmzeemll/K/gT///POsWLGCJUuW8PTTTzNnzhwAli1bRosWLWjYsGHc9+GJJ54gKyuLzMxMxo8fz8aNG8nOzmb16tUsWrSIjz76iF/84hcA3H777SxYsICcnJx9qmbS0tL2uoa6devmr/v444+ZOnUq7733HtnZ2aSkpDBp0iQAfvjhB7p27crChQv3SgIA7733Xn5SB1i5ciVr1qyhS5cuDBgwIHKJbNGiRXsdpyiTJk0iLS1tn5/+/fvvs+3q1atp3rx5/nyzZs1YvXr1Ptt17NiR558Pns+dMWMGmzdvZuPGjXTs2JFXX32VrVu3smHDBmbNmsXKlSsBqFGjBkcffTQLFy6MdH3FUYlAIivum3uyDB8+nNmzZ1O7du38D/MzzzyTgw46CAiqkv74xz/yzjvvUKNGDVavXs26det49913ufDCC6lXrx4QVFUUtHTpUhYtWsSZZ54JBMX6ww47LH/9z372MwBOOOEEVqxYUWSMAwcO5IEHHsDdGT58OHfddRejRo1izpw5+f/sl112GTfccANAkctPPfVUhgwZwoABA/LPHU/fvn2pUaMGbdq0Yd26dQDMnj2biy66iBo1anDooYfSs2fPSMeKNX78+Px2mZUrV/LZZ59x3HHHsXz5ckaOHMk555xDr169AOjQoQODBg2ib9+++d9so3jjjTfIysrixBNPBGDbtm00adIEgJSUFPr161fofmvWrCE1NTV/furUqfmlmosvvpihQ4dy7bXXFnnekt5lM2jQIAYNGlSifeIZN24cI0aMYOLEiXTv3p2mTZuSkpJCr169mDdvHqeccgqpqamcfPLJpKSk5O/XpEkTvv7660gJrDgJLRGYWW8zW2pmy8xsn4pMM9vPzKaG6z8ws5aJjEcqn7Zt2zJ//vz8+QcffJA33nhjr/uk999///zpSZMmkZubS1ZWFtnZ2RxyyCGRn4p2d9q2bUt2djbZ2dl89NFH/Pvf/85fn1d9kpKSEqk9wsw477zz9mrELIkJEyYwduxYVq5cyQknnMDGjRvj7pMXIwTXU5yjjz6ar776Kr/OuShvvfUWr7/+OnPmzGHhwoV06tSJ7du3c+CBB7Jw4UJ69OjBhAkTuPLKK4GgXnv48OHMnz+fE088MXLbjbtz+eWX57/+S5cu5ZZbbgGCp2VjPwBj1a1bd6/3ePLkyUycOJGWLVty/vnnk5OTk9+oWrduXXbs2JG/7TfffEPjxo2B4G8tKysrbpwlKRE0bdo0/xs8BA9oNm3adJ/tDj/8cJ5//nkWLFjAbbfdBpDfbnLTTTeRnZ3Nf/7zH9ydY489Nn+/7du371WqKq2EJYKw++oHgbOBNsAlZtamwGZXAN+6+9HA34A7EhWPVE4//elP2b59Ow8//HD+suLuwtm0aRNNmjShVq1azJo1iy+//BKA7t2788ILL7Bt2zY2b97Miy++uM++xx13HLm5uflVJzt37mTx4sXFxtegQYNiG1dnz57NUUcdBcApp5zClClTgODDpFu3bsUu//zzz+natStjxowhNTWVlStXxj1fYU499VSee+459uzZw7p163jrrbcAqFevHldccQVXX311/odjbm4u06ZN22v/TZs2ceCBB1KvXj0++eQT5s6dCwR35uzZs4d+/foxduxY5s+fz549e1i5ciU9e/bkjjvuYNOmTWzZsiVSnKeffjrTp09n/fr1QPAhnff+Fad169YsW7YMgE8//ZQtW7awevVqVqxYwYoVK7jxxhvzG41PO+00nnnmGSAocTz77LP5JaQbb7yR66+/nrVr1wKwY8cOHnvssX3ON2jQoPxkFfszffr0fbY98cQT+eyzz/jiiy/YsWMHU6ZMKbQ0mvdaQtBWMXToUCAoleZ9AcjJySEnJye/5JV3ve3atYv7GsWTyBJBF2CZuy939x3AFOCCAttcADwZTk8HTjc9vSQxzIwXXniBt99+m1atWtGlSxcuv/xy7rij8O8MgwYNIjMzk/bt2/PUU09x/PHHA9C5c2cGDhxIx44dOfvss/OrH2LVrl2b6dOn84c//IGOHTuSlpbG+++/X2x8PXv2ZMmSJaSlpeXXRee1EXTo0IEFCxZw8803A3D//ffzj3/8gw4dOvD0009z3333Fbv8+uuvp3379rRr145TTjmFjh07Fnq+ePr160ezZs1o06YNgwcPpnPnzvl3w4wdO5bU1FTatGlDu3btOPfcc/dpM+jduze7du2idevWjBo1ipNOOgkI6r979OhBWloagwcP5q9//Su7d+9m8ODB+bdfXnXVVZHvCGrTpg1jx46lV69edOjQgTPPPJM1a9bE3e+cc87JT26TJ0/mwgsv3Of68xLBfffdx/PPP09aWhonnXQSF110Uf7dRn369GHEiBGcccYZtG3bls6dO8ctLcVTs2ZNHnjgAc466yxat27NgAEDaNs2qGIdPXo0GRkZQFDqOu644zj22GNZt25dftvUzp076datG23atGHYsGE888wz+Q3D69ato27duhx66KFlihHA4hUfS31gs/5Ab3e/Mpy/DOjq7iNitlkUbrMqnP883GZDgWMNA4YBtGjR4oQo3xIK+vfitbyQvZp7BqRRp1bhRUzZ18cff0zr1q0rOgwpoy1btlC/fn02btxIly5deO+998rlA+TH4ic/+QkvvfRSiW5Drez+9re/0bBhQ6644op91hX2f2tmWe6eXtixKkVjsbs/AjwCkJ6eXqrM1avtofRqW3X+8EVK4txzz+W7775jx44d3HzzzVUqCQDcfffdfPXVV9UqERxwwAFcdtll5XKsRCaC1UDzmPlm4bLCtlllZjWBRgTjHohIOcqrOqmqunbtWtEhJF3e7brlIZFtBPOAY8yslZnVBi4GMgpskwFcHk73B970RNVVSanpLRGpPErz/5qwRODuu4ARwGvAx8Cz7r7YzMaYWV6z+ePAwWa2DLgGKP2z8pIQderUYePGjUoGIpVA3ngEderUKdF+CWssTpT09HTPzMys6DCqDY1QJlK5FDVCWaVvLJaKU6tWrRKNdCQilY/6GhIRqeaUCEREqjklAhGRaq7SNRabWS5Q8keLA42B8hlyqfLQNVcPuubqoSzXfIS7pxa2otIlgrIws8yiWs2rKl1z9aBrrh4Sdc2qGhIRqeaUCERE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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot a ROC curve\n", "\n", "plot_roc_curve(clf, X_test, y_test)\n", "roc_curve = plot_to_str()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:54.405661Z", "iopub.status.busy": "2022-04-27T09:07:54.405332Z", "iopub.status.idle": "2022-04-27T09:07:54.561717Z", "shell.execute_reply": "2022-04-27T09:07:54.561123Z" }, "id": "QiNgUZKxiYkR" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/sklearn/utils/deprecation.py:87: FutureWarning: Function plot_confusion_matrix is deprecated; Function `plot_confusion_matrix` is deprecated in 1.0 and will be removed in 1.2. Use one of the class methods: ConfusionMatrixDisplay.from_predictions or ConfusionMatrixDisplay.from_estimator.\n", " warnings.warn(msg, category=FutureWarning)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAATIAAAEKCAYAAACR79kFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAYqklEQVR4nO3debwV5Z3n8c/3XvZFdskdMEgig82YltiEaJzYRDRq4rR0j51okm4moceYRZN0uqOZP3SSl2NMT08bx05ePUSN9MTdaDCJQR0io/bYKCguYAxIgqIssomyCJz7mz9O3XBAuFUFZ6m6fN++6nVP1TnnqR8gX6qeqnoeRQRmZmXW1uoCzMwOl4PMzErPQWZmpecgM7PSc5CZWek5yMys9BxkZtYykr4maamk5yXdJqmfpPGSFkpaIekOSX3S2nGQmVlLSBoDXApMiYgTgHbgAuC7wLURcRywGZiV1paDzMxaqRfQX1IvYACwBjgduDt5fw4wI0sjhdFryIDoe/SQVpdhObSveLvVJVgOO9nGrnhbh9PGWR8ZGBs3VTJ9dvGzby8FdtZsmh0RswEi4lVJfw+8DOwAHgQWA1siYk/y+dXAmLT9FCrI+h49hOOv+1yry7Achp/7m1aXYDksjPmH3caGTRUWPjA202d7d7y0MyKmHOg9ScOA84DxwBbgLuDsQ6mpUEFmZmUQVKKzHg2dAfw2Il4HkHQPcCowVFKv5KhsLPBqWkPuIzOzXALoJDItKV4GTpY0QJKA6cAy4GHg/OQzM4G5aQ05yMwst86M/3UnIhZS7dR/CniOah7NBi4D/lrSCmAEcGNaPT61NLNcgmB3fU4tiYgrgSv327wSmJqnHQeZmeUSQCX9tLGpHGRmlluG/q+mcpCZWS4BVAo2srSDzMxyq08PWf04yMwslyDcR2Zm5RYBu4uVYw4yM8tLVDisxzXrzkFmZrkE0OkjMjMrOx+RmVmpVW+IdZCZWYkFsDuK9Zi2g8zMcglEpWDjTTjIzCy3zvCppZmVmPvIzKwHEBX3kZlZmVVHiHWQmVmJRYhd0d7qMvbhIDOz3DrdR2ZmZVbt7PeppZmVWvE6+4tVjZkVXldnf5alO5ImSlpSs2yV9FVJwyU9JGl58nNYWk0OMjPLrRLKtHQnIl6MiMkRMRn4I2A7cC9wOTA/IiYA85P1bvnU0sxyCcTuqHt0TAdeiohVks4DpiXb5wALqM51eVAOMjPLJWdn/0hJi2rWZ0fE7AN87gLgtuT16IhYk7xeC4xO24mDzMxyCdJPG2tsiIgp3X1AUh/gT4BvvmNfESEpdRhHB5mZ5VbnO/vPAZ6KiHXJ+jpJHRGxRlIHsD6tAXf2m1kuEVCJtkxLRhey97QS4D5gZvJ6JjA3rQEfkZlZLtXO/vo8oiRpIHAm8PmazdcAd0qaBawCPpHWjoPMzHKr1539EbENGLHfto1Ur2Jm5iAzs1wCeWBFMys/P2tpZqVWndfSQWZmpeaZxs2s5KrTwXlgRTMrsQj51NLMyq9o45E5yMwsl+p4ZO4jM7NSK94IsQ4yM8ulevuFj8jMrMTq+axlvTjIzCw3T9BrZqVWHcbHp5ZmVnLuIzOzUquOfuFTSzMrseojSg6yHm3I51YS/dugTdAOW7837vfv9btnEwNu2sDmW95LDCnWVR/bq60tuH7eb9i4pjdXzHxPq8spoCPsiEzS2cB1QDtwQ0Rc08j9FcWbVx/zjqBqe303vZ/eTmWU/+0ouhl/tYFXlvdjwKBKq0sprKLd2d+wWJXUDnyf6gwpk4ALJU1q1P6KbsAPX2f7Z0dRsD9/28/Ijl1Mnb6VX946vNWlFFbXVcvDnWm8nhp5fDgVWBERKyNiF3A7cF4D91cMgsFXrOaor6yi77wtAPT+17foHNGLynv6trY2S3Xxt17jhqs6iE7/i9OdzmjLtKSRNFTS3ZJ+LekFSadIGi7pIUnLk5/D0tppZJCNAV6pWV+dbNuHpIskLZK0aM8b2xtYTnNs/e4xbL1uHG9+awx9f76FXs9vp/+dm9jxmRHpX7aW+uAZW9myoRcrnhvQ6lIKrWvM/ixLBtcB8yLieOBE4AXgcmB+REwA5ifr3Wp5h00yffpsgIETOlJnFC66GNm7+nNoL3afMohez+2gbd1ujrpkFQBtG/Zw1FdXsfUf3k0Ma/lvv9WY9IFtnPzRrXxg+jL69A0GDK7wjetX8XeXjEv/8hEkgD116OyXNAQ4DfhPAMmZ2y5J5wHTko/NARYAl3XXViP/Jr0KHFOzPjbZ1nPt7IROYEAb7Oyk19Pb2XnhCLbc8t7ff2TI51ay9dpxvmpZQD/6Tgc/+k4HAH94ylucf/F6h9hB1Omq5XjgdeBHkk4EFgNfAUZHxJrkM2uB0WkNNTLIngQmSBpPNcAuAD7VwP21XNuWPQy66rXqSifs+uPB7P6jga0tyqzesp82AoyUtKhmfXZyFgbV/DkJuCQiFkq6jv1OIyMiJKWeqTUsyCJij6QvAw9Qvf3ipohY2qj9FUHnu/qw9R+P7fYzb9zk+5LK4NnHB/Hs44NaXUYh5RxYcUNETDnIe6uB1RGxMFm/m2qQrZPUERFrJHUA69N20tBOmoi4H7i/kfsws+arx7OWEbFW0iuSJkbEi1RnF1+WLDOBa5Kfc9Pacm+zmeVS54EVLwFukdQHWAl8lurdFHdKmgWsAj6R1oiDzMxyCcSezvrcuRURS4ADnXpOz9OOg8zMcivaI0oOMjPLJzwemZmVnCcfMbMewUFmZqUWiEqdOvvrxUFmZrm5s9/MSi3c2W9mPUE4yMys3HI9NN4UDjIzy81HZGZWahFQKdhQ4A4yM8vNVy3NrNQCn1qaWem5s9/MeoAo2DRBDjIzy82nlmZWatWrln7W0sxKzqeWZlZ6PrU0s1IL5CAzs/Kr15mlpN8BbwIVYE9ETJE0HLgDOBb4HfCJiNjcXTvF6rEzs+ILiE5lWjL6SERMrpnI93JgfkRMAOaz3+zjB+IgM7PcIpRpOUTnAXOS13OAGWlfcJCZWW4R2RZgpKRFNctF+zcFPChpcc17oyNiTfJ6LTA6rZ6D9pFJup5uToUj4tK0xs2s58n5rOWGmlPGA/n3EfGqpKOBhyT9ep99RYSk1C657jr7F2Us1MyOJAHU6aplRLya/Fwv6V5gKrBOUkdErJHUAaxPa+egQRYRc2rXJQ2IiO2HWbeZ9QD1uCFW0kCgLSLeTF5/FPg2cB8wE7gm+Tk3ra3UPjJJp0haBvw6WT9R0g8Oo34zK7VsVywzXLUcDTwm6RngCeAXETGPaoCdKWk5cEay3q0s95F9DziLakoSEc9IOi3D98ysp6rDEVlErAROPMD2jcD0PG1luiE2Il6R9knXSp6dmFkPEuV8ROkVSR8CQlJv4CvAC40ty8wKrWAPjWe5j+xi4EvAGOA1YHKybmZHLGVcmiP1iCwiNgCfbkItZlYWna0uYF9Zrlq+R9LPJL0uab2kuZLe04zizKyAuu4jy7I0SZZTy1uBO4EO4N8AdwG3NbIoMyu2HI8oNUWWIBsQEf87IvYky4+Bfo0uzMwKLDIuTdLds5bDk5e/lHQ5cDvV0j4J3N+E2sysqEp0+8ViqsHVVfHna94L4JuNKsrMii39Me7m6u5Zy/HNLMTMSiIE2QdNbIpMd/ZLOgGYRE3fWET8c6OKMrOCK8sRWRdJVwLTqAbZ/cA5wGOAg8zsSFWwIMty1fJ8qg9wro2Iz1J9yHNIQ6sys2Iry1XLGjsiolPSHklHUR3k7JgG12VmRVXHgRXrJUuQLZI0FPgh1SuZbwGPN7IoMyu20ly17BIRX0xe/pOkecBREfFsY8sys0IrS5BJOqm79yLiqcaUZGZFV6Yjsv/RzXsBnF7nWmh/6W1GzFhZ72atgea9tqTVJVgOU8+q07QbZekji4iPNLMQMyuJJl+RzCLTDbFmZvsoWJB5pnEzy02d2ZZMbUntkp6W9PNkfbykhZJWSLpDUp+0NhxkZpZffW+I3X8ekO8C10bEccBmYFZaA1lGiJWkz0i6Ill/t6SpmUs0sx5FkX1JbUsaC3wcuCFZF9ULiXcnH5kDzEhrJ8sR2Q+AU4ALk/U3ge9n+J6Z9VTZh7oeKWlRzXLRfi19D/gGe2cBGAFsiYg9yfpqqhMfdStLZ/8HI+IkSU8DRMTmLOesZtaDZT9t3BARUw70hqRzgfURsVjStMMpJ0uQ7ZbUTlK6pFEUbg4VM2umOt0QeyrwJ5I+RnWIsKOA64ChknolR2VjgVfTGspyavk/gXuBoyX9N6pD+Fx9qJWbWclFfa5aRsQ3I2JsRBwLXAD8KiI+DTxMddQdgJnA3LSSsjxreYukxVSH8hEwIyI807jZkayx95FdBtwu6SrgaeDGtC9kGVjx3cB24Ge12yLi5cMo1MzKrM5BFhELgAXJ65VArjsjsvSR/YK9k5D0A8YDLwL/Ls+OzKznKNND4wBExPtq15NRMb54kI+bmTVd7mctI+IpSR9sRDFmVhJlOyKT9Nc1q23AScBrDavIzIotsj9H2SxZjsgG17zeQ7XP7CeNKcfMSqFMR2TJjbCDI+JvmlSPmRWcKFFnf9edtZJObWZBZlYCZQky4Amq/WFLJN0H3AVs63ozIu5pcG1mVkQZR7Zopix9ZP2AjVSH1ui6nywAB5nZkapEnf1HJ1csn2dvgHUpWB6bWTOV6YisHRjEvgHWpWC/DDNrqoIlQHdBtiYivt20SsysHEo2i1KxJq4zs8Io06nl9KZVYWblUpYgi4hNzSzEzMqjjI8omZntVbI+MjOzdxDF60B3kJlZfj4iM7OyK9pVyyyzKJmZ7SsyLt2Q1E/SE5KekbRU0reS7eMlLZS0QtIdWebRdZCZWT51mg4OeBs4PSJOBCYDZ0s6GfgucG1EHAdsBmalNeQgM7P86nBEFlVvJau9kyWoDlBxd7J9DjAjrRwHmZnlpsi2ACMlLapZLtqnHald0hJgPfAQ8BKwJZllHGA1MCatHnf2m1l+2Tv7N0TElIM2E1EBJksaCtwLHH8o5TjIzCy3el+1jIgtkh4GTgGGdo1QDYwFXk37vk8tzSyfoDqwYpalG5JGJUdiSOoPnAm8ADwMnJ98bCYwN60kH5GZWS51nHykA5iTTHLUBtwZET+XtAy4XdJVwNPAjWkNOcjMLL86BFlEPAu8/wDbVwJT87TlIDOz3BTFurXfQWZm+Xj0CzPrCYr2rKWDzMxy88CKZlZ+PiIzs1Ir6UzjZmb7cpCZWZnV8YbYunGQmVlu6ixWkjnIzCwf30d25JnzL8+xfVsbnRVRqYhLz/2DVpdk+7ln9ih+eetwJBh//E6+fu3LbFrfm6u/MI6tm3sx4X3b+cb1L9O7T8H+9rbQEXP7haSbgHOB9RFxQqP2UwaXfXIiWzf734wi2rCmNz+9cSQ/XPBr+vYPrvr8OBbMHcYTvxrMn/3n15k2YwvXXTaWebcN5z/M3NjqcoujYJneyGF8bgbObmD7ZnVR2SPe3tlGZQ+8vaON4aN388xjg/nwuVsAOPPPN/H4vCGtLbJgcowQ2xQNO0yIiEckHduo9ssiAq7+8W8IxP23jOSXt45qdUlWY2THbs7/wnr+4gOT6NsvOOmPtzLhfdsZOKRCe6+9n9mwtndrCy2SoPo/doG0/HwnGcP7IoB+DGhxNfX39f84kY3r+jBkxG6+c8tyXlnRj+efGNzqsizx5pZ2Hn9gCHMWLmPQURWuumg8ixYc1eqyCq9ofWQtHyE2ImZHxJSImNJbfVtdTt1tXFedku+Njb35fw8MZeLkbS2uyGo9/egg3nXMLoaOqNCrN5z6sS0sfXIg295op5JMf7FhTW9Gvmt3awstkK77yIp0atnyIOvJ+vav0H9g5fevT/rwVn73Yv8WV2W1jh6zmxeeGsDO7SICljw2mHETdnLiqW/x6M+HAvDQXcM55aw3WltokURkX5qk5aeWPdmwUXu4YvZLALT3Ch7+6XAW/193GhfJ8Sdt58Mff4MvnTWR9l7BcSfs4JzPbGTqGVu5+gvjuPnvOjjuhB2cdeGmVpdaKEfMnf2SbgOmUZ3XbjVwZUSkjr3dk6x9uS9fPHtSq8uwFH/5t2v5y79du8+2jnG7uP7+5S2qqASOlCCLiAsb1baZtVbRjsjcR2Zm+QRQiWxLNyQdI+lhScskLZX0lWT7cEkPSVqe/ByWVpKDzMxyq9NVyz3A1yNiEnAy8CVJk4DLgfkRMQGYn6x3y0FmZvnV4aplRKyJiKeS129SnZx3DHAeMCf52BxgRlo5vmppZrnl6CMbKWlRzfrsiJj9jvaqTwG9H1gIjI6INclba4HRaTtxkJlZPvmG8dkQEVO6+4CkQcBPgK9GxFZJe3cVEVJ6bDrIzCwXAUrpyM/cltSbaojdEhH3JJvXSeqIiDWSOoD1ae24j8zMclNEpqXbNqqHXjcCL0TEP9S8dR8wM3k9E5ibVo+PyMwsn/qNEHsq8BfAc5KWJNv+C3ANcKekWcAq4BNpDTnIzCyn+jxHGRGPUT1TPZDpedpykJlZbkW7s99BZmb5eWBFMyu1qN9Vy3pxkJlZfsXKMQeZmeWXdmtFsznIzCw/B5mZlVoABZt8xEFmZrmI9Lv2m81BZmb5dRbrkMxBZmb5+NTSzHoCn1qaWfk5yMys3Jo7+W4WDjIzy6drFqUCcZCZWW7uIzOz8nOQmVmpBdDpIDOzUnNnv5n1BAULMs+iZGb5BFDpzLakkHSTpPWSnq/ZNlzSQ5KWJz+HpbXjIDOznAKiM9uS7mbg7P22XQ7Mj4gJwPxkvVsOMjPLLyLbktpMPAJs2m/zecCc5PUcYEZaO+4jM7N8Gn/VcnRErElerwVGp33BQWZm+WXv7B8paVHN+uyImJ19NxFS+uRzDjIzyy97kG2IiCk5W18nqSMi1kjqANanfcF9ZGaWTwRUKtmWQ3MfMDN5PROYm/YFB5mZ5Venzn5JtwGPAxMlrZY0C7gGOFPScuCMZL1bPrU0s/zqdENsRFx4kLem52nHQWZmOYWftTSzkguIbDe7No2DzMzyy/D4UTM5yMwsnwhPB2dmPUDBRr9wkJlZbuEjMjMrNw+saGZl56GuzazsAohDf/yoIRxkZpZPRNZBE5vGQWZmuYVPLc2s9Ap2RKYo0NUHSa8Dq1pdRwOMBDa0ugjLpaf+mY2LiFGH04CkeVR/f7LYEBH7j8lfd4UKsp5K0qJDGFzOWsh/ZuXi8cjMrPQcZGZWeg6y5sg82YIVhv/MSsR9ZGZWej4iM7PSc5CZWek5yBpI0tmSXpS0QtLlra7H0km6SdJ6Sc+3uhbLzkHWIJLage8D5wCTgAslTWptVZbBzUDDb+C0+nKQNc5UYEVErIyIXcDtwHktrslSRMQjwKZW12H5OMgaZwzwSs366mSbmdWZg8zMSs9B1jivAsfUrI9NtplZnTnIGudJYIKk8ZL6ABcA97W4JrMeyUHWIBGxB/gy8ADwAnBnRCxtbVWWRtJtwOPAREmrJc1qdU2Wzo8omVnp+YjMzErPQWZmpecgM7PSc5CZWek5yMys9BxkJSKpImmJpOcl3SVpwGG0dbOk85PXN3T3QLukaZI+dAj7+J2kd8y2c7Dt+33mrZz7+q+S/iZvjdYzOMjKZUdETI6IE4BdwMW1b0o6pHlKI+KvImJZNx+ZBuQOMrNmcZCV16PAccnR0qOS7gOWSWqX9N8lPSnpWUmfB1DVPybjo/0f4OiuhiQtkDQleX22pKckPSNpvqRjqQbm15KjwQ9LGiXpJ8k+npR0avLdEZIelLRU0g2A0n4Rkn4qaXHynYv2e+/aZPt8SaOSbe+VNC/5zqOSjq/L76aVmmcaL6HkyOscYF6y6STghIj4bRIGb0TEByT1Bf5F0oPA+4GJVMdGGw0sA27ar91RwA+B05K2hkfEJkn/BLwVEX+ffO5W4NqIeEzSu6k+vfAHwJXAYxHxbUkfB7LcFf+5ZB/9gScl/SQiNgIDgUUR8TVJVyRtf5nqpCAXR8RySR8EfgCcfgi/jdaDOMjKpb+kJcnrR4EbqZ7yPRERv022fxT4w67+L2AIMAE4DbgtIirAa5J+dYD2TwYe6WorIg42LtcZwCTp9wdcR0kalOzjz5Lv/kLS5gy/pksl/Wny+pik1o1AJ3BHsv3HwD3JPj4E3FWz774Z9mE9nIOsXHZExOTaDclf6G21m4BLIuKB/T73sTrW0QacHBE7D1BLZpKmUQ3FUyJiu6QFQL+DfDyS/W7Z//fAzH1kPc8DwBck9QaQ9G8lDQQeAT6Z9KF1AB85wHf/FThN0vjku8OT7W8Cg2s+9yBwSdeKpMnJy0eATyXbzgGGpdQ6BNichNjxVI8Iu7QBXUeVn6J6yroV+K2kP0/2IUknpuzDjgAOsp7nBqr9X08lE2j8L6pH3vcCy5P3/pnqCA/7iIjXgYuonsY9w95Tu58Bf9rV2Q9cCkxJLiYsY+/V029RDcKlVE8xX06pdR7QS9ILwDVUg7TLNmBq8ms4Hfh2sv3TwKykvqV4+HDDo1+YWQ/gIzIzKz0HmZmVnoPMzErPQWZmpecgM7PSc5CZWek5yMys9P4/E56xzxyh+1MAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot a confusion matrix\n", "\n", "plot_confusion_matrix(clf, X_test, y_test)\n", "confusion_matrix = plot_to_str()" ] }, { "cell_type": "markdown", "metadata": { "id": "gN48E4y-iYkT" }, "source": [ "## Create a model card" ] }, { "cell_type": "markdown", "metadata": { "id": "CBdRuxURiYkT" }, "source": [ "### Initialize toolkit and model card" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:54.564994Z", "iopub.status.busy": "2022-04-27T09:07:54.564574Z", "iopub.status.idle": "2022-04-27T09:07:54.568245Z", "shell.execute_reply": "2022-04-27T09:07:54.567778Z" }, "id": "CI9ganKQiYkT" }, "outputs": [], "source": [ "mct = mctlib.ModelCardToolkit()\n", "\n", "model_card = mct.scaffold_assets()" ] }, { "cell_type": "markdown", "metadata": { "id": "CERQtrHWiYkV" }, "source": [ "### Annotate information into model card" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:54.571582Z", "iopub.status.busy": "2022-04-27T09:07:54.571178Z", "iopub.status.idle": "2022-04-27T09:07:54.580065Z", "shell.execute_reply": "2022-04-27T09:07:54.579612Z" }, "id": "TLzNJ_kriYkV" }, "outputs": [], "source": [ "model_card.model_details.name = 'Breast Cancer Wisconsin (Diagnostic) Dataset'\n", "model_card.model_details.overview = (\n", " 'This model predicts whether breast cancer is benign or malignant based on '\n", " 'image measurements.')\n", "model_card.model_details.owners = [\n", " mctlib.Owner(name= 'Model Cards Team', contact='model-cards@google.com')\n", "]\n", "model_card.model_details.references = [\n", " mctlib.Reference(reference='https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+(Diagnostic)'),\n", " mctlib.Reference(reference='https://minds.wisconsin.edu/bitstream/handle/1793/59692/TR1131.pdf')\n", "]\n", "model_card.model_details.version.name = str(uuid.uuid4())\n", "model_card.model_details.version.date = str(date.today())\n", "\n", "model_card.considerations.ethical_considerations = [mctlib.Risk(\n", " name=('Manual selection of image sections to digitize could create '\n", " 'selection bias'),\n", " mitigation_strategy='Automate the selection process'\n", ")]\n", "model_card.considerations.limitations = [mctlib.Limitation(description='Breast cancer diagnosis')]\n", "model_card.considerations.use_cases = [mctlib.UseCase(description='Breast cancer diagnosis')]\n", "model_card.considerations.users = [mctlib.User(description='Medical professionals'), mctlib.User(description='ML researchers')]\n", "\n", "model_card.model_parameters.data.append(mctlib.Dataset())\n", "model_card.model_parameters.data[0].graphics.description = (\n", " f'{len(X_train)} rows with {len(X_train.columns)} features')\n", "model_card.model_parameters.data[0].graphics.collection = [\n", " mctlib.Graphic(image=mean_radius_train),\n", " mctlib.Graphic(image=mean_texture_train)\n", "]\n", "model_card.model_parameters.data.append(mctlib.Dataset())\n", "model_card.model_parameters.data[1].graphics.description = (\n", " f'{len(X_test)} rows with {len(X_test.columns)} features')\n", "model_card.model_parameters.data[1].graphics.collection = [\n", " mctlib.Graphic(image=mean_radius_test),\n", " mctlib.Graphic(image=mean_texture_test)\n", "]\n", "model_card.quantitative_analysis.graphics.description = (\n", " 'ROC curve and confusion matrix')\n", "model_card.quantitative_analysis.graphics.collection = [\n", " mctlib.Graphic(image=roc_curve),\n", " mctlib.Graphic(image=confusion_matrix)\n", "]\n", "\n", "mct.update_model_card(model_card)" ] }, { "cell_type": "markdown", "metadata": { "id": "TBqFqMHEiYkX" }, "source": [ "## Generate model card" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2022-04-27T09:07:54.582997Z", "iopub.status.busy": "2022-04-27T09:07:54.582515Z", "iopub.status.idle": "2022-04-27T09:07:54.623587Z", "shell.execute_reply": "2022-04-27T09:07:54.623083Z" }, "id": "XUEG7n7ciYkY" }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " Model Card for Breast Cancer Wisconsin (Diagnostic) Dataset\n", "\n", "\n", "\n", "

\n", " Model Card for Breast Cancer Wisconsin (Diagnostic) Dataset\n", "

\n", "
\n", "
\n", "

Model Details

\n", "

Overview

\n", " This model predicts whether breast cancer is benign or malignant based on image measurements.\n", "

Version

\n", " \n", " \n", "
name: b5fe505a-3f3c-4839-a668-c68f0ab32b21
\n", "\n", " \n", " \n", "
date: 2022-04-27
\n", "\n", " \n", " \n", "\n", " \n", " \n", "

Owners

\n", " \n", " Model Cards Team, model-cards@google.com\n", " \n", " \n", " \n", " \n", "

References

\n", " \n", " \n", "
\n", " \n", " \n", "
\n", "

Considerations

\n", " \n", "

Intended Users

\n", " \n", " \n", "
    \n", " \n", "
  • Medical professionals
  • \n", " \n", "
  • ML researchers
  • \n", " \n", "
\n", "\n", " \n", " \n", "

Use Cases

\n", " \n", " \n", "
    \n", " \n", "
  • Breast cancer diagnosis
  • \n", " \n", "
\n", "\n", " \n", " \n", "

Limitations

\n", " \n", " \n", "
    \n", " \n", "
  • Breast cancer diagnosis
  • \n", " \n", "
\n", "\n", " \n", " \n", " \n", "

Ethical Considerations

\n", "
    \n", "
  • \n", "
    Risk: Manual selection of image sections to digitize could create selection bias
    \n", "
    Mitigation Strategy: Automate the selection process
    \n", "
\n", "
\n", " \n", "
\n", " \n", " \n", "
\n", "

Datasets

\n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", "
\n", " \n", " \n", "
\n", " None\n", "
\n", " \n", "
\n", " None\n", "
\n", " \n", "
\n", "\n", " \n", "
\n", "
\n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", "
\n", " \n", " \n", "
\n", " None\n", "
\n", " \n", "
\n", " None\n", "
\n", " \n", "
\n", "\n", " \n", "
\n", "
\n", " \n", "
\n", "\n", " \n", " \n", " \n", "
\n", "

Quantitative Analysis

\n", " \n", " \n", " \n", "
\n", "
\n", " ROC curve and confusion matrix\n", " \n", "
\n", " \n", " \n", "
\n", " None\n", "
\n", " \n", "
\n", " None\n", "
\n", " \n", "
\n", "\n", "
\n", "
\n", "\n", " \n", "
\n", "\n", " \n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Return the model card document as an HTML page\n", "\n", "html = mct.export_format()\n", "\n", "display.display(display.HTML(html))" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "Scikit_Learn_Model_Card_Toolkit_Demo.ipynb", "provenance": [], "toc_visible": true }, "environment": { "name": "common-cpu.m56", "type": "gcloud", "uri": "gcr.io/deeplearning-platform-release/base-cpu:m56" }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }