DIGITS-CNN/cars/confusions.ipynb

716 lines
67 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "34b0345b",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib as mpl\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "markdown",
"id": "75b9f701",
"metadata": {},
"source": [
"# Render Confusion Matrices\n",
"\n",
"DIGITs generates confusion matrix tables, need to render as is, not generate using scikit-learn's func"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "10521209",
"metadata": {},
"outputs": [],
"source": [
"frame = pd.read_csv('architecture-investigations/fc/3-layers/1024/conf.csv', index_col=0)\n",
"accuracy_col = frame.pop('Per-class accuracy')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "02c2844f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"50.0% 0.5\n",
"25.0% 0.25\n",
"30.0% 0.3\n",
"100.0% 1.0\n",
"71.43% 0.7142857142857143\n",
"44.44% 0.4444444444444444\n",
"62.5% 0.625\n",
"0.0% 0.0\n",
"50.0% 0.5\n",
"20.0% 0.2\n",
"\n",
"MAP = 49.3%\n"
]
}
],
"source": [
"normalised_array = np.ndarray((196, 196))\n",
"for idx, row in enumerate(frame.to_numpy()):\n",
" normalised_array[idx, :] = row / np.sum(row)\n",
"\n",
"# check correct accuracy\n",
"for acc, (idx, row) in zip(accuracy_col, enumerate(normalised_array[:10])):\n",
" print(acc, row[idx])\n",
"\n",
"class_acc_counter = 0\n",
"for idx, row in enumerate(normalised_array):\n",
" class_acc_counter += row[idx]\n",
" \n",
"print(f\"\\nMAP = {class_acc_counter*100/196:.4}%\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "91132579",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>AM General Hummer SUV 2000</th>\n",
" <th>Acura RL Sedan 2012</th>\n",
" <th>Acura TL Sedan 2012</th>\n",
" <th>Acura TL Type-S 2008</th>\n",
" <th>Acura TSX Sedan 2012</th>\n",
" <th>Acura Integra Type R 2001</th>\n",
" <th>Acura ZDX Hatchback 2012</th>\n",
" <th>Aston Martin V8 Vantage Convertible 2012</th>\n",
" <th>Aston Martin V8 Vantage Coupe 2012</th>\n",
" <th>Aston Martin Virage Convertible 2012</th>\n",
" <th>...</th>\n",
" <th>Toyota Camry Sedan 2012</th>\n",
" <th>Toyota Corolla Sedan 2012</th>\n",
" <th>Toyota 4Runner SUV 2012</th>\n",
" <th>Volkswagen Golf Hatchback 2012</th>\n",
" <th>Volkswagen Golf Hatchback 1991</th>\n",
" <th>Volkswagen Beetle Hatchback 2012</th>\n",
" <th>Volvo C30 Hatchback 2012</th>\n",
" <th>Volvo 240 Sedan 1993</th>\n",
" <th>Volvo XC90 SUV 2007</th>\n",
" <th>smart fortwo Convertible 2012</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>AM General Hummer SUV 2000</th>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Acura RL Sedan 2012</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Acura TL Sedan 2012</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Acura TL Type-S 2008</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Acura TSX Sedan 2012</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Volkswagen Beetle Hatchback 2012</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Volvo C30 Hatchback 2012</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Volvo 240 Sedan 1993</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Volvo XC90 SUV 2007</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>smart fortwo Convertible 2012</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>196 rows × 196 columns</p>\n",
"</div>"
],
"text/plain": [
" AM General Hummer SUV 2000 \\\n",
"AM General Hummer SUV 2000 6 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 0 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Acura RL Sedan 2012 Acura TL Sedan 2012 \\\n",
"AM General Hummer SUV 2000 0 0 \n",
"Acura RL Sedan 2012 2 1 \n",
"Acura TL Sedan 2012 1 3 \n",
"Acura TL Type-S 2008 0 0 \n",
"Acura TSX Sedan 2012 1 0 \n",
"... ... ... \n",
"Volkswagen Beetle Hatchback 2012 0 0 \n",
"Volvo C30 Hatchback 2012 0 0 \n",
"Volvo 240 Sedan 1993 0 0 \n",
"Volvo XC90 SUV 2007 0 0 \n",
"smart fortwo Convertible 2012 0 0 \n",
"\n",
" Acura TL Type-S 2008 Acura TSX Sedan 2012 \\\n",
"AM General Hummer SUV 2000 0 0 \n",
"Acura RL Sedan 2012 0 2 \n",
"Acura TL Sedan 2012 0 2 \n",
"Acura TL Type-S 2008 3 0 \n",
"Acura TSX Sedan 2012 0 5 \n",
"... ... ... \n",
"Volkswagen Beetle Hatchback 2012 0 0 \n",
"Volvo C30 Hatchback 2012 0 0 \n",
"Volvo 240 Sedan 1993 0 0 \n",
"Volvo XC90 SUV 2007 0 0 \n",
"smart fortwo Convertible 2012 0 0 \n",
"\n",
" Acura Integra Type R 2001 \\\n",
"AM General Hummer SUV 2000 0 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 0 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Acura ZDX Hatchback 2012 \\\n",
"AM General Hummer SUV 2000 0 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 0 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Aston Martin V8 Vantage Convertible 2012 \\\n",
"AM General Hummer SUV 2000 0 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 0 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Aston Martin V8 Vantage Coupe 2012 \\\n",
"AM General Hummer SUV 2000 0 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 0 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Aston Martin Virage Convertible 2012 ... \\\n",
"AM General Hummer SUV 2000 0 ... \n",
"Acura RL Sedan 2012 0 ... \n",
"Acura TL Sedan 2012 0 ... \n",
"Acura TL Type-S 2008 0 ... \n",
"Acura TSX Sedan 2012 0 ... \n",
"... ... ... \n",
"Volkswagen Beetle Hatchback 2012 0 ... \n",
"Volvo C30 Hatchback 2012 0 ... \n",
"Volvo 240 Sedan 1993 0 ... \n",
"Volvo XC90 SUV 2007 0 ... \n",
"smart fortwo Convertible 2012 0 ... \n",
"\n",
" Toyota Camry Sedan 2012 \\\n",
"AM General Hummer SUV 2000 0 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 0 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Toyota Corolla Sedan 2012 \\\n",
"AM General Hummer SUV 2000 0 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 0 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Toyota 4Runner SUV 2012 \\\n",
"AM General Hummer SUV 2000 0 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 0 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Volkswagen Golf Hatchback 2012 \\\n",
"AM General Hummer SUV 2000 0 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 0 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Volkswagen Golf Hatchback 1991 \\\n",
"AM General Hummer SUV 2000 0 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 0 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Volkswagen Beetle Hatchback 2012 \\\n",
"AM General Hummer SUV 2000 0 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 5 \n",
"Volvo C30 Hatchback 2012 1 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Volvo C30 Hatchback 2012 \\\n",
"AM General Hummer SUV 2000 0 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 4 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 0 \n",
"\n",
" Volvo 240 Sedan 1993 Volvo XC90 SUV 2007 \\\n",
"AM General Hummer SUV 2000 0 0 \n",
"Acura RL Sedan 2012 0 0 \n",
"Acura TL Sedan 2012 0 0 \n",
"Acura TL Type-S 2008 0 0 \n",
"Acura TSX Sedan 2012 0 0 \n",
"... ... ... \n",
"Volkswagen Beetle Hatchback 2012 0 0 \n",
"Volvo C30 Hatchback 2012 0 0 \n",
"Volvo 240 Sedan 1993 10 0 \n",
"Volvo XC90 SUV 2007 0 7 \n",
"smart fortwo Convertible 2012 0 0 \n",
"\n",
" smart fortwo Convertible 2012 \n",
"AM General Hummer SUV 2000 1 \n",
"Acura RL Sedan 2012 0 \n",
"Acura TL Sedan 2012 0 \n",
"Acura TL Type-S 2008 0 \n",
"Acura TSX Sedan 2012 0 \n",
"... ... \n",
"Volkswagen Beetle Hatchback 2012 0 \n",
"Volvo C30 Hatchback 2012 0 \n",
"Volvo 240 Sedan 1993 0 \n",
"Volvo XC90 SUV 2007 0 \n",
"smart fortwo Convertible 2012 10 \n",
"\n",
"[196 rows x 196 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"frame"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "72eacc1e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(12, 10)\n",
"# , dpi=400\n",
" )\n",
"\n",
"ax.matshow(normalised_array)\n",
"\n",
"ax.set_title('Confusion matrix')\n",
"# plt.colorbar(ax=ax)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "831a9fab",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(12, 10)\n",
"# , dpi=400\n",
" )\n",
"sns.heatmap(normalised_array, xticklabels=False, yticklabels=False, cmap='inferno')\n",
"\n",
"plt.title('Confusion matrix')\n",
"plt.show()"
]
}
],
"metadata": {
"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.9.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}