{ "cells": [ { "cell_type": "markdown", "id": "determined-alaska", "metadata": {}, "source": [ "### OCI Data Science - Useful Tips\n", "
\n", "Check for Public Internet Access\n", "\n", "```python\n", "import requests\n", "response = requests.get(\"https://oracle.com\")\n", "assert response.status_code==200, \"Internet connection failed\"\n", "```\n", "
\n", "
\n", "Helpful Documentation \n", "\n", "
\n", "
\n", "Typical Cell Imports and Settings for ADS\n", "\n", "```python\n", "%load_ext autoreload\n", "%autoreload 2\n", "%matplotlib inline\n", "\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "import logging\n", "logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.ERROR)\n", "\n", "import ads\n", "from ads.dataset.factory import DatasetFactory\n", "from ads.automl.provider import OracleAutoMLProvider\n", "from ads.automl.driver import AutoML\n", "from ads.evaluations.evaluator import ADSEvaluator\n", "from ads.common.data import ADSData\n", "from ads.explanations.explainer import ADSExplainer\n", "from ads.explanations.mlx_global_explainer import MLXGlobalExplainer\n", "from ads.explanations.mlx_local_explainer import MLXLocalExplainer\n", "from ads.catalog.model import ModelCatalog\n", "from ads.common.model_artifact import ModelArtifact\n", "```\n", "
\n", "
\n", "Useful Environment Variables\n", "\n", "```python\n", "import os\n", "print(os.environ[\"NB_SESSION_COMPARTMENT_OCID\"])\n", "print(os.environ[\"PROJECT_OCID\"])\n", "print(os.environ[\"USER_OCID\"])\n", "print(os.environ[\"TENANCY_OCID\"])\n", "print(os.environ[\"NB_REGION\"])\n", "```\n", "
" ] }, { "cell_type": "markdown", "id": "aggressive-nutrition", "metadata": {}, "source": [ "# Foreword" ] }, { "cell_type": "markdown", "id": "potential-honolulu", "metadata": {}, "source": [ "If at any point during this sample notebook you receive a `ConfigFileNotFound` error then you just need to follow the necessary help pages for the OCI Python SDK ([here](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm) and [here](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#apisigningkey_topic_How_to_Generate_an_API_Signing_Key_Console)) to create the config and pem files and place them in the necessary directory (`~/.oci/`)." ] }, { "cell_type": "markdown", "id": "charged-outside", "metadata": {}, "source": [ "# Training SVM to Classify Handwritten Digits" ] }, { "cell_type": "markdown", "id": "south-extraction", "metadata": {}, "source": [ "In this example we're training a Support Vector Machine from scikit-learn's library to classify images of handwritten digits." ] }, { "cell_type": "code", "execution_count": 13, "id": "exposed-kidney", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "from sklearn import datasets, svm, metrics\n", "from sklearn.model_selection import train_test_split\n", "\n", "# Load dataset\n", "digits = datasets.load_digits()\n", "\n", "# Flatten images\n", "n_samples = len(digits.images)\n", "data = digits.images.reshape((n_samples, -1))\n", "\n", "# Create Support Vector Machine\n", "clf = svm.SVC(gamma=0.001)\n", "\n", "# Split data into 50% train and 50% test subsets\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " data, digits.target, test_size=0.5, shuffle=False)\n", "\n", "# Train the SVM\n", "clf.fit(X_train, y_train)\n", "\n", "# Evaluate model on test set\n", "predicted = clf.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 14, "id": "municipal-judgment", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Classification report for classifier SVC(gamma=0.001):\n", " precision recall f1-score support\n", "\n", " 0 1.00 0.99 0.99 88\n", " 1 0.99 0.97 0.98 91\n", " 2 0.99 0.99 0.99 86\n", " 3 0.98 0.87 0.92 91\n", " 4 0.99 0.96 0.97 92\n", " 5 0.95 0.97 0.96 91\n", " 6 0.99 0.99 0.99 91\n", " 7 0.96 0.99 0.97 89\n", " 8 0.94 1.00 0.97 88\n", " 9 0.93 0.98 0.95 92\n", "\n", " accuracy 0.97 899\n", " macro avg 0.97 0.97 0.97 899\n", "weighted avg 0.97 0.97 0.97 899\n", "\n", "\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV8AAABnCAYAAACn60H1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAJeklEQVR4nO3dXYxdVRXA8f/iowVBZ6oxaittEaNRjLSKIhFsQ3wwKmmDoiZoOjUhIfELXgwPYptQjPICIiAJMYzRhGAimRoTE0Uoihjka/rgA4HYjrTYytdMRIha3D6cU7lAZ87q9NzZtP3/kknm3rvuPueue+66p2f26o5SCpKkhXVM7R2QpKORxVeSKrD4SlIFFl9JqsDiK0kVWHwlqYKqxTcixiNiS/v7uRHxyDzHuSkiruh37w5/5nd4zO3wHC257Sy+EbEzIl6IiOciYm+bmJP73pFSyu9LKe9O7M9YRNzziudeUkq5su99OsC2IyK2RMTuiJiJiG0Rcfohjml+X9p2r/k1t7Pux28jokTEcYcwhrl9aduLI+KaiHgiIp6NiBsj4viu52XPfM8vpZwMfAA4E/jWAXZg3m/kYeRC4MvAucAbgT8CP+lhXPPbGEZ+ze2AiLgI6CwMSea2cTnN638f8C6afLwqF690UJcdSim7gV+1G6H99vxKRDwKPNre9+mImIyI6Yi4NyLev//5EbE6Ih6KiH9ExG3ACQOPrY2IXQO3T4mI2yPiyYh4OiKuj4j3ADcBZ7ffuNNt7P//mdLevjgiHouIZyLiFxGxdOCxEhGXRMSj7T7eEBGRTMGpwD2llL+UUl4Efgq892ByOBfzO7z8mluIiBFgE/DNg0zfnMwt5wPXlVKeKaU8CVxHcxLRmbg5f4CdwMfb308B/gxc2d4uwG9ozlJOBFYDfwfOAo4FNrTPXwwsAqaAy2i+eT8L/AfY0o61FtjV/n4ssB24BjiJ5s04p31sjOYDOriP4wPjnAc8RfPtsxj4AfC7gdgC/BIYBZYDTwKfaB9bDkwDy2fJxQrgQZpvt+OBq4GJrhya3zr5NbevyscN7WtY2Y51nLnt5bh9APjcwO2L2vFG5sxhMsnPtRufAm4EThzY4fMGYn+4/w0YuO8RYA3wMeAJIAYeu3eWJJ/dvvhXHRyJJP8IuHrgsZPbN3PlwD6fM/D4z4DLkwfcIuD77Rj7gB3AqfM9gM3vcPNrbl+2nTOBSeA4+iu+5raJ3QL8AXgz8Fbgvna8t831vOz1mPWllDtmeezxgd9XABsi4msD9y0ClrY7s7u0e9uammXMU4CpUsq+5P4NWgo8tP9GKeW5iHgaWEZzwADsGYh/nuaNyPg28KF2//YAXwTujIjTSynPz2Nf9zO/jWHk96jPbUQcQ1Mcv1FK2XcQVyq6HPW5bV1Fc8Y8CfwLuJnmbH/vXE/qY6rZYNIeB64qpYwO/LyulHIr8Ddg2SuuoyyfZczHgeVx4Iv15QD3DXqC5s0GICJOAt4E7O56IQmrgNtKKbtKKftKKePAEnq87nsA5nd4+T1acvsGmjPf2yJiD3B/e/+uiDj3EMeezdGSW0opL5RSvlpKWVZKeQfwNPBgKeW/cz2v73m+NwOXRMRZ0TgpIj4VEa+n+cv1PuDrEXF8RFwAfHiWcf5E86Z8tx3jhIj4aPvYXuDtEbFolufeCmyMiFURsRj4DnBfKWVnD6/vfuDCiHhLRBwTEV+iuU71WA9jZ5jf4TmScztDc+a3qv35ZHv/B2n+iTxsR3JuiYhlEbG0fW0fAa6g+cPmnHotvqWUB4CLgeuBZ2k+NGPtY/8GLmhvPwN8Hrh9lnFepPkL4juBvwK72niAO2ku7u+JiKcO8Nw7aF78z2neqNOAL2T2PyKWR/PX0tm+eb9Hc8F/kuZa12XAZ0op05nxD5X5HZ4jObelsWf/D811U4C97WsbqiM5t63TaK5T/xP4Mc214l93jvvySy2SpIXg/+0gSRVYfCWpAouvJFVg8ZWkCiy+klRBpsOtl+kQ09PTnTFjY2OdMZOTk71tb9u2bZ0xq1atymzuUFqGesnv+Ph4Z8zmzZs7Y6amZmsuermJiYnOmHXr1qXGSphvfhdsKk/mWFq/fn1qrGuvvbYzJvNZSaqa28znNHPcZo5/gLVr1/ayvT7qgme+klSBxVeSKrD4SlIFFl9JqsDiK0kVWHwlqQKLryRVYPGVpAp6WdY5M1E6M7l5+/btnTFr1qxJ7BHcfffdnTGZRoHkZOqh2rlzZ2fMxo0bh78jA3bs2LGg23utu/TSSztjVq5cmRor24xxJMi81sxnMPMZgf4aufqoC575SlIFFl9JqsDiK0kVWHwlqQKLryRVYPGVpAosvpJUgcVXkiropcki8z/vZxoo7rrrrs6Y7GTqTJPF6tWrU2MdDkZGRjpjZmZmehkHjq5GgL6O72xjyujoaCruSJBp0Mo0p2QapgC2bt3aGbNQjVWe+UpSBRZfSarA4itJFVh8JakCi68kVWDxlaQKLL6SVIHFV5Iq6KXJItOskJm8n5nMnm2yWLFiRWfMunXrUmPVlplknsldn6tdZCa1Z1Z3qG3btm2dMZs3b+6M2bRpU2dMdiWLTCPA4XLsdskct+Pj450x2bqQqUOZVXf64JmvJFVg8ZWkCiy+klSBxVeSKrD4SlIFFl9JqsDiK0kVWHwlqYIopXTFdAZkZCZBj42NdcZkVqgAOOOMMzpjJicnU2MlxCE8t5f8ZibwZyaPZyeYZxo2Hn744c6Y5KoB881vZ24zK3JkjpNMTHa1hUxuM2MlGzGGltvXoszxnalDmRg6cuuZryRVYPGVpAosvpJUgcVXkiqw+EpSBRZfSarA4itJFVh8JakCi68kVdDLMkIZmQ6s6enp3ra3ffv2zpjM8iTJTpahyuRlamqqMyazrE+y4yzVhZVZoie7vfnI5C2zZE9mSapMp1y2OzMjs0+1ZZZfGh0d7YzpczmqTCfikiVLetveXDzzlaQKLL6SVIHFV5IqsPhKUgUWX0mqwOIrSRVYfCWpAouvJFWwYE0WGZnGiD712dQxTJmJ6Bs2bOiMyUx6zxoZGemMyS5JNCx95S2zBFamiSjbZJHZp2E2p/Ql0xzR1zJO2WaomZmZzpiFamDxzFeSKrD4SlIFFl9JqsDiK0kVWHwlqQKLryRVYPGVpAosvpJUQZRSumI6A/qSmXCdmfAOuQn2ExMTvYwDRCZoFr3kNzMRPZPfzIoYALfccktnTI+rgMw3vwt27GZWRcms/gGwY8eOzphMU0fSaz63mYaSbIPWpk2bOmN6bEaaM7ee+UpSBRZfSarA4itJFVh8JakCi68kVWDxlaQKLL6SVIHFV5IqyDRZSJJ65pmvJFVg8ZWkCiy+klSBxVeSKrD4SlIFFl9JquB/LgmCB0va8CkAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Print classification report\n", "print(f\"Classification report for classifier {clf}:\\n\"\n", " f\"{metrics.classification_report(y_test, predicted)}\\n\")\n", "\n", "# Display confusion matrix\n", "metrics.plot_confusion_matrix(clf, X_test, y_test)\n", "plt.suptitle(\"Confusion Matrix\")\n", "plt.show()\n", "\n", "# Display sample digits and their classifications\n", "_, axes = plt.subplots(nrows=1, ncols=4)\n", "for ax, image, prediction in zip(axes, X_test, predicted):\n", " ax.set_axis_off()\n", " image = image.reshape(8, 8)\n", " ax.imshow(image, cmap=plt.cm.gray_r)\n", " ax.set_title(f'Prediction: {prediction}')" ] }, { "cell_type": "markdown", "id": "comfortable-soviet", "metadata": {}, "source": [ "# Creating Model Artifact" ] }, { "cell_type": "markdown", "id": "local-preparation", "metadata": {}, "source": [ "We can now move on to creating a model artifact, this saves your trained model to the cloud from which you can deploy your API." ] }, { "cell_type": "code", "execution_count": 15, "id": "handled-hybrid", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value='loop1'), FloatProgress(value=0.0, max=4.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:ADS:We give you the option to specify a different inference conda environment for model deployment purposes. By default it is assumed to be the same as the conda environment used to train the model. If you wish to specify a different environment for inference purposes, please assign the path of a published or data science conda environment to the optional parameter `inference_conda_env`. \n" ] }, { "data": { "text/plain": [ "['./svm-digit-classifier/svm.joblib']" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import os\n", "from ads.common.model_artifact import ModelArtifact\n", "from ads.common.model_export_util import prepare_generic_model\n", "from joblib import dump\n", "\n", "# Create model artifact directory\n", "path_to_artifact = f\"./svm-digit-classifier\"\n", "if not os.path.exists(path_to_artifact):\n", " os.mkdir(path_to_artifact)\n", " \n", "# Create artifact object\n", "artifact = prepare_generic_model(path_to_artifact, function_artifacts=False, force_overwrite=True, data_science_env=True)\n", "dump(clf, os.path.join(path_to_artifact, \"svm.joblib\"))" ] }, { "cell_type": "code", "execution_count": 16, "id": "environmental-prior", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Overwriting ./svm-digit-classifier/score.py\n" ] } ], "source": [ "%%writefile {path_to_artifact}/score.py\n", "\n", "import json\n", "import os\n", "from joblib import load\n", "import pandas as pd\n", "import io\n", "import logging \n", "import sys\n", "\n", "# logging configuration - OPTIONAL \n", "# Logging to stdout is required for the logs to appear in OCI Console\n", "logging.basicConfig(stream=sys.stdout, format='%(name)s - %(levelname)s - %(message)s', level=logging.INFO)\n", "logger_pred = logging.getLogger('model-prediction')\n", "logger_pred.setLevel(logging.INFO)\n", "logger_feat = logging.getLogger('input-features')\n", "logger_feat.setLevel(logging.INFO)\n", "\n", "\"\"\"\n", " Inference script. This script is used for prediction by scoring server when schema is known.\n", "\"\"\"\n", "\n", "\n", "def load_model():\n", " \"\"\"\n", " Loads model from the serialized format\n", "\n", " Returns\n", " -------\n", " model: a model instance on which predict API can be invoked\n", " \"\"\"\n", " model_dir = os.path.dirname(os.path.realpath(__file__))\n", " contents = os.listdir(model_dir)\n", " model_file_name = \"svm.joblib\"\n", " # TODO: Load the model from the model_dir using the appropriate loader\n", " # Below is a sample code to load a model file using `cloudpickle` which was serialized using `cloudpickle`\n", " # from cloudpickle import cloudpickle\n", " if model_file_name in contents:\n", " with open(os.path.join(os.path.dirname(os.path.realpath(__file__)), model_file_name), \"rb\") as file:\n", " model = load(file) # Use the loader corresponding to your model file.\n", " else:\n", " raise Exception('{0} is not found in model directory {1}'.format(model_file_name, model_dir))\n", " \n", " return model\n", "\n", "\n", "def predict(data, model=load_model()) -> dict:\n", " \"\"\"\n", " Returns prediction given the model and data to predict\n", "\n", " Parameters\n", " ----------\n", " model: Model instance returned by load_model API\n", " data: Data format as expected by the predict API of the core estimator. For eg. in case of sckit models it could be numpy array/List of list/Panda DataFrame\n", "\n", " Returns\n", " -------\n", " predictions: Output from scoring server\n", " Format: { 'prediction': output from `model.predict` method }\n", "\n", " \"\"\"\n", " assert model is not None, \"Model is not loaded\"\n", " X = pd.read_json(io.StringIO(data)) if isinstance(data, str) else pd.DataFrame.from_dict(data)\n", " preds = model.predict(X).tolist()\n", " # to logging service: \n", " logger_pred.info(preds)\n", " logger_feat.info(X)\n", " return { 'prediction': preds }" ] }, { "cell_type": "markdown", "id": "configured-edinburgh", "metadata": {}, "source": [ "# Saving Model Artifact to Model Catalogue" ] }, { "cell_type": "code", "execution_count": 17, "id": "funny-explosion", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WARNING:ADS:Training script /home/datascience does not exists.\n", "INFO:ADS:{\n", " \"git_branch\": \"None\",\n", " \"git_commit\": \"None\",\n", " \"repository_url\": \"None\",\n", " \"script_dir\": \"/home/datascience/svm-digit-classifier\",\n", " \"training_script\": \"CAN_BE_INVALID:/home/datascience\"\n", "}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value='loop1'), FloatProgress(value=0.0, max=4.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Get test data\n", "input_data = pd.DataFrame(X_test[:5])\n", "input_data_json = input_data.to_json()\n", "\n", "# Capturing a sample payload file for testing the Function in production: \n", "with open(os.path.join(path_to_artifact, \"sample-payload.json\"),'w') as f:\n", " json.dump(input_data_json, f)\n", " \n", "# Saving the model artifact to the model catalog.\n", "compartment_id = os.environ['NB_SESSION_COMPARTMENT_OCID']\n", "project_id = os.environ[\"PROJECT_OCID\"]\n", "\n", "catalog_entry = artifact.save(\n", " project_id=project_id,\n", " compartment_id=compartment_id,\n", " display_name='sklearn-digit-recognition-1', \n", " description='SVM trained to recognise handwritten digits.',\n", " training_script_path='',\n", " ignore_pending_changes=True\n", ")" ] }, { "cell_type": "markdown", "id": "identified-landing", "metadata": {}, "source": [ "# Deploying the Model" ] }, { "cell_type": "markdown", "id": "careful-observer", "metadata": {}, "source": [ "Deploying the model from this point on is most intuitively done from the OCI console. Please proceed to the Data Science Project you created for this notebook, go to the 'Models' tab displayed on the left, and select the 'sklearn-digit-recognition-1' model we've just created. From there it's as simple as pressing the 'Create Deployment' button and you're done! We can now move on to invoking your model." ] }, { "cell_type": "markdown", "id": "going-lesson", "metadata": {}, "source": [ "# Making Classification Requests to Your Model Endpoint" ] }, { "cell_type": "markdown", "id": "spread-strike", "metadata": {}, "source": [ "On your model deployment page in the OCI console, go to the 'Invoking Your Model' page and copy the model HTTP endpoint." ] }, { "cell_type": "code", "execution_count": 52, "id": "close-devon", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "your-uri-here\n" ] } ], "source": [ "import os\n", "import requests\n", "import oci\n", "from oci.signer import Signer\n", "\n", "uri = 'your-uri-here'\n", "print(uri)" ] }, { "cell_type": "code", "execution_count": 50, "id": "regulation-november", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'prediction': [8, 8, 4, 9, 0, 8, 9, 8, 1, 2]}\n", "CPU times: user 39.2 ms, sys: 5.36 ms, total: 44.5 ms\n", "Wall time: 346 ms\n" ] } ], "source": [ "%%time \n", "\n", "# using resource principals. You can alternatively use the config+key flow. \n", "\n", "# Using Resource principal to authenticate against the model endpoint. Set using_rps=False if you are using \n", "# the config+key flow. \n", "using_rps = False\n", "endpoint = uri\n", "\n", "# payload: \n", "input_data = pd.DataFrame(X_test[0:10]).to_json()\n", "body = input_data\n", "\n", "if using_rps: # using resource principal: \n", " auth = oci.auth.signers.get_resource_principals_signer()\n", "else: # using config + key: \n", " config = oci.config.from_file(\"~/.oci/config\") # replace with the location of your oci config file\n", " auth = Signer(\n", " tenancy=config['tenancy'],\n", " user=config['user'],\n", " fingerprint=config['fingerprint'],\n", " private_key_file_location=config['key_file'],\n", " pass_phrase=config['pass_phrase'])\n", " \n", "# submit request to model endpoint:\n", "response = requests.post(endpoint, json=input_data, auth=auth).json()\n", "print(response)" ] }, { "cell_type": "code", "execution_count": 51, "id": "national-professional", "metadata": {}, "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" }, { "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" }, { "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" }, { "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" }, { "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": [ "# Display sample digits and their classifications\n", "for image, prediction in zip(X_test, response['prediction']):\n", " image = image.reshape(8, 8)\n", " plt.imshow(image, cmap=plt.cm.gray_r)\n", " plt.title(f'Prediction: {prediction}')\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "cognitive-timothy", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:mlcpuv1]", "language": "python", "name": "conda-env-mlcpuv1-py" }, "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.6.11" } }, "nbformat": 4, "nbformat_minor": 5 }