{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Uczenie maszynowe – zastosowania\n",
"# 4. Metody ewaluacji"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## 4.1. Metodologia testowania"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"W uczeniu maszynowym bardzo ważna jest ewaluacja budowanego modelu. Dlatego dobrze jest podzielić posiadane dane na odrębne zbiory – osobny zbiór danych do uczenia i osobny do testowania. W niektórych przypadkach potrzeba będzie dodatkowo wyodrębnić tzw. zbiór walidacyjny."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Zbiór uczący a zbiór testowy"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"* Na zbiorze uczącym (treningowym) uczymy algorytmy, a na zbiorze testowym sprawdzamy ich poprawność.\n",
"* Zbiór uczący powinien być kilkukrotnie większy od testowego (np. 4:1, 9:1 itp.).\n",
"* Zbiór testowy często jest nieznany.\n",
"* Należy unikać mieszania danych testowych i treningowych – nie wolno „zanieczyszczać” danych treningowych danymi testowymi!"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Czasami potrzebujemy dobrać parametry modelu, np. $\\alpha$ – który zbiór wykorzystać do tego celu?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Zbiór walidacyjny"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Do doboru parametrów najlepiej użyć jeszcze innego zbioru – jest to tzw. **zbiór walidacyjny**"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" * Zbiór walidacyjny powinien mieć wielkość zbliżoną do wielkości zbioru testowego, czyli np. dane można podzielić na te trzy zbiory w proporcjach 3:1:1, 8:1:1 itp."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Walidacja krzyżowa"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Którą część danych wydzielić jako zbiór walidacyjny tak, żeby było „najlepiej”?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" * Niech każda partia danych pełni tę rolę naprzemiennie!"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"\n",
"Żródło: https://chrisjmccormick.wordpress.com/2013/07/31/k-fold-cross-validation-with-matlab-code/"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Walidacja krzyżowa\n",
"\n",
"* Podziel dane $D = \\left\\{ (x^{(1)}, y^{(1)}), \\ldots, (x^{(m)}, y^{(m)})\\right\\} $ na $N$ rozłącznych zbiorów $T_1,\\ldots,T_N$\n",
"* Dla $i=1,\\ldots,N$, wykonaj:\n",
" * Użyj $T_i$ do walidacji i zbiór $S_i$ do trenowania, gdzie $S_i = D \\smallsetminus T_i$. \n",
" * Zapisz model $\\theta_i$.\n",
"* Akumuluj wyniki dla modeli $\\theta_i$ dla zbiorów $T_i$.\n",
"* Ustalaj parametry uczenia na akumulowanych wynikach."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Walidacja krzyżowa – wskazówki\n",
"\n",
"* Zazwyczaj ustala się $N$ w przedziale od $4$ do $10$, tzw. $N$-krotna walidacja krzyżowa (*$N$-fold cross validation*). \n",
"* Zbiór $D$ warto zrandomizować przed podziałem.\n",
"* W jaki sposób akumulować wyniki dla wszystkich zbiórow $T_i$?\n",
"* Po ustaleniu parametrów dla każdego $T_i$, trenujemy model na całych danych treningowych z ustalonymi parametrami.\n",
"* Testujemy na zbiorze testowym (jeśli nim dysponujemy)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### _Leave-one-out_\n",
"\n",
"Jest to szczególny przypadek walidacji krzyżowej, w której $N = m$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"* Jaki jest rozmiar pojedynczego zbioru $T_i$?\n",
"* Jakie są zalety i wady tej metody?\n",
"* Kiedy może być przydatna?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Zbiór walidujący a algorytmy optymalizacji\n",
"\n",
"* Gdy błąd rośnie na zbiorze uczącym, mamy źle dobrany parametr $\\alpha$. Należy go wtedy zmniejszyć.\n",
"* Gdy błąd zmniejsza się na zbiorze trenującym, ale rośnie na zbiorze walidującym, mamy do czynienia ze zjawiskiem **nadmiernego dopasowania** (*overfitting*).\n",
"* Należy wtedy przerwać optymalizację. Automatyzacja tego procesu to _early stopping_."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## 4.2. Miary jakości"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"Aby przeprowadzić ewaluację modelu, musimy wybrać **miarę** (**metrykę**), jakiej będziemy używać.\n",
"\n",
"Jakiej miary użyc najlepiej?\n",
" * To zależy od rodzaju zadania.\n",
" * Innych metryk używa się do regresji, a innych do klasyfikacji"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Metryki dla zadań regresji\n",
"\n",
"Dla zadań regresji możemy zastosować np.:\n",
" * błąd średniokwadratowy (*mean-square error*, MSE):\n",
" $$ \\mathrm{MSE} \\, = \\, \\frac{1}{m} \\sum_{i=1}^{m} \\left( \\hat{y}^{(i)} - y^{(i)} \\right)^2 $$\n",
" * pierwiastek z błędu średniokwadratowego (*root-mean-square error*, RMSE):\n",
" $$ \\mathrm{RMSE} \\, = \\, \\sqrt{ \\frac{1}{m} \\sum_{i=1}^{m} \\left( \\hat{y}^{(i)} - y^{(i)} \\right)^2 } $$\n",
" * średni błąd bezwzględny (*mean absolute error*, MAE):\n",
" $$ \\mathrm{MAE} \\, = \\, \\frac{1}{m} \\sum_{i=1}^{m} \\left| \\hat{y}^{(i)} - y^{(i)} \\right| $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"W powyższych wzorach $y^{(i)}$ oznacza **oczekiwaną** wartości zmiennej $y$ w $i$-tym przykładzie, a $\\hat{y}^{(i)}$ oznacza wartość zmiennej $y$ w $i$-tym przykładzie wyliczoną (**przewidzianą**) przez nasz model."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Metryki dla zadań klasyfikacji\n",
"\n",
"Aby przedstawić kilka najpopularniejszych metryk stosowanych dla zadań klasyfikacyjnych, posłużmy się następującym przykładem:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"outputs": [],
"source": [
"# Przydatne importy\n",
"\n",
"import ipywidgets as widgets\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas\n",
"import random\n",
"import seaborn\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"outputs": [],
"source": [
"def powerme(x1,x2,n):\n",
" \"\"\"Funkcja, która generuje n potęg dla zmiennych x1 i x2 oraz ich iloczynów\"\"\"\n",
" X = []\n",
" for m in range(n+1):\n",
" for i in range(m+1):\n",
" X.append(np.multiply(np.power(x1,i),np.power(x2,(m-i))))\n",
" return np.hstack(X)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"outputs": [],
"source": [
"def plot_data_for_classification(X, Y, xlabel=None, ylabel=None, Y_predicted=[], highlight=None):\n",
" \"\"\"Wykres danych dla zadania klasyfikacji\"\"\"\n",
" fig = plt.figure(figsize=(16*.6, 9*.6))\n",
" ax = fig.add_subplot(111)\n",
" fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)\n",
" X = X.tolist()\n",
" Y = Y.tolist()\n",
" X1n = [x[1] for x, y in zip(X, Y) if y[0] == 0]\n",
" X1p = [x[1] for x, y in zip(X, Y) if y[0] == 1]\n",
" X2n = [x[2] for x, y in zip(X, Y) if y[0] == 0]\n",
" X2p = [x[2] for x, y in zip(X, Y) if y[0] == 1]\n",
" \n",
" if len(Y_predicted) > 0:\n",
" Y_predicted = Y_predicted.tolist()\n",
" X1tn = [x[1] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 0 and yp[0] == 0]\n",
" X1fn = [x[1] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 1 and yp[0] == 0]\n",
" X1tp = [x[1] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 1 and yp[0] == 1]\n",
" X1fp = [x[1] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 0 and yp[0] == 1]\n",
" X2tn = [x[2] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 0 and yp[0] == 0]\n",
" X2fn = [x[2] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 1 and yp[0] == 0]\n",
" X2tp = [x[2] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 1 and yp[0] == 1]\n",
" X2fp = [x[2] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 0 and yp[0] == 1]\n",
" \n",
" if highlight == 'tn':\n",
" ax.scatter(X1tn, X2tn, c='r', marker='x', s=100, label='Dane')\n",
" ax.scatter(X1fn, X2fn, c='k', marker='o', s=50, label='Dane')\n",
" ax.scatter(X1tp, X2tp, c='k', marker='o', s=50, label='Dane')\n",
" ax.scatter(X1fp, X2fp, c='k', marker='x', s=50, label='Dane')\n",
" elif highlight == 'fn':\n",
" ax.scatter(X1tn, X2tn, c='k', marker='x', s=50, label='Dane')\n",
" ax.scatter(X1fn, X2fn, c='g', marker='o', s=100, label='Dane')\n",
" ax.scatter(X1tp, X2tp, c='k', marker='o', s=50, label='Dane')\n",
" ax.scatter(X1fp, X2fp, c='k', marker='x', s=50, label='Dane')\n",
" elif highlight == 'tp':\n",
" ax.scatter(X1tn, X2tn, c='k', marker='x', s=50, label='Dane')\n",
" ax.scatter(X1fn, X2fn, c='k', marker='o', s=50, label='Dane')\n",
" ax.scatter(X1tp, X2tp, c='g', marker='o', s=100, label='Dane')\n",
" ax.scatter(X1fp, X2fp, c='k', marker='x', s=50, label='Dane')\n",
" elif highlight == 'fp':\n",
" ax.scatter(X1tn, X2tn, c='k', marker='x', s=50, label='Dane')\n",
" ax.scatter(X1fn, X2fn, c='k', marker='o', s=50, label='Dane')\n",
" ax.scatter(X1tp, X2tp, c='k', marker='o', s=50, label='Dane')\n",
" ax.scatter(X1fp, X2fp, c='r', marker='x', s=100, label='Dane')\n",
" else:\n",
" ax.scatter(X1tn, X2tn, c='r', marker='x', s=50, label='Dane')\n",
" ax.scatter(X1fn, X2fn, c='g', marker='o', s=50, label='Dane')\n",
" ax.scatter(X1tp, X2tp, c='g', marker='o', s=50, label='Dane')\n",
" ax.scatter(X1fp, X2fp, c='r', marker='x', s=50, label='Dane')\n",
"\n",
" else:\n",
" ax.scatter(X1n, X2n, c='r', marker='x', s=50, label='Dane')\n",
" ax.scatter(X1p, X2p, c='g', marker='o', s=50, label='Dane')\n",
" \n",
" if xlabel:\n",
" ax.set_xlabel(xlabel)\n",
" if ylabel:\n",
" ax.set_ylabel(ylabel)\n",
" \n",
" ax.margins(.05, .05)\n",
" return fig"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"outputs": [],
"source": [
"# Wczytanie danych\n",
"import pandas\n",
"import numpy as np\n",
"\n",
"alldata = pandas.read_csv('data-metrics.tsv', sep='\\t')\n",
"data = np.matrix(alldata)\n",
"\n",
"m, n_plus_1 = data.shape\n",
"n = n_plus_1 - 1\n",
"\n",
"X2 = powerme(data[:, 1], data[:, 2], n)\n",
"Y2 = np.matrix(data[:, 0]).reshape(m, 1)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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eqrxwQcfhG1/4MAB45RTTjHuvvtu49133zWeeuopIyUlxXjuuef8berr642kpCTjRz/6kbF3717jRz/6kZGcnGy8/vrrZr2sqDTQc3333XcbjzzyiPHmm28ajY2NxtKlS42UlBRj586d/jZr1qwx0tPTQ97DE91Az/Urr7xiSDL2798fcB67v+dyXYc30HN97NixgHPscrmMM844w/j+97/vb8N1Hd7mzZuNBx980Fi/fr0hyaiqquq1vZnv14SvKLZmzZp+hS+v12tkZWUZP/7xj/3bPvvsM8NutxuPP/64YRi+P+CUlBTj2Wef9bf56KOPDKvVarz00ktD3vdY8O677xqSAv5oGhoaDEnGvn37+n2ckpIS4ytf+UrAtksvvdS4++67h6qrMW+w5/qmm24ySkpKetzPdR1qqK7rN99805AU8KEg0a/riy++2CgrKwvYNmnSJOOBBx4I2/7f/u3fjEmTJgVs+9d//Vdj5syZ/p8XLlxoXHnllQFt5s6dayxatGiIeh2bBnquw5k8ebLx8MMP+3/u77+piWag57orfB09erTHY3Jdh3ey13VVVZVhsViM999/37+N67pv/QlfZr5fc9thHDh48KCam5tVXFzs35aamqpLL71U9fX1kqQdO3aovb09oM3YsWM1ZcoUf5tE09DQILvdrhkzZvi3zZw5U3a7vd/n5PDhw9q0aZNuvfXWkH1PP/20MjIydN555+m+++7T8ePHh6zvseZkznVNTY1Gjx6tnJwc3XbbbTpy5Ih/H9d1qKG4riWppaVFFosl5NbnRL2uPR6PduzYEXCtSVJxcXGP57WhoSGk/dy5c7V9+3a1t7f32iZRr19pcOc6mNfr1fHjx3XGGWcEbD9x4oTGjx+vs88+W9dcc4127do1ZP2ORSdzri+66CKNGTNGl19+uV555ZWAfVzXoYbiul61apWKioo0fvz4gO1c1yfPzPfr5JPrKqJBc3OzJCkzMzNge2Zmpj744AN/G5vNptNPPz2kTdfzE01zc7NGjx4dsn306NH9Pie/+c1vNGrUKC1YsCBg+w033KAJEyYoKytLb7/9tpYuXaq33npLW7ZsGZK+x5rBnuurrrpKX/va1zR+/HgdPHhQ3/ve9/SVr3xFO3bsUGpqKtd1GENxXX/22Wd64IEH9I1vfEPp6en+7Yl8XX/yySfq7OwM+z7b03ltbm4O276jo0OffPKJxowZ02ObRL1+pcGd62CPPvqo/vGPf2jhwoX+bZMmTdLatWs1depUud1u/exnP1NhYaHeeustfelLXxrS1xArBnOux4wZoyeffFJ5eXlqa2tTZWWlLr/8ctXU1Gj27NmSer72ua4Hf10fOnRIL774op555pmA7VzXQ8PM92vCl0keeughPfzww7222bZtm6ZPnz7o32GxWAJ+NgwjZFuw/rSJNf0911LoOZMGdk5Wr16tG264QSNGjAjYftttt/n/95QpU/SlL31J06dP186dOzVt2rR+HTsWDPe5Li0t9f/vKVOmaPr06Ro/frw2bdoUEngHctxYZNZ13d7erkWLFsnr9aqioiJgX6Jc170Z6PtsuPbB2wfz3p0IBnte1q1bp4ceekgbNmwI+CJi5syZAQV7CgsLNW3aNP3iF7/Qz3/+86HreAwayLnOzc1Vbm6u/+f8/Hy5XC7953/+pz98DfSYiWSw52Xt2rU67bTTdP311wds57oeOma9XxO+THLnnXf2WRXsnHPOGdSxs7KyJPlS+5gxY/zbjxw54k/oWVlZ8ng8Onr0aMAowZEjR1RQUDCo3xut+nuu//KXv+jw4cMh+/7+97+HfLMRTm1trfbv3y+n09ln22nTpiklJUXvvfdeXH1INetcdxkzZozGjx+v9957TxLXdbCTPdft7e1auHChDh48qD//+c8Bo17hxOt1HU5GRoaSkpJCvuHs/j4bLCsrK2z75ORknXnmmb22GcjfRbwZzLnu4nQ6deutt+r3v/+9ioqKem1rtVr15S9/2f9+kohO5lx3N3PmTP3ud7/z/8x1HepkzrVhGFq9erUcDodsNluvbbmuB8fM92vmfJkkIyNDkyZN6vURPHrSX123AXW/9cfj8ejVV1/1fwDNy8tTSkpKQJtDhw7p7bffjrsPqf091/n5+WppadGbb77pf+4bb7yhlpaWfp2TVatWKS8vTxdccEGfbd955x21t7cHhON4YNa57vLpp5/K5XL5zyPX9dCd667g9d5776m6utr/j01v4vW6DsdmsykvLy/kFsstW7b0eF7z8/ND2r/88suaPn26UlJSem0Tb9fvQAzmXEu+Ea+bb75ZzzzzjObNm9fn7zEMQ7t3706I67cngz3XwXbt2hVwHrmuQ53MuX711Vf117/+Nez88mBc14Nj6vv1gMpzwBQffPCBsWvXLuPhhx82Ro4caezatcvYtWuXcfz4cX+b3Nxc4/nnn/f//OMf/9iw2+3G888/b+zZs8f4+te/HrbU/Nlnn21UV1cbO3fuNL7yla9QkvvKK43zzz/faGhoMBoaGoypU6eGlOQOPteGYRgtLS3GKaecYqxcuTLkmH/961+Nhx9+2Ni2bZtx8OBBY9OmTcakSZOMiy66iHM9gHN9/Phx49577zXq6+uNgwcPGq+88oqRn59vfOELX+C67sNAz3V7e7tx3XXXGWeffbaxe/fugHLFbW1thmFwXRvG52WiV61aZbz77rvG4sWLjVNPPdVfeeyBBx4wHA6Hv31X6eJ77rnHePfdd41Vq1aFlC6uq6szkpKSjB//+MfG3r17jR//+MeU5DYGfq6feeYZIzk52fjVr37V41IIDz30kPHSSy8Zf/vb34xdu3YZt9xyi5GcnGy88cYbpr++aDLQc/3YY48ZVVVVRmNjo/H2228bDzzwgCHJWL9+vb8N13V4Az3XXb75zW8aM2bMCHtMruvwjh8/7v/8LMlYsWKFsWvXLn8F30i+XxO+otBNN91kSAp5vPLKK/42kow1a9b4f/Z6vcb3v/99Iysry0hNTTVmz55t7NmzJ+C4ra2txp133mmcccYZRlpamnHNNdcYTU1NJr2q6PTpp58aN9xwgzFq1Chj1KhRxg033BBSPjf4XBuGYTzxxBNGWlpa2DWOmpqajNmzZxtnnHGGYbPZjC9+8YvGXXfdFbI+VaIZ6Ln+3//9X6O4uNg466yzjJSUFGPcuHHGTTfdFHLNcl2HGui5PnjwYNj3nO7vO1zXPr/61a+M8ePHGzabzZg2bZrx6quv+vfddNNNxqWXXhrQvqamxrjooosMm81mnHPOOWG/sPn9739v5ObmGikpKcakSZMCPsQmsoGc60svvTTs9XvTTTf52yxevNgYN26cYbPZjLPOOssoLi426uvrTXxF0Wsg5/qRRx4xvvjFLxojRowwTj/9dOOSSy4xNm3aFHJMruvwBvoecuzYMSMtLc148sknwx6P6zq8riURenpPiOT7tcUw/jmbDAAAAAAwbJjzBQAAAAAmIHwBAAAAgAkIXwAAAABgAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJCF8AAAAAYALCFwAAAACYgPAFAAAAACYgfAEA0A/r1q3TiBEj9NFHH/m3fetb39L555+vlpaWCPYMABArLIZhGJHuBAAA0c4wDF144YWaNWuWfvnLX+rhhx/Wr3/9a73++uv6whe+EOnuAQBiQHKkOwAAQCywWCz64Q9/qH/5l3/R2LFj9bOf/Uy1tbX+4DV//nzV1NTo8ssv13PPPRfh3gIAohEjXwAADMC0adP0zjvv6OWXX9all17q3/7KK6/oxIkT+s1vfkP4AgCExZwvAAD66Y9//KP27dunzs5OZWZmBuy77LLLNGrUqAj1DAAQCwhfAAD0w86dO/W1r31NTzzxhObOnavvfe97ke4SACDGMOcLAIA+vP/++5o3b54eeOABORwOTZ48WV/+8pe1Y8cO5eXlRbp7AIAYwcgXAAC9+J//+R9dddVVuu666/Td735XkpSXl6drr71WDz74YIR7BwCIJYx8AQDQizPOOEN79+4N2b5hw4YI9AYAEMuodggAwBCYO3eudu7cqX/84x8644wzVFVVpS9/+cuR7hYAIIoQvgAAAADABMz5AgAAAAATEL4AAAAAwASELwAAAAAwAeELAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADDB/w8EUR4xgCUl7AAAAABJRU5ErkJggg==\n",
"text/plain": [
"