{ "cells": [ { "cell_type": "markdown", "id": "intense-ecology", "metadata": {}, "source": [ "# Neural Network Classifier & Regressor\n", "\n", "In this tutorial we show how the `NeuralNetworkClassifier` and `NeuralNetworkRegressor` are used.\n", "Both take as an input a (Quantum) `NeuralNetwork` and leverage it in a specific context.\n", "In both cases we also provide a pre-configured variant for convenience, the Variational Quantum Classifier (`VQC`) and Variational Quantum Regressor (`VQR`). The tutorial is structured as follows:\n", "\n", "\n", "1. [Classification](#Classification) \n", " * Classification with an `EstimatorQNN`\n", " * Classification with a `SamplerQNN`\n", " * Variational Quantum Classifier (`VQC`)\n", " \n", " \n", "2. [Regression](#Regression)\n", " * Regression with an `EstimatorQNN`\n", " * Variational Quantum Regressor (`VQR`)" ] }, { "cell_type": "code", "execution_count": 1, "id": "functioning-sword", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from IPython.display import clear_output\n", "from qiskit import QuantumCircuit\n", "from qiskit.circuit import Parameter\n", "from qiskit.circuit.library import RealAmplitudes, ZZFeatureMap\n", "from qiskit_algorithms.optimizers import COBYLA, L_BFGS_B\n", "from qiskit_algorithms.utils import algorithm_globals\n", "\n", "from qiskit_machine_learning.algorithms.classifiers import NeuralNetworkClassifier, VQC\n", "from qiskit_machine_learning.algorithms.regressors import NeuralNetworkRegressor, VQR\n", "from qiskit_machine_learning.neural_networks import SamplerQNN, EstimatorQNN\n", "from qiskit_machine_learning.circuit.library import QNNCircuit\n", "\n", "algorithm_globals.random_seed = 42" ] }, { "cell_type": "markdown", "id": "compact-divide", "metadata": {}, "source": [ "## Classification\n", "\n", "We prepare a simple classification dataset to illustrate the following algorithms." ] }, { "cell_type": "code", "execution_count": 2, "id": "short-pierre", "metadata": { "tags": [ "nbsphinx-thumbnail" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_inputs = 2\n", "num_samples = 20\n", "X = 2 * algorithm_globals.random.random([num_samples, num_inputs]) - 1\n", "y01 = 1 * (np.sum(X, axis=1) >= 0) # in { 0, 1}\n", "y = 2 * y01 - 1 # in {-1, +1}\n", "y_one_hot = np.zeros((num_samples, 2))\n", "for i in range(num_samples):\n", " y_one_hot[i, y01[i]] = 1\n", "\n", "for x, y_target in zip(X, y):\n", " if y_target == 1:\n", " plt.plot(x[0], x[1], \"bo\")\n", " else:\n", " plt.plot(x[0], x[1], \"go\")\n", "plt.plot([-1, 1], [1, -1], \"--\", color=\"black\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "religious-history", "metadata": {}, "source": [ "### Classification with an `EstimatorQNN`\n", "\n", "First we show how an `EstimatorQNN` can be used for classification within a `NeuralNetworkClassifier`. In this context, the `EstimatorQNN` is expected to return one-dimensional output in $[-1, +1]$. This only works for binary classification and we assign the two classes to $\\{-1, +1\\}$. To simplify the composition of parameterized quantum circuit from a feature map and an ansatz we can use the `QNNCircuit` class. " ] }, { "cell_type": "code", "execution_count": 3, "id": "ceed90df", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# construct QNN with the QNNCircuit's default ZZFeatureMap feature map and RealAmplitudes ansatz.\n", "qc = QNNCircuit(num_qubits=2)\n", "qc.draw(output=\"mpl\")" ] }, { "cell_type": "markdown", "id": "formed-animal", "metadata": {}, "source": [ "Create a quantum neural network" ] }, { "cell_type": "code", "execution_count": 4, "id": "determined-hands", "metadata": {}, "outputs": [], "source": [ "estimator_qnn = EstimatorQNN(circuit=qc)" ] }, { "cell_type": "code", "execution_count": 5, "id": "acute-casting", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0.23521988]])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# QNN maps inputs to [-1, +1]\n", "estimator_qnn.forward(X[0, :], algorithm_globals.random.random(estimator_qnn.num_weights))" ] }, { "cell_type": "markdown", "id": "stone-holiday", "metadata": {}, "source": [ "We will add a callback function called `callback_graph`. This will be called for each iteration of the optimizer and will be passed two parameters: the current weights and the value of the objective function at those weights. For our function, we append the value of the objective function to an array so we can plot iteration versus objective function value and update the graph with each iteration. However, you can do whatever you want with a callback function as long as it gets the two parameters mentioned passed. " ] }, { "cell_type": "code", "execution_count": 6, "id": "similar-controversy", "metadata": {}, "outputs": [], "source": [ "# callback function that draws a live plot when the .fit() method is called\n", "def callback_graph(weights, obj_func_eval):\n", " clear_output(wait=True)\n", " objective_func_vals.append(obj_func_eval)\n", " plt.title(\"Objective function value against iteration\")\n", " plt.xlabel(\"Iteration\")\n", " plt.ylabel(\"Objective function value\")\n", " plt.plot(range(len(objective_func_vals)), objective_func_vals)\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 7, "id": "lesser-receiver", "metadata": {}, "outputs": [], "source": [ "# construct neural network classifier\n", "estimator_classifier = NeuralNetworkClassifier(\n", " estimator_qnn, optimizer=COBYLA(maxiter=60), callback=callback_graph\n", ")" ] }, { "cell_type": "code", "execution_count": 8, "id": "adopted-editor", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "0.8" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create empty array for callback to store evaluations of the objective function\n", "objective_func_vals = []\n", "plt.rcParams[\"figure.figsize\"] = (12, 6)\n", "\n", "# fit classifier to data\n", "estimator_classifier.fit(X, y)\n", "\n", "# return to default figsize\n", "plt.rcParams[\"figure.figsize\"] = (6, 4)\n", "\n", "# score classifier\n", "estimator_classifier.score(X, y)" ] }, { "cell_type": "code", "execution_count": 9, "id": "civilian-analysis", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# evaluate data points\n", "y_predict = estimator_classifier.predict(X)\n", "\n", "# plot results\n", "# red == wrongly classified\n", "for x, y_target, y_p in zip(X, y, y_predict):\n", " if y_target == 1:\n", " plt.plot(x[0], x[1], \"bo\")\n", " else:\n", " plt.plot(x[0], x[1], \"go\")\n", " if y_target != y_p:\n", " plt.scatter(x[0], x[1], s=200, facecolors=\"none\", edgecolors=\"r\", linewidths=2)\n", "plt.plot([-1, 1], [1, -1], \"--\", color=\"black\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "japanese-seattle", "metadata": {}, "source": [ "Now, when the model is trained, we can explore the weights of the neural network. Please note, the number of weights is defined by ansatz." ] }, { "cell_type": "code", "execution_count": 10, "id": "offshore-basket", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 7.99142399e-01, -1.02869770e+00, -1.32131512e-04, -3.47046684e-01,\n", " 1.13636802e+00, 6.56831727e-01, 2.17902158e+00, -1.08678332e+00])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "estimator_classifier.weights" ] }, { "cell_type": "markdown", "id": "determined-standing", "metadata": {}, "source": [ "### Classification with a `SamplerQNN`\n", "\n", "Next we show how a `SamplerQNN` can be used for classification within a `NeuralNetworkClassifier`. In this context, the `SamplerQNN` is expected to return $d$-dimensional probability vector as output, where $d$ denotes the number of classes. \n", "The underlying `Sampler` primitive returns quasi-distributions of bit strings and we just need to define a mapping from the measured bitstrings to the different classes. For binary classification we use the parity mapping. Again we can use the `QNNCircuit` class to set up a parameterized quantum circuit from a feature map and ansatz of our choice." ] }, { "cell_type": "code", "execution_count": 11, "id": "d1ff56f4", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# construct a quantum circuit from the default ZZFeatureMap feature map and a customized RealAmplitudes ansatz\n", "qc = QNNCircuit(ansatz=RealAmplitudes(num_inputs, reps=1))\n", "qc.draw(output=\"mpl\")" ] }, { "cell_type": "code", "execution_count": 12, "id": "young-sensitivity", "metadata": {}, "outputs": [], "source": [ "# parity maps bitstrings to 0 or 1\n", "def parity(x):\n", " return \"{:b}\".format(x).count(\"1\") % 2\n", "\n", "\n", "output_shape = 2 # corresponds to the number of classes, possible outcomes of the (parity) mapping." ] }, { "cell_type": "code", "execution_count": 13, "id": "statutory-mercury", "metadata": {}, "outputs": [], "source": [ "# construct QNN\n", "sampler_qnn = SamplerQNN(\n", " circuit=qc,\n", " interpret=parity,\n", " output_shape=output_shape,\n", ")" ] }, { "cell_type": "code", "execution_count": 14, "id": "hybrid-orlando", "metadata": {}, "outputs": [], "source": [ "# construct classifier\n", "sampler_classifier = NeuralNetworkClassifier(\n", " neural_network=sampler_qnn, optimizer=COBYLA(maxiter=30), callback=callback_graph\n", ")" ] }, { "cell_type": "code", "execution_count": 15, "id": "adult-newman", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "0.7" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create empty array for callback to store evaluations of the objective function\n", "objective_func_vals = []\n", "plt.rcParams[\"figure.figsize\"] = (12, 6)\n", "\n", "# fit classifier to data\n", "sampler_classifier.fit(X, y01)\n", "\n", "# return to default figsize\n", "plt.rcParams[\"figure.figsize\"] = (6, 4)\n", "\n", "# score classifier\n", "sampler_classifier.score(X, y01)" ] }, { "cell_type": "code", "execution_count": 16, "id": "angry-bulgarian", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA2kklEQVR4nO3deXgUVdbA4d9JIEBUwiIqLklcGAcIe0AEBTWooAIqKpsMfi4B0VFGHUXjKC64jIPiCoZFUQKKCgIjCAqiogwS1oQgIyABxAFUCEpYw/n+qE5oQmft7lQnfd7n6ae6b92qOul0+qRu3bpXVBVjjDHhK8LtAIwxxrjLEoExxoQ5SwTGGBPmLBEYY0yYs0RgjDFhrprbAZTHySefrPHx8W6HYYwxlcqyZct+UdUGhcsrZSKIj48nPT3d7TCMMaZSEZFsX+XWNGSMMWHOEoExxoQ5SwTGGBPmLBEYY0yYs0RgjDFhLiCJQEQmiMgOEcksYr2IyCsisl5EVotIa691XUVknWfdsEDEY4wxpvQCdUbwNtC1mPXdgEaeRzIwGkBEIoHXPeubAH1FpEmAYjLGGFMKAUkEqvoV8FsxVXoC76jjP0AdEWkItAPWq+pGVT0IvOepGzTff/89eXl5wTyEMcZUKhV1jeAMYIvX662esqLKjyMiySKSLiLpO3fuLFcQu3bt4qKLLqJjx46sWbOmXPswxpiqpqISgfgo02LKjy9UTVXVRFVNbNDguDukS6VOnTq88sorrF+/nlatWvHUU09x8ODBcu3LGGOqiopKBFuBs7xenwlsK6Y8KESEfv36sXbtWnr16sVjjz1GYmIiOTk5QTleWhrEx0NEhLNMSwvKYYwxxi8VlQhmAn/x9B5qD+So6s/AUqCRiJwtIlFAH0/doGrQoAFTpkxhxowZdO7cmZiYGAACOW1nWhokJ0N2Nqg6y+RkSwbGmNATqO6jU4DFwPkislVEbhORwSIy2FNlNrARWA+MBYYAqOph4G5gLrAWmKqqFdZ436NHD1599VXAuYjcvHlzvvzyy4DsOyUFcnOPLcvNdcqNCWd2phx6AjL6qKr2LWG9AncVsW42TqJw1Z49e8jNzeWSSy5h8ODBPP/889SuXbvc+9u8uWzlxoSD/DPl/H+S8s+UAfr3dy+ucGd3Fnu0a9eOjIwM7rvvPlJTU2natCmffPJJufcXG1u2cmPCgZ0phyZLBF6io6MZOXIk3377LTExMSxYsKDc+xoxAqKjC+/fKTcmXNmZcmiqlBPTBNsFF1zA8uXLC248+/rrr9m6dSt9+vRBxFeP1+Pln+ampDgf8thYJwnY6a8JZ7GxTnOQr3LjHjsjKEJUVBS1atUCYPTo0fTr14+ePXvy008/lXof/fvDpk1w5IiztCRgwp2dKYcmSwSl8O677zJy5Eg+//xzmjRpwtixYwPa1dSYcNG/P6SmQlwciDjL1FT7J8ltUhm/0BITE9WNOYs3bNjAHXfcwRdffMF7771H7969KzwGY4wpLxFZpqqJhcvtjKAMzj33XObPn8+HH37IDTfcAMDatWttELsKYv3PjQkOSwRlJCL06tWLyMhIdu3axcUXX0yHDh3IzPQ5FYMJELtT25jgsUTghzp16vDaa6+xceNGWrduzfDhw20QuyCx/ufGBI8lAj+ICH369GHt2rXceOONPPHEE7Ru3Zrdu3e7HVqVY/3PjQkeSwQBcPLJJ5OWlsasWbO47LLLqFOnDgBHjhxxN7AqxO7UNiZ4LBEE0DXXXMMrr7wCOIPYJSQk+HV3sjnK+p8bEzyWCILk999/59ChQyQlJXHHHXdYc5GfrP+5qcrc7hFn9xEE0b59+xg+fDj/+te/OO200xg9ejQ9evRwOyxjTAgpPCIrOGe7wfhHx+4jcEGtWrV4/vnnWbJkCfXr1+frr792OyRjTIgJhR5xNuhcBUhMTCQ9Pb3g4vHXX3/N5s2b6devX6kHsTPGVE2h0CMuUDOUdRWRdSKyXkSG+Vj/dxFZ6XlkikieiNTzrNskIhmedaHf3lNOUVFR1KxZE4A333yTm2++me7du7NlyxaXIzPGuCkUesT5nQhEJBJ4HegGNAH6ikgT7zqq+oKqtlTVlsDDwJeq+ptXlUs9649ru6qKJk6cyKhRo/jiiy9o2rQpY8aMsa6mxoSpUOgRF4gzgnbAelXdqKoHgfeAnsXU7wtMCcBxK63IyEjuvfdeMjIyaNeuHXfeeScffPCB22EZY1wQCj3i/O41JCI3AF1V9XbP6wHABap6t4+60cBW4Lz8MwIR+RHYBSjwpqqmFnGcZCAZIDY2tk22r9ktKiFV5eOPP6ZHjx5ERkayZs0azj//fKpVs8s3xpjACmavIV9XO4vKLt2Bbwo1C3VU1dY4TUt3iUgnXxuqaqqqJqpqYoMGDfyLOISICNdddx2RkZHs3r2bTp060b59e1atWuV2aMaYMBGIRLAVOMvr9ZnAtiLq9qFQs5CqbvMsdwDTcZqawlJMTAxjxoxhy5YtJCYm8o9//IMDBw64HZYxpooLRCJYCjQSkbNFJArny35m4UoiEgN0BmZ4lZ0gIiflPweuAMJ2PGcR4cYbbyQrK4t+/frx9NNP06pVK7sr2RgTVH43RKvqYRG5G5gLRAITVHWNiAz2rB/jqXodME9V93ptfiow3dOXvhowWVU/9Temyq5+/fpMnDiRvn37Mnfu3GMGsYuIsHsAjTGBZUNMVBJr167l+uuv59VXX6VLly5uh2OMqYRsiIlKbu/eveTl5XH55Zdz2223WXORMSZgLBFUEomJiaxatYphw4YxceJEmjRpwscff+x2WKaScnu0SxNaLBFUIrVq1eLZZ5/lu+++49RTT+Wbb75xOyRTCdn8z6Ywu0ZQSR06dIi8vDxq1qzJl19+SXZ2NgMGDLBB7EyJ4uOdL//C4uJg06aKjsZUJLtGUMVUr169YBC7cePGMXDgQLp160ZVuePaBE8ojHZpQoslgipg4sSJvPLKKyxatIiEhARef/11G8TOFCkURrs0ocUSQRUQERHBX//6VzIzM+nQoQN33303U6dOdTssE6JCYbRLE1osEVQh8fHxfPrpp8yYMYObbroJgIyMDA4dOuRyZCaUhMJolya02MXiKmz37t2ce+65xMXFMX78eFq1auV2SMYYF9nF4jBUp04dUlNT2bZtG23btiUlJYX9+/e7HZYxx7H7GtxliaCK69WrF1lZWQwYMIBnnnmGli1b2l3JJqTYfQ3us0QQBurVq8dbb73F3Llzufrqq48ZxM4Yt6WkQG7usWW5uU65qRiWCMLIFVdcwciRIwFnELvGjRszb948l6My4c7ua3CfJYIwtW/fPiIiIrjyyiv5v//7P3777beSNzImCOy+BvdZIghTrVu3ZsWKFaSkpPDuu+/SpEkTpk2b5nZYJgzZfQ3us0QQxmrWrMnTTz9Neno6p59+OkuWLHE7JBOG7L4G9wXkPgIR6Qq8jDND2ThVfa7Q+ktwpqj80VM0TVWfLM22vth9BIF3+PBh8vLyqFGjBl9++SUbN27klltusUHsjKlCgnYfgYhEAq8D3YAmQF8RaeKj6teq2tLzeLKM25ogq1atGjVq1ABg/Pjx3HrrrVx55ZVssuEojanyAtE01A5Yr6obVfUg8B7QswK2NUHy9ttv8/rrr7N48WISEhJ49dVXraupMVVYIBLBGcAWr9dbPWWFXSgiq0Rkjog0LeO2iEiyiKSLSPrOnTsDELYpSkREBEOGDGHNmjVcfPHF3HPPPTaInTFVWCASga9G5MIXHpYDcaraAngV+LgM2zqFqqmqmqiqiQ0aNChvrKYMYmNjmT17NrNmzSoYxG716tU2iJ0xVUwgEsFW4Cyv12cC27wrqOoeVf3D83w2UF1ETi7NtsZdIsI111xDREQEu3fv5pJLLqFt27YsX77c7dCMMQESiESwFGgkImeLSBTQB5jpXUFEThNP9xMRaec57q+l2daEjjp16jB+/Hi2b99Ou3btGDZsGPv27XM7LGOMn/xOBKp6GLgbmAusBaaq6hoRGSwigz3VbgAyRWQV8ArQRx0+t/U3pirnjz9gwwZYtw5+/dXVUK677jqysrK45ZZbeP7552nRooUNYmdMJWfzEYQqVfj6a3jjDfjoIzh8+Oi6iy6CIUOgVy+IinItxPnz5/Ppp5/ywgsvAJCXl0dkZKRr8RhjimfzEVQmu3fDlVdC587w/vtw5IgzSPt550GtWrBoEfTrB+efD5mZroWZlJRUkASysrL485//zJw5c1yLxxhTPpYIQs3vv8Nll8Fnn0H9+vCPf8CmTfDjj/DDD7B9O4weDY0bO+UXXwwZGeU7zltvwaOPwoMPwrPPwooV5Q77wIEDREVFcdVVV/GXv/yFX11uwjKmJDYZjhdVrXSPNm3aaJXVt68qqJ53nuqPPxZdLzdXtUcPp25cnOq+faXb/6ZNqkOGqJ54orNt4ceFF6q+/77qkSNlDn3//v36j3/8Q6tVq6YNGjTQqVOnlnkfxlSESZNUo6OP/ehHRzvlVRmQrj6+U+0aQSjJzoZzzoHISMjKcpqCirNvHyQmOnXffRduvrn4+t99B1dfDb/84rzu1AmSkqBGDefsYsoUyMlx1t11F7zyivPvUhmtXr2a2267jcsuu4znn3++zNsbE2zx8c6fW2Fxcc6fQlVV1DUC1/+7L8+jyp4RPPKI869Jv37HFE9aPUnjXopTGS4a91KcTlrt9W9LaurR/+SLs3atap06Tt3LL1fNyDi+zh9/qL76qmpUlFPvvvvK/aMcOnRI9+/fr6qqX3zxhY4bN06PlOMsw5hgEPF9QizidmTBRRFnBK5/qZfnUWUTQePGzq9k4cKCokmrJ2n0iGhlOAWP6BHRR5PBH38cbeb5+eei933ppU6dnj1VDx4sPo7PPlOtXt2p/913fv9YAwcOVECTkpJ0w4YNfu/PGH/FxflOBHFxbkcWXEUlArtYHEp27HCWjRsXFKXMTyH30LETuuYeyiVlvmdC1xNOODqVU1FjMGVlwRdfOHUnToTq1YuPo0sXuOce5/kbb5T1pzjOhAkTGDNmDN999x3NmjXjpZdeIi8vz+/9GlNeNhnOsSwRhJL8PvheX5Kbc3xP3HpMeX79atV873fMGGc5YADExBQUp2WkET8qnognIogfFU9ahle3iTvvdJbvvQe7dpXpxygsIiKCQYMGkZWVxaWXXsp9993HBx984Nc+jfGHTYZzLEsEoeQsz7BLixcXFMXG+J64taB8+3bYuNG5qHvaab73u3Sps+zdu6AoLSON5FnJZOdkoyjZOdkkz0o+mgzOPRfatoX9+wN2r8KZZ57JrFmzmD17dsEgditXruTgwYMB2b8xZdG/v3Nh+MgRZxmuSQAsEYSWAQOc5ejRBUUjkkYQXf3Yc9jo6tGMSPKcw44bB4cOQffuULeu7/3+/ruzrFevoKjEJifv+vnbB4CI0K1bNyIiIsjJyeGyyy4jMTGRpfnJyhhT4SwRhJKBA507hz//HObPB6B/s/6kdk8lLiYOQYiLiSO1eyr9m/WHbdvg1VedbYcMKXq/J57oLL2aeErV5JRf/6STyv0jFScmJoaJEyfy22+/0b59ex588EFyc3NL3tAYE1CWCEJJnTpw//3O8+uugwULACcZbBq6iSOPH2HT0E1OEti8GS6/3Gkauugi5wJvUdq0cZZe7fIlNjn9+KPTpBQVBU2b+qwbCN27d2fNmjXcfvvtvPDCCzaInTEusEQQap54Avr2dZpjkpKga1eYMcPpEbR7NyxZArfe6owzlJUFTZrA9OnF3/g12DMI7DvvFDTzlNjkNGaM06Oud+9jmpSCISYmhjfffJMFCxbQq1cv6tSpA2A9i4ypKL76lIb6o8reR5AvL8+5uaxmTd+dnfMfPXuq/vZb6fbZqZOzzQ03qB46pKrF3Ki2cOHRm8oWLw7Oz1iCzMxMPeecc/Tf//63K8c3pirCbiirhH79VXXkSNUWLVTr1VM96STVc85x7vj973/Ltq/MTNXatZ1f+dVXq37//fF19u1TffPNownor38NyI9RHitXrtSEhAQFtF+/frpjxw7XYjGVz6RJzs1hIs6yqo8hVFpBTQRAV2AdsB4Y5mN9f2C15/Et0MJr3SYgA1hZVJCFH2GTCALtm2+chJJ/RpGUpPrss6ovvuh86Xuvu/121cOHXQ33wIEDOnz4cK1evbqefPLJ+t5777kaj6kcwnVAudIIWiIAIoENwDlAFLAKaFKoTgegrud5N2CJ17pNwMllOaYlAj+sX+98ydeqpT6bm9q0UX3nnXKNPhosGRkZ2q5dOx02bJjboZhKIFyHjyiNohKB36OPisiFwHBVvdLz+mHPtYdni6hfF8hU1TM8rzcBiar6S2mPWWVHH61Iu3c7k95s3OjcNFa/vnNhul07tyPzKS8vj8OHD1OjRg0WLFjA+vXruf3224kox+iopmqLiHC++gsTcW4eC2dFjT5axJgEZXIGsMXr9VbggmLq3wZ4T2OlwDwRUeBNVU31tZGIJAPJALGxvrs+mjKoUwcGDXI7ilKLjIwsmAbz3Xff5e2332bKlCmMHTuW80oartuEldhY30NM29dG0QLx75T4KPN5miEil+Ikgoe8ijuqamucJqO7RKSTr21VNVVVE1U1sUGDBv7GbCqxCRMmMHbsWJYvX07z5s0ZOXKkdTU1BWxAubILRCLYCpzl9fpMYFvhSiLSHBgH9FTVgnkMVXWbZ7kDmA6EZtuECRkiwu23305WVhZdunThgQcesEHsTAEbUK7sAnGNoBrwXyAJ+AlYCvRT1TVedWKBBcBfVPVbr/ITgAhV/d3z/DPgSVX9tLhj2jUCk09VmTdvHpdffjkREREsX76chIQEoqKi3A7NmJBT1DUCv88IVPUwcDcwF1gLTFXVNSIyWEQ8t7TyGFAfeENEVopI/rf4qcAiEVkFfAd8UlISMMabiHDllVcWDGKXlJRE69atWbJkiduhGVNp2JzFpkr55JNPGDx4MD/99BNDhw7lqaee4oQTTnA7LGNCQtDOCIwJJVdffTVr1qxh0KBBvPTSSzRv3pxdfk6sY0xVZ4nAVDm1a9dm9OjRLFy4kJtuuom6nnkaDh8+7HJkxoQmSwSmyurcuTPPPuvc15iZmUmjRo2YOXOmy1EZE3osEZiwcOTIEWrXrk3Pnj3p06cPO3bscDskY0KGJQITFpo3b056ejpPPfUU06dPp3HjxkyePNntsIwJCZYITNioXr06jz76KCtWrOBPf/oTGRkZbodkTEgIxFhDxlQqTZo0YdGiRQXDUixYsIB169YxaNAgG8TOhCX71JuwFBkZWXD3cVpaGkOGDOHSSy/lhx9+cDkyYyqeJQIT9saNG8f48eNZtWoVzZs355///Kd1NTVhxRKBCXsiwq233kpWVhZdu3bloYceskHsTFixRGCMx+mnn860adOYN28evXv3BmDZsmUcOHDA5ciMCS5LBMZ4EZGCkUxzcnLo0qULrVq1YvHixW6HZkzQWCIwpggxMTFMmTKFvXv30rFjR4YOHcoff/zhdljGBJwlAmOK0bVrVzIzMxkyZAgvv/wyzZo1s0HsTJVjicCYEpx00km89tprfPXVV/Tv379gELtDhw65HJkxgWGJwJhSuvjii3n66acByMjI4LzzzmP69OkuR2WM/wKSCESkq4isE5H1IjLMx3oRkVc861eLSOvSbmtMKBIR6tWrx/XXX89NN93E9u3b3Q7JmHLzOxGISCTwOtANaAL0FZEmhap1Axp5HsnA6DJsa0zISUhI4LvvvmPEiBHMmDGDxo0bM2nSJLfDMqZcAnFG0A5Yr6obVfUg8B7Qs1CdnsA76vgPUEdEGpZyW2NCUvXq1XnkkUdYtWoVjRs3Zu3atW6HZEy5BGLQuTOALV6vtwIXlKLOGaXcFgARScY5myA2Nta/iI0JoD//+c98/fXXBcNSfP7556xbt44777zTBrEzlUIgPqXio0xLWac02zqFqqmqmqiqiQ0aNChjiMYEV0RERMEgdu+//z533303nTt3Zt26dS5HZkzJApEItgJneb0+E9hWyjql2TYspGWkET8qnognIogfFU9aRprbIZlySk1N5e2332bNmjW0aNGC5557zrqampAWiESwFGgkImeLSBTQByg8MexM4C+e3kPtgRxV/bmU21Z5aRlpJM9KJjsnG0XJzskmeVayJYNKSkQYOHAgWVlZdO/enYcffpgPP/zQ7bCMKZLfiUBVDwN3A3OBtcBUVV0jIoNFZLCn2mxgI7AeGAsMKW5bf2OqbFLmp5B7KPeYstxDuaTMT3EpIhMIp512Gh988AHz588vGMRu6dKl7N+/3+XIjDmWqPpskg9piYmJmp6e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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# evaluate data points\n", "y_predict = sampler_classifier.predict(X)\n", "\n", "# plot results\n", "# red == wrongly classified\n", "for x, y_target, y_p in zip(X, y01, y_predict):\n", " if y_target == 1:\n", " plt.plot(x[0], x[1], \"bo\")\n", " else:\n", " plt.plot(x[0], x[1], \"go\")\n", " if y_target != y_p:\n", " plt.scatter(x[0], x[1], s=200, facecolors=\"none\", edgecolors=\"r\", linewidths=2)\n", "plt.plot([-1, 1], [1, -1], \"--\", color=\"black\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "assisted-individual", "metadata": {}, "source": [ "Again, once the model is trained we can take a look at the weights. As we set `reps=1` explicitly in our ansatz, we can see less parameters than in the previous model." ] }, { "cell_type": "code", "execution_count": 17, "id": "indonesian-bulletin", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1.67198565, 0.46045402, -0.93462862, -0.95266092])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sampler_classifier.weights" ] }, { "cell_type": "markdown", "id": "champion-approval", "metadata": {}, "source": [ "### Variational Quantum Classifier (`VQC`)\n", "\n", "The `VQC` is a special variant of the `NeuralNetworkClassifier` with a `SamplerQNN`. It applies a parity mapping (or extensions to multiple classes) to map from the bitstring to the classification, which results in a probability vector, which is interpreted as a one-hot encoded result. By default, it applies this the `CrossEntropyLoss` function that expects labels given in one-hot encoded format and will return predictions in that format too." ] }, { "cell_type": "code", "execution_count": 18, "id": "legislative-dublin", "metadata": {}, "outputs": [], "source": [ "# construct feature map, ansatz, and optimizer\n", "feature_map = ZZFeatureMap(num_inputs)\n", "ansatz = RealAmplitudes(num_inputs, reps=1)\n", "\n", "# construct variational quantum classifier\n", "vqc = VQC(\n", " feature_map=feature_map,\n", " ansatz=ansatz,\n", " loss=\"cross_entropy\",\n", " optimizer=COBYLA(maxiter=30),\n", " callback=callback_graph,\n", ")" ] }, { "cell_type": "code", "execution_count": 19, "id": "geographic-adjustment", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "0.8" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create empty array for callback to store evaluations of the objective function\n", "objective_func_vals = []\n", "plt.rcParams[\"figure.figsize\"] = (12, 6)\n", "\n", "# fit classifier to data\n", "vqc.fit(X, y_one_hot)\n", "\n", "# return to default figsize\n", "plt.rcParams[\"figure.figsize\"] = (6, 4)\n", "\n", "# score classifier\n", "vqc.score(X, y_one_hot)" ] }, { "cell_type": "code", "execution_count": 20, "id": "stopped-heavy", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# evaluate data points\n", "y_predict = vqc.predict(X)\n", "\n", "# plot results\n", "# red == wrongly classified\n", "for x, y_target, y_p in zip(X, y_one_hot, y_predict):\n", " if y_target[0] == 1:\n", " plt.plot(x[0], x[1], \"bo\")\n", " else:\n", " plt.plot(x[0], x[1], \"go\")\n", " if not np.all(y_target == y_p):\n", " plt.scatter(x[0], x[1], s=200, facecolors=\"none\", edgecolors=\"r\", linewidths=2)\n", "plt.plot([-1, 1], [1, -1], \"--\", color=\"black\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "grave-testament", "metadata": {}, "source": [ "### Multiple classes with VQC\n", "In this section we generate an artificial dataset that contains samples of three classes and show how to train a model to classify this dataset. This example shows how to tackle more interesting problems in machine learning. Of course, for a sake of short training time we prepare a tiny dataset. We employ `make_classification` from SciKit-Learn to generate a dataset. There 10 samples in the dataset, 2 features, that means we can still have a nice plot of the dataset, as well as no redundant features, these are features are generated as a combinations of the other features. Also, we have 3 different classes in the dataset, each classes one kind of centroid and we set class separation to `2.0`, a slight increase from the default value of `1.0` to ease the classification problem.\n", "\n", "Once the dataset is generated we scale the features into the range `[0, 1]`." ] }, { "cell_type": "code", "execution_count": 21, "id": "plastic-dividend", "metadata": {}, "outputs": [], "source": [ "from sklearn.datasets import make_classification\n", "from sklearn.preprocessing import MinMaxScaler\n", "\n", "X, y = make_classification(\n", " n_samples=10,\n", " n_features=2,\n", " n_classes=3,\n", " n_redundant=0,\n", " n_clusters_per_class=1,\n", " class_sep=2.0,\n", " random_state=algorithm_globals.random_seed,\n", ")\n", "X = MinMaxScaler().fit_transform(X)" ] }, { "cell_type": "markdown", "id": "forced-disclosure", "metadata": {}, "source": [ "Let's see how our dataset looks like." ] }, { "cell_type": "code", "execution_count": 22, "id": "premier-drill", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(X[:, 0], X[:, 1], c=y)" ] }, { "cell_type": "markdown", "id": "deadly-response", "metadata": {}, "source": [ "We also transform labels and make them categorical." ] }, { "cell_type": "code", "execution_count": 23, "id": "exposed-bailey", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['A' 'A' 'B' 'C' 'C' 'A' 'B' 'B' 'A' 'C']\n" ] } ], "source": [ "y_cat = np.empty(y.shape, dtype=str)\n", "y_cat[y == 0] = \"A\"\n", "y_cat[y == 1] = \"B\"\n", "y_cat[y == 2] = \"C\"\n", "print(y_cat)" ] }, { "cell_type": "markdown", "id": "instructional-headquarters", "metadata": {}, "source": [ "We create an instance of `VQC` similar to the previous example, but in this case we pass a minimal set of parameters. Instead of feature map and ansatz we pass just the number of qubits that is equal to the number of features in the dataset, an optimizer with a low number of iteration to reduce training time, a quantum instance, and a callback to observe progress." ] }, { "cell_type": "code", "execution_count": 24, "id": "latin-result", "metadata": {}, "outputs": [], "source": [ "vqc = VQC(\n", " num_qubits=2,\n", " optimizer=COBYLA(maxiter=30),\n", " callback=callback_graph,\n", ")" ] }, { "cell_type": "markdown", "id": "proper-bookmark", "metadata": {}, "source": [ "Start the training process in the same way as in previous examples." ] }, { "cell_type": "code", "execution_count": 25, "id": "reported-pioneer", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "0.9" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create empty array for callback to store evaluations of the objective function\n", "objective_func_vals = []\n", "plt.rcParams[\"figure.figsize\"] = (12, 6)\n", "\n", "# fit classifier to data\n", "vqc.fit(X, y_cat)\n", "\n", "# return to default figsize\n", "plt.rcParams[\"figure.figsize\"] = (6, 4)\n", "\n", "# score classifier\n", "vqc.score(X, y_cat)" ] }, { "cell_type": "markdown", "id": "weighted-renaissance", "metadata": {}, "source": [ "Despite we had the low number of iterations, we achieved quite a good score. Let see the output of the `predict` method and compare the output with the ground truth." ] }, { "cell_type": "code", "execution_count": 26, "id": "employed-patient", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Predicted labels: ['A' 'A' 'B' 'C' 'C' 'A' 'B' 'B' 'A' 'B']\n", "Ground truth: ['A' 'A' 'B' 'C' 'C' 'A' 'B' 'B' 'A' 'C']\n" ] } ], "source": [ "predict = vqc.predict(X)\n", "print(f\"Predicted labels: {predict}\")\n", "print(f\"Ground truth: {y_cat}\")" ] }, { "cell_type": "markdown", "id": "guided-secret", "metadata": {}, "source": [ "## Regression\n", "\n", "We prepare a simple regression dataset to illustrate the following algorithms." ] }, { "cell_type": "code", "execution_count": 27, "id": "iraqi-flavor", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_samples = 20\n", "eps = 0.2\n", "lb, ub = -np.pi, np.pi\n", "X_ = np.linspace(lb, ub, num=50).reshape(50, 1)\n", "f = lambda x: np.sin(x)\n", "\n", "X = (ub - lb) * algorithm_globals.random.random([num_samples, 1]) + lb\n", "y = f(X[:, 0]) + eps * (2 * algorithm_globals.random.random(num_samples) - 1)\n", "\n", "plt.plot(X_, f(X_), \"r--\")\n", "plt.plot(X, y, \"bo\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "talented-capitol", "metadata": {}, "source": [ "### Regression with an `EstimatorQNN`\n", "\n", "Here we restrict to regression with an `EstimatorQNN` that returns values in $[-1, +1]$. More complex and also multi-dimensional models could be constructed, also based on `SamplerQNN` but that exceeds the scope of this tutorial." ] }, { "cell_type": "code", "execution_count": 28, "id": "perfect-kelly", "metadata": {}, "outputs": [], "source": [ "# construct simple feature map\n", "param_x = Parameter(\"x\")\n", "feature_map = QuantumCircuit(1, name=\"fm\")\n", "feature_map.ry(param_x, 0)\n", "\n", "# construct simple ansatz\n", "param_y = Parameter(\"y\")\n", "ansatz = QuantumCircuit(1, name=\"vf\")\n", "ansatz.ry(param_y, 0)\n", "\n", "# construct a circuit\n", "qc = QNNCircuit(feature_map=feature_map, ansatz=ansatz)\n", "\n", "# construct QNN\n", "regression_estimator_qnn = EstimatorQNN(circuit=qc)" ] }, { "cell_type": "code", "execution_count": 29, "id": "velvet-marks", "metadata": {}, "outputs": [], "source": [ "# construct the regressor from the neural network\n", "regressor = NeuralNetworkRegressor(\n", " neural_network=regression_estimator_qnn,\n", " loss=\"squared_error\",\n", " optimizer=L_BFGS_B(maxiter=5),\n", " callback=callback_graph,\n", ")" ] }, { "cell_type": "code", "execution_count": 30, "id": "working-mongolia", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "0.9769994291935522" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create empty array for callback to store evaluations of the objective function\n", "objective_func_vals = []\n", "plt.rcParams[\"figure.figsize\"] = (12, 6)\n", "\n", "# fit to data\n", "regressor.fit(X, y)\n", "\n", "# return to default figsize\n", "plt.rcParams[\"figure.figsize\"] = (6, 4)\n", "\n", "# score the result\n", "regressor.score(X, y)" ] }, { "cell_type": "code", "execution_count": 31, "id": "diverse-conservative", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot target function\n", "plt.plot(X_, f(X_), \"r--\")\n", "\n", "# plot data\n", "plt.plot(X, y, \"bo\")\n", "\n", "# plot fitted line\n", "y_ = regressor.predict(X_)\n", "plt.plot(X_, y_, \"g-\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "false-india", "metadata": {}, "source": [ "Similarly to the classification models, we can obtain an array of trained weights by querying a corresponding property of the model. In this model we have only one parameter defined as `param_y` above." ] }, { "cell_type": "code", "execution_count": 32, "id": "terminal-turner", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-1.58870599])" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regressor.weights" ] }, { "cell_type": "markdown", "id": "offensive-legislation", "metadata": {}, "source": [ "### Regression with the Variational Quantum Regressor (`VQR`)\n", "\n", "Similar to the `VQC` for classification, the `VQR` is a special variant of the `NeuralNetworkRegressor` with a `EstimatorQNN`. By default it considers the `L2Loss` function to minimize the mean squared error between predictions and targets." ] }, { "cell_type": "code", "execution_count": 33, "id": "offensive-entry", "metadata": {}, "outputs": [], "source": [ "vqr = VQR(\n", " feature_map=feature_map,\n", " ansatz=ansatz,\n", " optimizer=L_BFGS_B(maxiter=5),\n", " callback=callback_graph,\n", ")" ] }, { "cell_type": "code", "execution_count": 34, "id": "cooperative-helmet", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "0.9769955693935385" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create empty array for callback to store evaluations of the objective function\n", "objective_func_vals = []\n", "plt.rcParams[\"figure.figsize\"] = (12, 6)\n", "\n", "# fit regressor\n", "vqr.fit(X, y)\n", "\n", "# return to default figsize\n", "plt.rcParams[\"figure.figsize\"] = (6, 4)\n", "\n", "# score result\n", "vqr.score(X, y)" ] }, { "cell_type": "code", "execution_count": 35, "id": "genetic-cambridge", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot target function\n", "plt.plot(X_, f(X_), \"r--\")\n", "\n", "# plot data\n", "plt.plot(X, y, \"bo\")\n", "\n", "# plot fitted line\n", "y_ = vqr.predict(X_)\n", "plt.plot(X_, y_, \"g-\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 36, "id": "backed-visit", "metadata": {}, "outputs": [ { "data": { "text/html": [ "

Version Information

Qiskit SoftwareVersion
qiskit-terra0.24.0
qiskit-aer0.12.0
qiskit-ignis0.6.0
qiskit-ibmq-provider0.20.2
qiskit0.43.0
qiskit-machine-learning0.7.0
System information
Python version3.8.8
Python compilerClang 10.0.0
Python builddefault, Apr 13 2021 12:59:45
OSDarwin
CPUs8
Memory (Gb)32.0
Tue Jun 13 16:39:30 2023 CEST
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

This code is a part of Qiskit

© Copyright IBM 2017, 2023.

This code is licensed under the Apache License, Version 2.0. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.

Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import qiskit.tools.jupyter\n", "\n", "%qiskit_version_table\n", "%qiskit_copyright" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.13" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }