diff --git a/M2/Machine Learning/TP_2/2025_TP_2_M2_ISF.ipynb b/M2/Machine Learning/TP_2/2025_TP_2_M2_ISF.ipynb index 370d83b..219d332 100644 --- a/M2/Machine Learning/TP_2/2025_TP_2_M2_ISF.ipynb +++ b/M2/Machine Learning/TP_2/2025_TP_2_M2_ISF.ipynb @@ -1,7009 +1,7009 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "8750d15b", - "metadata": {}, - "source": [ - "# Cours 2 : Algorithmes non supervisés " - ] - }, - { - "cell_type": "markdown", - "id": "f7c08ae5", - "metadata": {}, - "source": [ - "## Préambule" - ] - }, - { - "cell_type": "markdown", - "id": "ec7ecb4b", - "metadata": {}, - "source": [ - "Les objectifs de cette séance (3h) sont :\n", - "* Mettre en application un modèle non-supervisé (K-means et C.A.H)" - ] - }, - { - "cell_type": "markdown", - "id": "4e99c600", - "metadata": {}, - "source": [ - "## Préparation du workspace" - ] - }, - { - "cell_type": "markdown", - "id": "c1b01045", - "metadata": {}, - "source": [ - "### Import de librairies " - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "f6e62631", - "metadata": {}, - "outputs": [], - "source": [ - "# Données\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "# Graphiques\n", - "import seaborn as sns\n", - "\n", - "sns.set()\n", - "import matplotlib.pyplot as plt # noqa: E402\n", - "import plotly.express as px\n", - "import plotly.graph_objects as gp\n", - "from scipy.cluster.hierarchy import dendrogram, linkage # noqa: E402\n", - "\n", - "# Statistiques\n", - "from scipy.stats import chi2_contingency # noqa: E402, F401\n", - "\n", - "# Machine Learning\n", - "from sklearn.cluster import AgglomerativeClustering, KMeans # noqa: E402\n" - ] - }, - { - "cell_type": "markdown", - "id": "985e4e97", - "metadata": {}, - "source": [ - "### Constantes" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c9597b48", - "metadata": {}, - "outputs": [], - "source": [ - "input_path = \"./1_inputs\"\n", - "output_path = \"./2_outputs\"" - ] - }, - { - "cell_type": "markdown", - "id": "b2ff398d", - "metadata": {}, - "source": [ - "## Exercice (implémentation des exercices du support de cours)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "ea2a0164", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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ItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMhKxcPN+vXrY/r06TFp0qTYZ5994pxzzom6urotbvPqq6/GKaecEuPGjYsDDjggrr/++mhoaGhev27durjmmmvi4IMPLp7zyCOPjEcffbTSuw4AZKDi4ebiiy+Oxx9/PG644Ya48847Y/HixXH66ae32/6dd96JE044ofj5nnvuKba/++674/vf/35zm+985ztx//33xz//8z/HvffeG1OmTImvf/3rMWfOnErvPgDQzfWs5JMtW7asCB8333xz7LvvvsWya6+9NqZNmxZPP/100euyuYcffjhee+21+MlPfhLbbbddjBw5Mt5888248sor4ytf+UrRg5Oe87vf/W586lOfKrY59dRTi2Dz85//PPbbb79K/hcAgG6uouFm/vz5xeP+++/fvGzXXXeNYcOGxdy5c9sMN/PmzYu99tqrCDZN0vZvv/12LFy4MEaNGlWEpY9//OMttqutrY36+voPtL89e7buuOrRo7bFI+1Tq45Rr/KpVfnUqnxqVT21qnjPzaBBg6JPnz4tlg8dOjSWLl3a5jZp+fDhw1u1T5YsWRJjxowp5uFs6tlnn40nnngiLrzwwve9r7W1NTFo0IB21w8c2O99P3e1UauOUa/yqVX51Kp8apV/rToUbtLE30MOOaTd9WeccUb07t271fIUdtJE47akycIDBw5s1T5pa5s0h+drX/ta7L333nHUUUfF+9XYWIr6+jWtlqeUml7M+vq10dDQ+L6fvxqoVceoV/nUqnxqVT616v61SvtUTm9Sh8JNGl568MEH210/e/bs2LBhQ6vlKaT069d2+uvbt2+rbZpCTf/+/Vssf+qpp4r5NqmnJw1V9erVKz6IjRvbf8HSi7ml9bxLrTpGvcqnVuVTq/KpVf616lC4SWFixIgR7a5/7rnnYuXKlUVY2bQHZ/ny5UUwaksKKs8//3yLZal9suk2jzzySJx77rnFMNVNN90U2267bUd2HQCoEhWdKTR+/PhobGxsnlicvPjii8VcnAkTJrS5TVq+YMGCYgJxkzSfZsCAATF69Oji99/85jdx1llnxeTJk+O2224TbACADyfcpJ6Www47rJjomy7VThN/zz777Jg4cWKMHTu2aJN6dV5//fXmoah0z5ohQ4bEmWeeGYsWLYpZs2YVl48ff/zxRe/PqlWr4rzzziuuqLrggguK39P26V/qJQIA2FTFr/G69NJLi7sTp5vspZvz7bbbbjFjxozm9el+N+nqp/TYNHn41ltvLXp80gThdHfjo48+uphbk/z2t78tLvl+5pln4qCDDiq2bfp32mmnVXr3AYBurqZUKpWiSidJ1dWtbvPeN+kS8RUrVnfLSVQfJrXqGPUqn1qVT63Kp1bdv1aDBw8o62qp7nl3HgCAdgg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyUvFws379+pg+fXpMmjQp9tlnnzjnnHOirq5ui9u8+uqrccopp8S4cePigAMOiOuvvz4aGhrabJueK7W54YYbKr3rAEAGKh5uLr744nj88ceL8HHnnXfG4sWL4/TTT2+3/TvvvBMnnHBC8fM999xTbH/33XfH97///TbbX3jhhfH6669XercBgEz0rOSTLVu2LO699964+eabY9999y2WXXvttTFt2rR4+umni56czT388MPx2muvxU9+8pPYbrvtYuTIkfHmm2/GlVdeGV/5yleid+/ezW3//d//PV566aUYMmRIJXcbAMhIRcPN/Pnzi8f999+/edmuu+4aw4YNi7lz57YZbubNmxd77bVXEWyapO3ffvvtWLhwYYwZM6ZY9uKLL8bVV18dd9xxR5x22mkV2d+ePVt3XPXoUdvikfapVceoV/nUqnxqVT61qp5aVbznZtCgQdGnT58Wy4cOHRpLly5tc5u0fPjw4a3aJ0uWLCnCTRq6SnN30vBVCkKVUFtbE4MGDWh3/cCB/Sryd6qBWnWMepVPrcqnVuVTq/xr1aFwkyb+HnLIIe2uP+OMM1oMIzVJYSdNNG7LunXrYuDAga3aJ03bzJgxo1h20kknRaU0Npaivn5Nq+UppaYXs75+bTQ0NFbs7+VIrTpGvcqnVuVTq/KpVfevVdqncnqTOhRu0vDSgw8+2O762bNnx4YNG1otTyGlX7+201/fvn1bbdMUavr37x9PPvlkMcH4l7/8ZfTo0SMqaePG9l+w9GJuaT3vUquOUa/yqVX51Kp8apV/rToUbnr16hUjRoxod/1zzz0XK1euLMLKpj04y5cvL4JRW9KQ1PPPP99iWWqfpG1SsFmzZk389V//dfP6tWvXxi233BK//vWv44EHHujIfwEAyFxF59yMHz8+Ghsbi4nF6T43SZoInObiTJgwoc1t0vJ0hVWaQLzNNtsUy5544okYMGBAjB49Os4999ziqqlNfelLX4qpU6fGcccdV8ndBwAyUNFp0Kmn5bDDDivuRTNnzpx49tln4+yzz46JEyfG2LFjizapVyfdp6ZpKGrKlCnFpd1nnnlmLFq0KGbNmlVcPn788ccXvT877LBDfPSjH23xr2fPnsXVVTvttFMldx8AyEDFr/G69NJLi16br3/968XVTbvttlsxIbhJut9NusNwekzSROFbb7216PE56qijirsbH3300XHqqadWetcAgCpQUyqVSlGlk6Tq6la3ee+bdIn4ihWru+Ukqg+TWnWMepVPrcqnVuVTq+5fq8GDB5R1tVT3vDsPAEA7hBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICs1pVKpFFUo/bcbG9v+r/foURsNDY0f+j51R2rVMepVPrUqn1qVT626d61qa2uipqbmPdtVbbgBAPJkWAoAyIpwAwBkRbgBALIi3AAAWRFuAICsCDcAQFaEGwAgK8INAJAV4QYAyIpwAwBkRbgBALIi3AAAWRFuAICsCDebaGxsjBkzZsSBBx4YY8eOjZNOOileeeWVzt6tLmnZsmUxatSoVv9+8YtfdPaudSm33HJLfOlLX2qxbOHChXHMMccUx9jBBx8cP/rRjzpt/7p6rS688MJWx1iqWTVauXJlXHTRRXHQQQfFuHHj4otf/GLMmzevef3vfve7OPLII2PMmDExbdq0eOCBB6JavVetjjvuuFbH1ebHXrV488034xvf+Ebsv//+sc8++8TJJ58cL7zwQvc/X5VodsMNN5T222+/0n/8x3+UFi5cWDr++ONLU6dOLa1fv76zd63L+c///M/SJz7xidKyZctKy5cvb/63du3azt61LuPHP/5xafTo0aVjjjmmeVldXV1xjJ1//vmlP/3pT6Wf/exnRR3TYzVrq1bJ5z//+dK1117b4hh78803S9XouOOOK332s58tzZ07t7R48eLS9OnTS3vvvXfphRdeKI6ldBylWqWfb7311tKee+5Z+q//+q9SNdpSrZJJkyaVZs6c2eK4WrFiRakafeELXyj93d/9XemZZ54pjp3TTjutdMABB5TWrFnTrc9Xws2fpQCzzz77lO66667mZatWrSreEPfff3+n7ltX9IMf/KB0+OGHd/ZudElLly4tnXLKKaWxY8eWpk2b1uID++abby5OHO+8807zsmuuuaYI0dVoS7VqbGwslj/yyCOlavfSSy+VRo4cWZo3b16L+kyZMqV0/fXXl7797W8XQXBTZ599dvEFrdq8V63eeOONYv0f/vCHUrVbuXJlcZw899xzzcvSF/tUnxR2uvP5yrDUny1atChWr14dkyZNal42cODA2HPPPWPu3Lmdum9d0XPPPRcjRozo7N3okv7whz9Er1694le/+lUxRLCp1DU+ceLE6NmzZ/Oy1B380ksvxRtvvBHVZku1+t///d9Ys2ZN7LbbblHtBg0aFD/4wQ/iE5/4RPOympqa4l99fX1xXG167mo6rubPn5++wEY1ea9apXNX+nnXXXeNarfddtvFNddcEyNHjix+r6urizvuuCOGDx8eu+++e7c+Xwk3f7Z06dLicccdd2yxfOjQoc3reNfzzz9fvBH+4R/+IT75yU8WY9q//e1vO3u3uoQ0Ln3DDTfERz7ykVbr0rGUThybH2PJkiVLotpsqVbpGEv+7d/+rWg3ZcqUuOSSS+Ktt96KapO+aH3qU5+K3r17Ny97+OGH4+WXXy7mCLZ3XK1duzZWrFgR1eS9apWOq2233bY4ltKcnDQ/6frrr48NGzZENfv2t79dBOQ0V+tf/uVfon///t36fCXc/Fk6CSSbviGSPn36xPr16ztpr7qmjRs3xuLFi2PVqlVx2mmnFd+S0mSzNBEtTWqkfevWrWvzGEscZy2lD6Ha2triZHrzzTfHt771rXj88cfj1FNPLSb/V7Onnnoqzj///Jg6dWpMnjy5zeOq6fdq/9DevFbpuErvtb333jtuvfXW+OpXvxo//elPi8nr1ezYY4+Nn//85/HZz342vva1rxW9qt35fPVuX1OV69u3b/OJoOnnphewX79+nbhnXU/qopwzZ0706NGjuVYf//jH449//GPcdtttrbrHeVeq1+YfNk0nifRNiXelD52jjz66GGZIUtf5kCFD4qijjor/+Z//aTWMVS1mzZoV5557bnEV0NVXX938gbP5cdX0ezWfv9qqVeqxOe+884ohmabjKg2NnnXWWfHNb34z/uIv/iKq0e677148pl6bZ555Jn784x936/OVnps/axqOWr58eYvl6fdhw4Z10l51XQMGDGgRApM99tijuESc9qUu3raOscRx1lLqtWkKNpseY0m1DhWnD5zUW/rpT3+66M1q+hadzl9tHVfpAygNwVSj9mqVvpw1BZtqP67q6uqKYajUG7/p+y4FnXT8dOfzlXDzZ6NHj45tttmm6JFokiafLViwICZMmNCp+9bVpB6a9E1o01olv//975vTP21Lx1Ka5NnQ0NC87IknnigmN+6www6dum9dTfoW/Y//+I8tlqUem6Qaj7OZM2fGpZdeWsxzu/baa1sMF+y7777x5JNPtmifjqv0Pk0fVtVmS7VK97NJw1SbH1ep9+ZjH/tYVJM33ngjzj777BbTCd55553icy9dMNKdz1fVd9S3Ix386UZFqevy0UcfLa6eSt2UKbmmsVrelQ76dAVL6t5Ns+nTDZ8uu+yy+O///u9iKIH2/e3f/m28/fbbccEFF8Sf/vSn4qaH6eqEU045pbN3rcv5zGc+U5x0b7zxxuLKqdmzZ8c//dM/FXMCqu1KvRdffDG++93vxl/91V8Vx0r6UHr99deLf2mCdfrAfvbZZ4vzV3o/3n777fHrX/86TjzxxKg271WrdFzdd999cffddxc3aX3wwQfjyiuvjBNOOKH4gltNRo4cWUyq/s53vlNcFZzmI6W5bemLffpi0Z3PVzXpevDO3omuIqXTlPLTC5gmUqXUmu5yufPOO3f2rnU56YSRLiF87LHHijdCumQ+jW2nb5C8K50o/u///q+44qdJ+hBK49rp21GaQ3L88ccXwbratVWrhx56qJiwniawp+GVww8/PM4888zmIYZqkYZVrrvuujbXfe5zn4vLL7+8uFrxqquuKi7TTeesNCRz6KGHRrUpp1Z33XVX8S+Fm6Z5XOmCiGrs5XrrrbeKc3man5R+Tufw9F5sGqrrrucr4QYAyEr1xVQAIGvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAIic/P+otduPdHIbxgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Défintion de E\n", - "x = [1, 2, 18, 20, 31]\n", - "\n", - "#Représentation graphique\n", - "y=[0, 0, 0, 0, 0]\n", - "plt.scatter(x, y)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5e4abc23", - "metadata": {}, - "source": [ - "### K-means : Question 1 " - ] - }, - { - "cell_type": "markdown", - "id": "5dea6f90", - "metadata": {}, - "source": [ - "**Déterminer la partition optimale par k-means en prenant pour centres initiaux les éléments 1, 2, 18**" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "41cc10ba", - "metadata": {}, - "outputs": [], - "source": [ - "#Définition des centres initiaux\n", - "init_points = np.array([1, 2, 18])\n", - "\n", - "#Itinitialisation algo\n", - "kmeans = KMeans(init=init_points.reshape(-1,1),\n", - " n_clusters=3,\n", - " n_init = 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "54857e7b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
KMeans(init=array([[ 1],\n",
-       "       [ 2],\n",
-       "       [18]]), n_clusters=3, n_init=1)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" - ], - "text/plain": [ - "KMeans(init=array([[ 1],\n", - " [ 2],\n", - " [18]]), n_clusters=3, n_init=1)" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Transformation des données : plusieurs échantillons de 1 dimension\n", - "data_x = np.array(x)\n", - "data_x = data_x.reshape(-1,1)\n", - "\n", - "# Fitting\n", - "kmeans.fit(data_x)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "72efd783", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 1.],\n", - " [ 2.],\n", - " [23.]])" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Centroides finaux\n", - "final_centroids = kmeans.cluster_centers_\n", - "labels = kmeans.labels_\n", - "\n", - "final_centroids" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "3110c8ca", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Représentation Graphique\n", - "plt.scatter(x, y, c=labels, cmap='viridis')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "a24927bc", - "metadata": {}, - "source": [ - "### K-means : Question 2" - ] - }, - { - "cell_type": "markdown", - "id": "c18297ba", - "metadata": {}, - "source": [ - "**Déterminer la partition optimale par k-means en prenant pour centres initiaux les éléments 18, 20, 31**" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d0ccbcf3-a06f-4757-bdd8-2cc3bd1626c6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 1.5],\n", - " [19. ],\n", - " [31. ]])" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Définition des centres initiaux\n", - "init_points = np.array([18, 20, 31])\n", - "\n", - "#Itinitialisation algo\n", - "kmeans = KMeans(init=init_points.reshape(-1,1),\n", - " n_clusters=3,\n", - " n_init = 1)\n", - "\n", - "#Transformation des données : plusieurs échantillons de 1 dimension\n", - "data_x = np.array(x)\n", - "data_x = data_x.reshape(-1,1)\n", - "\n", - "# Fitting\n", - "kmeans.fit(data_x)\n", - "\n", - "#Centroides finaux\n", - "final_centroids = kmeans.cluster_centers_\n", - "labels = kmeans.labels_\n", - "\n", - "final_centroids" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "b957bbe8", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Représentation Graphique\n", - "plt.scatter(x, y, c=labels, cmap='viridis') # type: ignore\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "2b85bc73", - "metadata": {}, - "source": [ - "### K-means : Question 3" - ] - }, - { - "cell_type": "markdown", - "id": "0c085473", - "metadata": {}, - "source": [ - "**Déterminer la partition optimale par k-means en prenant comme partition initiale {{1},{2,18},{20,31}}**" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "0047b80a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 1.5],\n", - " [19. ],\n", - " [31. ]])" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Définition des centres initiaux\n", - "init_points = np.array([1, np.mean([2, 18]), np.mean([20, 31])])\n", - "\n", - "#Itinitialisation algo\n", - "kmeans = KMeans(init=init_points.reshape(-1,1),\n", - " n_clusters=3,\n", - " n_init=1)\n", - "\n", - "#Transformation des données : plusieurs échantillons de 1 dimension\n", - "data_x = np.array(x)\n", - "data_x = data_x.reshape(-1,1)\n", - "\n", - "# Fitting\n", - "kmeans.fit(data_x)\n", - "\n", - "#Centroides finaux\n", - "final_centroids = kmeans.cluster_centers_\n", - "labels = kmeans.labels_\n", - "\n", - "final_centroids" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "d0776ee3", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Représentation Graphique\n", - "plt.scatter(x, y, c=labels, cmap='viridis')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5eaad20e", - "metadata": {}, - "source": [ - "### Classification Ascendante Hiérarchique avec le lien simple" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "1ebaaa05", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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GwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmBLneZ4nPqRlBwKRLz0hIV5ycwPiR9Tuv9r9Wrefa/dr3YraA2W9GxIfHydxcXE/2M634QYAANjEtBQAADCFcAMAAEwh3AAAAFMINwAAwBTCDQAAMIVwAwAATCHcAAAAUwg3AADAFMINAAAwhXADAABMIdwAAABTCDcAAMAUwg0AADCFcPMjBAIBmTFjhrRv316aNGkiAwcOlD179hTZPiMjQ0aMGCEtW7aUVq1ayfjx4+XEiRMSizIzM2Xs2LHSoUMHadasmdx5552ybt26Itu/+OKLUq9evUI/sejgwYNha3nvvffM9vvq1avD1qw/nTp1Cnuf9evXh22vjxVLXnrpJbnrrrvybduyZYv07t3bve6vvfZaee21137wcT7++GO54YYbpFGjRtK9e3f54osvJNbq/vTTT+XWW2+Vpk2buronTZokJ0+eLPIxcnNzXb0Fj4GZM2dKrNU+ZsyYQnXoc2C5z++6664iX/eLFy8u8nH69u1bqH3B5/Oc81BiM2fO9Fq3bu397W9/87Zs2eL169fP69Kli5eTkxO2fe/evb1bb73V++qrr7x//vOf3jXXXOM98sgjXizq27evd+ONN3pr1671du7c6Y0fP95r1KiRt2PHjrDthw4d6j388MPeoUOH8v3Eor///e/elVde6R08eDBfLSdOnDDb73pMF+y75cuXe/Xq1fPeeeedsPd58803vc6dOxe6X1Gvj2j0xhtvePXr13d9GJSenu5e96NGjfK++eYbV78eD0U9D+qLL77wGjZs6L366qvuPk8//bR3xRVXuH/HSt36Wv/FL37hvfjii96uXbvc66BDhw7eY489VuTjaH1169Z17495j4Fjx4550Spc7eq2227zpk2blq+OI0eOmO7zjIyMfPXqe16vXr28bt26FduHbdu29RYsWJDvvvpYZYlwU0L6Bt20aVP3Bh509OhR9wH/0UcfFWq/YcMG9yLPe2B//vnn7sPhwIEDXiz59ttvXS3r1q0LbQsEAu6DbPr06WHv86tf/cqbN2+eZ8HLL7/s3XTTTSVqa6nf88rOznYhrbgPtscff9y77777vFikfTNo0CCvSZMmXteuXfO94c+ePdtr166dd/r06dC2Z555xn2xKYp+8dGAn9ftt9/u/f73v/dipe4RI0Z499xzT77277//vvsALyqwLlmyxGvWrJkXC4qrXd/fdLsG+pKy0OcFvf766y6gFfUlVn333XfuPe/rr7/2ognTUiW0detWyc7OlrZt24a2JScnS4MGDWTt2rWF2uuUTfXq1aVOnTqhbTpFERcX54bvY0lKSoq8/PLLcuWVV4a2aR36k5WVVaj9qVOn5Ntvv5VLL71ULNi2bVu+fiyOpX7Pa/bs2W5q7dFHH43I8xRtvv76aylXrpx8+OGH0rhx40J9qn2YmJgY2tamTRt3jH/33Xdhp683bNiQ771CtW7dOux7RbTW3a9fv0L9HR8fL6dPn5Zjx47F/DFQXO3//e9/5fjx4yV+D7PS53mlp6fL9OnT5f777y/2edA+1/e3Sy65RKLJ/3+1olgHDhxwv2vXrp1ve40aNUK3FVynUbBt+fLlpVq1arJ//36JJRrirr766nzbli1bJrt375bf/e53hdp/8803bu5d2zzxxBOSk5Pj1p88/PDD7vmKNdu3b3cB7ze/+Y3s2rVLLr74YveC1/VHlvs975vc/Pnz3ToiraMo//nPf9zz1KNHD/c81K1bV4YPH+7WH0Q7XUtR1HoKfX1rLXkFj2Pt05/97Gf5btPArx+MtWrVKtF7RbTWrV/c8tJQo8fBFVdcIampqUW+Vs6cOSP9+/d3Xwhr1qwpffr0kZtvvlmiTXG1ax3q9ddfl88++8yFOn296/FctWrVQu2t9Hlef/zjH6VixYquL4ujz5U+JxMmTJB//OMfUrlyZenatas88MAD7r2vrDByU0LBBaEFO6tChQruwztc+3AdW1T7WKLfUEaNGiVdunSRjh07FvnGUKlSJXnuuedcwNm5c6fcfffdxS5GjEb6Rq37fvToURk8eLAbwdJFpffee2/YxYIW+33BggXuzev2228vso1+yH///ffuDV4XYs6aNct96OsiXA27sUyP2XCvexWuT4PHeEnfK2LldfDII4+4APv4448X2U5v15MPdDHp3Llz5frrr3fvFe+8847EEn0P00Cj4URHLR977DFZuXKl+8DWURrrfX7s2DF56623XLAJHuvFPVdao36JmTNnjvvi9/bbb7v3gbLEyE0JaYINTrkE/620U/VDPFx7bVuQttdkG6vS0tJk5MiR7oypqVOnhm2jZwnot5y83+4uv/xyt03PvtCzCWKFTkXo2T4JCQmhftdvrvomrm/eBYehLfa7niWhfZr3uC9IR6t0+F1fCzrkrXQac/Pmze7br54xFqvC9WnwAytcnwY/DMLdJ9x7RSx80A0bNkzWrFkjzz//fLEjcX/+85/dqG1SUpL7u379+rJv3z73WrntttskVugHdK9evdxIpNKRO51u7tmzp/z73/8uNJ1jrc/T0tJcLXqm3A/RERudvjzvvPNCz5W+B+golwbigiOb5wojNyUUnGo4dOhQvu36tw69FqTDkwXb6sGi32picWpGvfHGG2704pprrnHfZopL9AWHrbVmndKItiHaktA36oIf7BrWdOrFer/r1IJe7uCmm24q0fRlMNgo/ear6y/CPU+xJFyfBv8O99rX41xDT0nfK6KZ7rNOx/7rX/9yAaXg9HRB+joJBpsg/bCLtde9HrvBYJP3Na/C1WKpz4PhRvtaX9Ml+QIYDDYlea7OFcJNCek3kCpVquS7ZofOs+o3U11PUpBu047VdSlB+s1HNW/eXGJxamLixInujW7atGnFzqU+++yzbjhaz8YL2rt3r7v+y2WXXSaxREdodJSq4LVavvrqq7C1WOt3XUx7/vnnu+O/OLouQa+Fkve6TzqVoeEo1vo8XJ/qYnAdkQhatWqVW0Cpz01BurhSj5lgvwfpMdSiRQuJFToVq+tldM3Vm2++GfZ9Li99P9SF1wWv/6QjHcEPu1ihIw733HNPoTpUuOPZSp/nfd0XHJUuik5B6tRjwedKv+j8/Oc/l7JCuCkh/TDX9QM6FfPJJ5+4N20ddtNvdbr2RN/4Dh8+HJp71WFLPdi1zaZNm9yboV4ET4f3Yy3J6yLaJ598Uq677joZNGiQO0NEa9UfXWehIxP67+CQrLb73//+J+PGjXP31ekKHfHR50MvgBhLdORBzxTQoVd9we/YsUOeeuop901Wh64t97vS8F7UxRe1bj2DUGnN+k1Xh6c1+OkZFPpvHbEq+CERa3RoXqdmRo8e7dYP6Ye3LqzV10KQvg40BOS9qNmSJUtk3rx57piZPHmyuxCghoVYoce5htUpU6a4kdjga15/gkFP+1d/lH7L17PI9MvNihUr3NlkukZNz8rR138s0S9nuqZOp+H0zCmtR0+euPHGG0Nng1ns8+D6Of0iWtQXGn3N6zGQ97n64IMPZOHChe54Wbp0qatd1+vogECZKetz0WPJmTNnvMmTJ3tt2rRx1wgYOHCgt2fPHneb/tZz/d9999185/8PHjzYtdWLgOl1QE6ePOnFGr2Il9YW7ufRRx/1Vq1a5f6tv4P04nV6jQetvVWrVu4CaJmZmV4sOnz4sLu+y1VXXeUu3qZ16QXOrPe7GjBggDds2LCwt2ndM2bMCP29e/duV7f2d+PGjd11P7Zt2+bFGj2mC17748svv/R69uzprvmh1/vR638UvI9uL3hNmOuuu84dM7fccot7TcRK3fpep/td1Os++L6n7fM+V99//7335JNPeldffbV7rm6++Wbvr3/9qxeLfb506VKve/fu7lpm+trXi/LlfR1b6/O8x3rBa3Xlpa95vb3gBQH12mbB14d+ZuTm5nplKU7/U3bRCgAAILKYlgIAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAACCW/D+YrMV2Fx7pCgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Défintion de E\n", - "x = [0, 2, 5, 8, 9, 13, 18]\n", - "\n", - "#Représentation graphique\n", - "y=[0, 0, 0, 0, 0, 0, 0]\n", - "plt.scatter(x, y)\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "5e96f7f3", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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9re/jd133z023XTT2G677eLSSy99zxfmNYo777wzPv/5zxe1+NznPhe33HJLuO1MRKVSKW7Qt8MOO8TGG29c1Obmm2+udbPqQvoyyY022ig+9rGPzfczduzYWjetLjz88MPF/uUTn/hEbL/99kU/avTPVKVSidtuuy122WWXop985jOfiXPPPXfAHJP6fcfPweLf//53HHjggTFt2rT5tk+ePDm+8Y1vxCc/+cm45JJL4vXXXy9uo/7qq6/GVVddFY1cm7QDOPTQQ2PXXXeN73znO/HSSy/FxIkT480334yzzjorGslPfvKTOO2002LfffctPvQpmKYapIPIAQccEI3s/PPPjx/96Efx1a9+tQga//jHP+IHP/hB8Rk68cQTo5E9//zzxR2T09cxfPSjH527vVxu6PO9whNPPBGHHHJIEUqPPvro+POf/1zUqaenJw4++OBoVNdee21xLEr75HHjxsWUKVOKk7t0rLr++uujVCpFXas2mJ6enurdd99d3XLLLYuf0aNHV//4xz/O/fOJEydWN9544+r06dPnbrvtttuKv/fqq69WG7k2++yzT3X33Xef799ceuml1Q033LA6Y8aMaiPZc889q3vttdd824455pjqdtttV21kb7/9dtEfTjnllPm2/+Y3v6lusMEG1RdeeKHayO68887qmDFjql1dXbVuSt054IADql/5ylfm23bBBRdUx44dW+3s7Kw2op6enurmm29enTBhwnzb77333mL//Je//KVa7xouPj/33HNxxhlnFGfjF1xwwXv+PJ2JNjc3x/Dhw+duW2655YrH9vb2aOTapCG6Bben76xJw3np7KyRpH6SvpG4r9RPBnsf+V/+/ve/F2eeaSqtr0996lNFP/nd734Xjexvf/tbrLPOOsWXTTJPmnJNU7Np5KuvnXbaKWbMmFGMajSi6dOnx5e+9KX4whe+MN/21IeSV155Jepdw4WMVVddNR588ME46aSToqWl5T1/nuYDk/POOy/+85//FENSl19+eYwePbr4qvtGrs1HPvKRuZ07df4HHnigGK5L6xLa2tqikXz9618vpo9+8YtfFNNK6eD5s5/9rNghNLJRo0YVj//617/m256mTJI0ZdLoIaOpqamYUktrebbccss4/fTTB8z8ei7pYDlnzpxYa6215tu+5pprFo9piqARtbW1FV9Gmqbv+3rooYeKx/XWWy/qXcOtyegdlViUFCaOP/74OPPMM+Omm24qtqWvtE+L+tLOoZFr0+uNN96Irbfeem7wOOaYY6LRpGD1pz/9KU444YS52z796U/HySefHI1s7bXXLnaIl112Wayyyiqx1VZbFQeQtH4lnb3PnDkzGlVawJhGC9PjHnvsUaxv+utf/xo//OEP44UXXigWxzbq2oze9V8Ljg6OGDGieGz0ENbXk08+Gddcc00xWpiOV/WuMXv0+0hv3oQJE2KvvfaKG2+8MS6++OKio++///7x1ltv1bp5dSGNcqTapMVI6cCx5557FgtkG8lhhx0Wv/71r4tA+uMf/7g4iD711FPFgrVGXw2fFqWlK5OOOOKI4nG//fYr+kgKsX2nIRtN6hdXXnllcVXS3nvvHVtssUUxopH2N2k6oJGnktJU2vtp1PC1oNRPDjrooFhjjTWK0faBoOFGMt5PWldwxRVXFJcKpSHMvvPJn/3sZ4vLqb773e9Go0tDeGmVc5IuUUy1SVdbpINKI3jssceKA0K6tDmdkSZp2DuN6qRV8Oky3wXXJDSSFVdcsfgcdXR0FKNe6SqKdJBI632WXXbZaFSpBmlfsqB0mXySRjm23XbbaEStra3FY1p/0VfvCMaCIxyN6L777iuuzkpTSumKk96pyXonHvbxzjvvRGdnZ3F/jL5WWGGFYhg4rc9oVGkxX+rkzzzzzHzbU6JOB450MGkUvesNFuwn6aw9aeR+ktx7773x7LPPFmE0zRmn0a60FiGdrY4ZMyYaVRrtS6MYC65XmTVrVvE4UA4aOaQgmqajX3755YWu5Vl33XWjkV133XVx7LHHFut40tT9SiutFAOFkLFAmEhDuguuZE7hI62aT2eqjSrtANI9MdJPX08//XRxRUW6oVCj6F38mu6NseAIR9LI/SRJUwJp2rGvNL2WzlYXdibfSEE9Tavdcccd821P4T19vnpDaiMaNmxY8f+fFp73nW68//77i36zySabRKO6/fbbi6v60v1D0ghG76jPQGG6pI/0QT/yyCOLmyqldRjpTU1XmFx99dVzV4Q3slSbNF2Uhr133nnnYkFfmn9Pi496r8ppBOlsPF1al246NXXq1OLuhGnhXlrsmO7muOBleI0m3aAs9ZH111+/uENhOoj+6le/KtYeDLQd5NK02mqrxW677VaclaaDaqpNOqFJN/lLazTSaGkjSwth040Q07qmtD95/PHHi1qlG/816lqeN998s1h7kS4+SH1kwZHkNAK0/PLLRz0rpZtlRINK12WnSxHTVSR9z7DSZYk33HBDceBIQ5gpYaehqkY6Q11UbdJix3SWmu72ucwyyxTrMdJOoNHm2tN1/emMPfWVNFWUDiCpFocffvjcFfGNLN3xM10tkXaS6eCZ7la44LX+jSj1m3Q2mvpNmjZJV+CkdT1pMZ/FjVGMZKQTl3TJ6sorr1wcWBv55O6uu+6KU045ZZF/ngJICq71rKFDBgCQj+gMAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQOTw/wGT5waPeBdakgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Calcul de CAH avec lien simple\n", - "data = list(zip(x, strict=False))\n", - "\n", - "linkage_data = linkage(data, method='single', metric='euclidean')\n", - "dendrogram(linkage_data, labels=x)\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "874c878c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0 0 0 0 0 2 1]\n" - ] + "cells": [ + { + "cell_type": "markdown", + "id": "8750d15b", + "metadata": {}, + "source": [ + "# Cours 2 : Algorithmes non supervisés " + ] + }, + { + "cell_type": "markdown", + "id": "f7c08ae5", + "metadata": {}, + "source": [ + "## Préambule" + ] + }, + { + "cell_type": "markdown", + "id": "ec7ecb4b", + "metadata": {}, + "source": [ + "Les objectifs de cette séance (3h) sont :\n", + "* Mettre en application un modèle non-supervisé (K-means et C.A.H)" + ] + }, + { + "cell_type": "markdown", + "id": "4e99c600", + "metadata": {}, + "source": [ + "## Préparation du workspace" + ] + }, + { + "cell_type": "markdown", + "id": "c1b01045", + "metadata": {}, + "source": [ + "### Import de librairies " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f6e62631", + "metadata": {}, + "outputs": [], + "source": [ + "# Données\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "# Graphiques\n", + "import seaborn as sns\n", + "\n", + "sns.set()\n", + "import matplotlib.pyplot as plt # noqa: E402\n", + "import plotly.express as px\n", + "import plotly.graph_objects as gp\n", + "from scipy.cluster.hierarchy import dendrogram, linkage # noqa: E402\n", + "\n", + "# Statistiques\n", + "from scipy.stats import chi2_contingency # noqa: E402, F401\n", + "\n", + "# Machine Learning\n", + "from sklearn.cluster import AgglomerativeClustering, KMeans # noqa: E402\n" + ] + }, + { + "cell_type": "markdown", + "id": "985e4e97", + "metadata": {}, + "source": [ + "### Constantes" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c9597b48", + "metadata": {}, + "outputs": [], + "source": [ + "input_path = \"./1_inputs\"\n", + "output_path = \"./2_outputs\"" + ] + }, + { + "cell_type": "markdown", + "id": "b2ff398d", + "metadata": {}, + "source": [ + "## Exercice (implémentation des exercices du support de cours)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ea2a0164", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMhKxcPN+vXrY/r06TFp0qTYZ5994pxzzom6urotbvPqq6/GKaecEuPGjYsDDjggrr/++mhoaGhev27durjmmmvi4IMPLp7zyCOPjEcffbTSuw4AZKDi4ebiiy+Oxx9/PG644Ya48847Y/HixXH66ae32/6dd96JE044ofj5nnvuKba/++674/vf/35zm+985ztx//33xz//8z/HvffeG1OmTImvf/3rMWfOnErvPgDQzfWs5JMtW7asCB8333xz7LvvvsWya6+9NqZNmxZPP/100euyuYcffjhee+21+MlPfhLbbbddjBw5Mt5888248sor4ytf+UrRg5Oe87vf/W586lOfKrY59dRTi2Dz85//PPbbb79K/hcAgG6uouFm/vz5xeP+++/fvGzXXXeNYcOGxdy5c9sMN/PmzYu99tqrCDZN0vZvv/12LFy4MEaNGlWEpY9//OMttqutrY36+voPtL89e7buuOrRo7bFI+1Tq45Rr/KpVfnUqnxqVT21qnjPzaBBg6JPnz4tlg8dOjSWLl3a5jZp+fDhw1u1T5YsWRJjxowp5uFs6tlnn40nnngiLrzwwve9r7W1NTFo0IB21w8c2O99P3e1UauOUa/yqVX51Kp8apV/rToUbtLE30MOOaTd9WeccUb07t271fIUdtJE47akycIDBw5s1T5pa5s0h+drX/ta7L333nHUUUfF+9XYWIr6+jWtlqeUml7M+vq10dDQ+L6fvxqoVceoV/nUqnxqVT616v61SvtUTm9Sh8JNGl568MEH210/e/bs2LBhQ6vlKaT069d2+uvbt2+rbZpCTf/+/Vssf+qpp4r5NqmnJw1V9erVKz6IjRvbf8HSi7ml9bxLrTpGvcqnVuVTq/KpVf616lC4SWFixIgR7a5/7rnnYuXKlUVY2bQHZ/ny5UUwaksKKs8//3yLZal9suk2jzzySJx77rnFMNVNN90U2267bUd2HQCoEhWdKTR+/PhobGxsnlicvPjii8VcnAkTJrS5TVq+YMGCYgJxkzSfZsCAATF69Oji99/85jdx1llnxeTJk+O2224TbACADyfcpJ6Www47rJjomy7VThN/zz777Jg4cWKMHTu2aJN6dV5//fXmoah0z5ohQ4bEmWeeGYsWLYpZs2YVl48ff/zxRe/PqlWr4rzzziuuqLrggguK39P26V/qJQIA2FTFr/G69NJLi7sTp5vspZvz7bbbbjFjxozm9el+N+nqp/TYNHn41ltvLXp80gThdHfjo48+uphbk/z2t78tLvl+5pln4qCDDiq2bfp32mmnVXr3AYBurqZUKpWiSidJ1dWtbvPeN+kS8RUrVnfLSVQfJrXqGPUqn1qVT63Kp1bdv1aDBw8o62qp7nl3HgCAdgg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyUvFws379+pg+fXpMmjQp9tlnnzjnnHOirq5ui9u8+uqrccopp8S4cePigAMOiOuvvz4aGhrabJueK7W54YYbKr3rAEAGKh5uLr744nj88ceL8HHnnXfG4sWL4/TTT2+3/TvvvBMnnHBC8fM999xTbH/33XfH97///TbbX3jhhfH6669XercBgEz0rOSTLVu2LO699964+eabY9999y2WXXvttTFt2rR4+umni56czT388MPx2muvxU9+8pPYbrvtYuTIkfHmm2/GlVdeGV/5yleid+/ezW3//d//PV566aUYMmRIJXcbAMhIRcPN/Pnzi8f999+/edmuu+4aw4YNi7lz57YZbubNmxd77bVXEWyapO3ffvvtWLhwYYwZM6ZY9uKLL8bVV18dd9xxR5x22mkV2d+ePVt3XPXoUdvikfapVceoV/nUqnxqVT61qp5aVbznZtCgQdGnT58Wy4cOHRpLly5tc5u0fPjw4a3aJ0uWLCnCTRq6SnN30vBVCkKVUFtbE4MGDWh3/cCB/Sryd6qBWnWMepVPrcqnVuVTq/xr1aFwkyb+HnLIIe2uP+OMM1oMIzVJYSdNNG7LunXrYuDAga3aJ03bzJgxo1h20kknRaU0Npaivn5Nq+UppaYXs75+bTQ0NFbs7+VIrTpGvcqnVuVTq/KpVfevVdqncnqTOhRu0vDSgw8+2O762bNnx4YNG1otTyGlX7+201/fvn1bbdMUavr37x9PPvlkMcH4l7/8ZfTo0SMqaePG9l+w9GJuaT3vUquOUa/yqVX51Kp8apV/rToUbnr16hUjRoxod/1zzz0XK1euLMLKpj04y5cvL4JRW9KQ1PPPP99iWWqfpG1SsFmzZk389V//dfP6tWvXxi233BK//vWv44EHHujIfwEAyFxF59yMHz8+Ghsbi4nF6T43SZoInObiTJgwoc1t0vJ0hVWaQLzNNtsUy5544okYMGBAjB49Os4999ziqqlNfelLX4qpU6fGcccdV8ndBwAyUNFp0Kmn5bDDDivuRTNnzpx49tln4+yzz46JEyfG2LFjizapVyfdp6ZpKGrKlCnFpd1nnnlmLFq0KGbNmlVcPn788ccXvT877LBDfPSjH23xr2fPnsXVVTvttFMldx8AyEDFr/G69NJLi16br3/968XVTbvttlsxIbhJut9NusNwekzSROFbb7216PE56qijirsbH3300XHqqadWetcAgCpQUyqVSlGlk6Tq6la3ee+bdIn4ihWru+Ukqg+TWnWMepVPrcqnVuVTq+5fq8GDB5R1tVT3vDsPAEA7hBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICs1pVKpFFUo/bcbG9v+r/foURsNDY0f+j51R2rVMepVPrUqn1qVT626d61qa2uipqbmPdtVbbgBAPJkWAoAyIpwAwBkRbgBALIi3AAAWRFuAICsCDcAQFaEGwAgK8INAJAV4QYAyIpwAwBkRbgBALIi3AAAWRFuAICsCDebaGxsjBkzZsSBBx4YY8eOjZNOOileeeWVzt6tLmnZsmUxatSoVv9+8YtfdPaudSm33HJLfOlLX2qxbOHChXHMMccUx9jBBx8cP/rRjzpt/7p6rS688MJWx1iqWTVauXJlXHTRRXHQQQfFuHHj4otf/GLMmzevef3vfve7OPLII2PMmDExbdq0eOCBB6JavVetjjvuuFbH1ebHXrV488034xvf+Ebsv//+sc8++8TJJ58cL7zwQvc/X5VodsMNN5T222+/0n/8x3+UFi5cWDr++ONLU6dOLa1fv76zd63L+c///M/SJz7xidKyZctKy5cvb/63du3azt61LuPHP/5xafTo0aVjjjmmeVldXV1xjJ1//vmlP/3pT6Wf/exnRR3TYzVrq1bJ5z//+dK1117b4hh78803S9XouOOOK332s58tzZ07t7R48eLS9OnTS3vvvXfphRdeKI6ldBylWqWfb7311tKee+5Z+q//+q9SNdpSrZJJkyaVZs6c2eK4WrFiRakafeELXyj93d/9XemZZ54pjp3TTjutdMABB5TWrFnTrc9Xws2fpQCzzz77lO66667mZatWrSreEPfff3+n7ltX9IMf/KB0+OGHd/ZudElLly4tnXLKKaWxY8eWpk2b1uID++abby5OHO+8807zsmuuuaYI0dVoS7VqbGwslj/yyCOlavfSSy+VRo4cWZo3b16L+kyZMqV0/fXXl7797W8XQXBTZ599dvEFrdq8V63eeOONYv0f/vCHUrVbuXJlcZw899xzzcvSF/tUnxR2uvP5yrDUny1atChWr14dkyZNal42cODA2HPPPWPu3Lmdum9d0XPPPRcjRozo7N3okv7whz9Er1694le/+lUxRLCp1DU+ceLE6NmzZ/Oy1B380ksvxRtvvBHVZku1+t///d9Ys2ZN7LbbblHtBg0aFD/4wQ/iE5/4RPOympqa4l99fX1xXG167mo6rubPn5++wEY1ea9apXNX+nnXXXeNarfddtvFNddcEyNHjix+r6urizvuuCOGDx8eu+++e7c+Xwk3f7Z06dLicccdd2yxfOjQoc3reNfzzz9fvBH+4R/+IT75yU8WY9q//e1vO3u3uoQ0Ln3DDTfERz7ykVbr0rGUThybH2PJkiVLotpsqVbpGEv+7d/+rWg3ZcqUuOSSS+Ktt96KapO+aH3qU5+K3r17Ny97+OGH4+WXXy7mCLZ3XK1duzZWrFgR1eS9apWOq2233bY4ltKcnDQ/6frrr48NGzZENfv2t79dBOQ0V+tf/uVfon///t36fCXc/Fk6CSSbviGSPn36xPr16ztpr7qmjRs3xuLFi2PVqlVx2mmnFd+S0mSzNBEtTWqkfevWrWvzGEscZy2lD6Ha2triZHrzzTfHt771rXj88cfj1FNPLSb/V7Onnnoqzj///Jg6dWpMnjy5zeOq6fdq/9DevFbpuErvtb333jtuvfXW+OpXvxo//elPi8nr1ezYY4+Nn//85/HZz342vva1rxW9qt35fPVuX1OV69u3b/OJoOnnphewX79+nbhnXU/qopwzZ0706NGjuVYf//jH449//GPcdtttrbrHeVeq1+YfNk0nifRNiXelD52jjz66GGZIUtf5kCFD4qijjor/+Z//aTWMVS1mzZoV5557bnEV0NVXX938gbP5cdX0ezWfv9qqVeqxOe+884ohmabjKg2NnnXWWfHNb34z/uIv/iKq0e677148pl6bZ555Jn784x936/OVnps/axqOWr58eYvl6fdhw4Z10l51XQMGDGgRApM99tijuESc9qUu3raOscRx1lLqtWkKNpseY0m1DhWnD5zUW/rpT3+66M1q+hadzl9tHVfpAygNwVSj9mqVvpw1BZtqP67q6uqKYajUG7/p+y4FnXT8dOfzlXDzZ6NHj45tttmm6JFokiafLViwICZMmNCp+9bVpB6a9E1o01olv//975vTP21Lx1Ka5NnQ0NC87IknnigmN+6www6dum9dTfoW/Y//+I8tlqUem6Qaj7OZM2fGpZdeWsxzu/baa1sMF+y7777x5JNPtmifjqv0Pk0fVtVmS7VK97NJw1SbH1ep9+ZjH/tYVJM33ngjzj777BbTCd55553icy9dMNKdz1fVd9S3Ix386UZFqevy0UcfLa6eSt2UKbmmsVrelQ76dAVL6t5Ns+nTDZ8uu+yy+O///u9iKIH2/e3f/m28/fbbccEFF8Sf/vSn4qaH6eqEU045pbN3rcv5zGc+U5x0b7zxxuLKqdmzZ8c//dM/FXMCqu1KvRdffDG++93vxl/91V8Vx0r6UHr99deLf2mCdfrAfvbZZ4vzV3o/3n777fHrX/86TjzxxKg271WrdFzdd999cffddxc3aX3wwQfjyiuvjBNOOKH4gltNRo4cWUyq/s53vlNcFZzmI6W5bemLffpi0Z3PVzXpevDO3omuIqXTlPLTC5gmUqXUmu5yufPOO3f2rnU56YSRLiF87LHHijdCumQ+jW2nb5C8K50o/u///q+44qdJ+hBK49rp21GaQ3L88ccXwbratVWrhx56qJiwniawp+GVww8/PM4888zmIYZqkYZVrrvuujbXfe5zn4vLL7+8uFrxqquuKi7TTeesNCRz6KGHRrUpp1Z33XVX8S+Fm6Z5XOmCiGrs5XrrrbeKc3man5R+Tufw9F5sGqrrrucr4QYAyEr1xVQAIGvCDQCQFeEGAMiKcAMAZEW4AQCyItwAAFkRbgCArAg3AEBWhBsAICvCDQCQFeEGAIic/P+otduPdHIbxgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Défintion de E\n", + "x = [1, 2, 18, 20, 31]\n", + "\n", + "#Représentation graphique\n", + "y=[0, 0, 0, 0, 0]\n", + "plt.scatter(x, y)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5e4abc23", + "metadata": {}, + "source": [ + "### K-means : Question 1 " + ] + }, + { + "cell_type": "markdown", + "id": "5dea6f90", + "metadata": {}, + "source": [ + "**Déterminer la partition optimale par k-means en prenant pour centres initiaux les éléments 1, 2, 18**" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "41cc10ba", + "metadata": {}, + "outputs": [], + "source": [ + "#Définition des centres initiaux\n", + "init_points = np.array([1, 2, 18])\n", + "\n", + "#Itinitialisation algo\n", + "kmeans = KMeans(init=init_points.reshape(-1,1),\n", + " n_clusters=3,\n", + " n_init = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "54857e7b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
KMeans(init=array([[ 1],\n",
+                            "       [ 2],\n",
+                            "       [18]]), n_clusters=3, n_init=1)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "KMeans(init=array([[ 1],\n", + " [ 2],\n", + " [18]]), n_clusters=3, n_init=1)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Transformation des données : plusieurs échantillons de 1 dimension\n", + "data_x = np.array(x)\n", + "data_x = data_x.reshape(-1,1)\n", + "\n", + "# Fitting\n", + "kmeans.fit(data_x)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "72efd783", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.],\n", + " [ 2.],\n", + " [23.]])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Centroides finaux\n", + "final_centroids = kmeans.cluster_centers_\n", + "labels = kmeans.labels_\n", + "\n", + "final_centroids" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "3110c8ca", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Représentation Graphique\n", + "plt.scatter(x, y, c=labels, cmap='viridis')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a24927bc", + "metadata": {}, + "source": [ + "### K-means : Question 2" + ] + }, + { + "cell_type": "markdown", + "id": "c18297ba", + "metadata": {}, + "source": [ + "**Déterminer la partition optimale par k-means en prenant pour centres initiaux les éléments 18, 20, 31**" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d0ccbcf3-a06f-4757-bdd8-2cc3bd1626c6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.5],\n", + " [19. ],\n", + " [31. ]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Définition des centres initiaux\n", + "init_points = np.array([18, 20, 31])\n", + "\n", + "#Itinitialisation algo\n", + "kmeans = KMeans(init=init_points.reshape(-1,1),\n", + " n_clusters=3,\n", + " n_init = 1)\n", + "\n", + "#Transformation des données : plusieurs échantillons de 1 dimension\n", + "data_x = np.array(x)\n", + "data_x = data_x.reshape(-1,1)\n", + "\n", + "# Fitting\n", + "kmeans.fit(data_x)\n", + "\n", + "#Centroides finaux\n", + "final_centroids = kmeans.cluster_centers_\n", + "labels = kmeans.labels_\n", + "\n", + "final_centroids" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b957bbe8", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Représentation Graphique\n", + "plt.scatter(x, y, c=labels, cmap='viridis')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "2b85bc73", + "metadata": {}, + "source": [ + "### K-means : Question 3" + ] + }, + { + "cell_type": "markdown", + "id": "0c085473", + "metadata": {}, + "source": [ + "**Déterminer la partition optimale par k-means en prenant comme partition initiale {{1},{2,18},{20,31}}**" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0047b80a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.5],\n", + " [19. ],\n", + " [31. ]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Définition des centres initiaux\n", + "init_points = np.array([1, np.mean([2, 18]), np.mean([20, 31])])\n", + "\n", + "#Itinitialisation algo\n", + "kmeans = KMeans(init=init_points.reshape(-1,1),\n", + " n_clusters=3,\n", + " n_init=1)\n", + "\n", + "#Transformation des données : plusieurs échantillons de 1 dimension\n", + "data_x = np.array(x)\n", + "data_x = data_x.reshape(-1,1)\n", + "\n", + "# Fitting\n", + "kmeans.fit(data_x)\n", + "\n", + "#Centroides finaux\n", + "final_centroids = kmeans.cluster_centers_\n", + "labels = kmeans.labels_\n", + "\n", + "final_centroids" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d0776ee3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Représentation Graphique\n", + "plt.scatter(x, y, c=labels, cmap='viridis')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5eaad20e", + "metadata": {}, + "source": [ + "### Classification Ascendante Hiérarchique avec le lien simple" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "1ebaaa05", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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GwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmBLneZ4nPqRlBwKRLz0hIV5ycwPiR9Tuv9r9Wrefa/dr3YraA2W9GxIfHydxcXE/2M634QYAANjEtBQAADCFcAMAAEwh3AAAAFMINwAAwBTCDQAAMIVwAwAATCHcAAAAUwg3AADAFMINAAAwhXADAABMIdwAAABTCDcAAMAUwg0AADCFcPMjBAIBmTFjhrRv316aNGkiAwcOlD179hTZPiMjQ0aMGCEtW7aUVq1ayfjx4+XEiRMSizIzM2Xs2LHSoUMHadasmdx5552ybt26Itu/+OKLUq9evUI/sejgwYNha3nvvffM9vvq1avD1qw/nTp1Cnuf9evXh22vjxVLXnrpJbnrrrvybduyZYv07t3bve6vvfZaee21137wcT7++GO54YYbpFGjRtK9e3f54osvJNbq/vTTT+XWW2+Vpk2buronTZokJ0+eLPIxcnNzXb0Fj4GZM2dKrNU+ZsyYQnXoc2C5z++6664iX/eLFy8u8nH69u1bqH3B5/Oc81BiM2fO9Fq3bu397W9/87Zs2eL169fP69Kli5eTkxO2fe/evb1bb73V++qrr7x//vOf3jXXXOM98sgjXizq27evd+ONN3pr1671du7c6Y0fP95r1KiRt2PHjrDthw4d6j388MPeoUOH8v3Eor///e/elVde6R08eDBfLSdOnDDb73pMF+y75cuXe/Xq1fPeeeedsPd58803vc6dOxe6X1Gvj2j0xhtvePXr13d9GJSenu5e96NGjfK++eYbV78eD0U9D+qLL77wGjZs6L366qvuPk8//bR3xRVXuH/HSt36Wv/FL37hvfjii96uXbvc66BDhw7eY489VuTjaH1169Z17495j4Fjx4550Spc7eq2227zpk2blq+OI0eOmO7zjIyMfPXqe16vXr28bt26FduHbdu29RYsWJDvvvpYZYlwU0L6Bt20aVP3Bh509OhR9wH/0UcfFWq/YcMG9yLPe2B//vnn7sPhwIEDXiz59ttvXS3r1q0LbQsEAu6DbPr06WHv86tf/cqbN2+eZ8HLL7/s3XTTTSVqa6nf88rOznYhrbgPtscff9y77777vFikfTNo0CCvSZMmXteuXfO94c+ePdtr166dd/r06dC2Z555xn2xKYp+8dGAn9ftt9/u/f73v/dipe4RI0Z499xzT77277//vvsALyqwLlmyxGvWrJkXC4qrXd/fdLsG+pKy0OcFvf766y6gFfUlVn333XfuPe/rr7/2ognTUiW0detWyc7OlrZt24a2JScnS4MGDWTt2rWF2uuUTfXq1aVOnTqhbTpFERcX54bvY0lKSoq8/PLLcuWVV4a2aR36k5WVVaj9qVOn5Ntvv5VLL71ULNi2bVu+fiyOpX7Pa/bs2W5q7dFHH43I8xRtvv76aylXrpx8+OGH0rhx40J9qn2YmJgY2tamTRt3jH/33Xdhp683bNiQ771CtW7dOux7RbTW3a9fv0L9HR8fL6dPn5Zjx47F/DFQXO3//e9/5fjx4yV+D7PS53mlp6fL9OnT5f777y/2edA+1/e3Sy65RKLJ/3+1olgHDhxwv2vXrp1ve40aNUK3FVynUbBt+fLlpVq1arJ//36JJRrirr766nzbli1bJrt375bf/e53hdp/8803bu5d2zzxxBOSk5Pj1p88/PDD7vmKNdu3b3cB7ze/+Y3s2rVLLr74YveC1/VHlvs975vc/Pnz3ToiraMo//nPf9zz1KNHD/c81K1bV4YPH+7WH0Q7XUtR1HoKfX1rLXkFj2Pt05/97Gf5btPArx+MtWrVKtF7RbTWrV/c8tJQo8fBFVdcIampqUW+Vs6cOSP9+/d3Xwhr1qwpffr0kZtvvlmiTXG1ax3q9ddfl88++8yFOn296/FctWrVQu2t9Hlef/zjH6VixYquL4ujz5U+JxMmTJB//OMfUrlyZenatas88MAD7r2vrDByU0LBBaEFO6tChQruwztc+3AdW1T7WKLfUEaNGiVdunSRjh07FvnGUKlSJXnuuedcwNm5c6fcfffdxS5GjEb6Rq37fvToURk8eLAbwdJFpffee2/YxYIW+33BggXuzev2228vso1+yH///ffuDV4XYs6aNct96OsiXA27sUyP2XCvexWuT4PHeEnfK2LldfDII4+4APv4448X2U5v15MPdDHp3Llz5frrr3fvFe+8847EEn0P00Cj4URHLR977DFZuXKl+8DWURrrfX7s2DF56623XLAJHuvFPVdao36JmTNnjvvi9/bbb7v3gbLEyE0JaYINTrkE/620U/VDPFx7bVuQttdkG6vS0tJk5MiR7oypqVOnhm2jZwnot5y83+4uv/xyt03PvtCzCWKFTkXo2T4JCQmhftdvrvomrm/eBYehLfa7niWhfZr3uC9IR6t0+F1fCzrkrXQac/Pmze7br54xFqvC9WnwAytcnwY/DMLdJ9x7RSx80A0bNkzWrFkjzz//fLEjcX/+85/dqG1SUpL7u379+rJv3z73WrntttskVugHdK9evdxIpNKRO51u7tmzp/z73/8uNJ1jrc/T0tJcLXqm3A/RERudvjzvvPNCz5W+B+golwbigiOb5wojNyUUnGo4dOhQvu36tw69FqTDkwXb6sGi32picWpGvfHGG2704pprrnHfZopL9AWHrbVmndKItiHaktA36oIf7BrWdOrFer/r1IJe7uCmm24q0fRlMNgo/ear6y/CPU+xJFyfBv8O99rX41xDT0nfK6KZ7rNOx/7rX/9yAaXg9HRB+joJBpsg/bCLtde9HrvBYJP3Na/C1WKpz4PhRvtaX9Ml+QIYDDYlea7OFcJNCek3kCpVquS7ZofOs+o3U11PUpBu047VdSlB+s1HNW/eXGJxamLixInujW7atGnFzqU+++yzbjhaz8YL2rt3r7v+y2WXXSaxREdodJSq4LVavvrqq7C1WOt3XUx7/vnnu+O/OLouQa+Fkve6TzqVoeEo1vo8XJ/qYnAdkQhatWqVW0Cpz01BurhSj5lgvwfpMdSiRQuJFToVq+tldM3Vm2++GfZ9Li99P9SF1wWv/6QjHcEPu1ihIw733HNPoTpUuOPZSp/nfd0XHJUuik5B6tRjwedKv+j8/Oc/l7JCuCkh/TDX9QM6FfPJJ5+4N20ddtNvdbr2RN/4Dh8+HJp71WFLPdi1zaZNm9yboV4ET4f3Yy3J6yLaJ598Uq677joZNGiQO0NEa9UfXWehIxP67+CQrLb73//+J+PGjXP31ekKHfHR50MvgBhLdORBzxTQoVd9we/YsUOeeuop901Wh64t97vS8F7UxRe1bj2DUGnN+k1Xh6c1+OkZFPpvHbEq+CERa3RoXqdmRo8e7dYP6Ye3LqzV10KQvg40BOS9qNmSJUtk3rx57piZPHmyuxCghoVYoce5htUpU6a4kdjga15/gkFP+1d/lH7L17PI9MvNihUr3NlkukZNz8rR138s0S9nuqZOp+H0zCmtR0+euPHGG0Nng1ns8+D6Of0iWtQXGn3N6zGQ97n64IMPZOHChe54Wbp0qatd1+vogECZKetz0WPJmTNnvMmTJ3tt2rRx1wgYOHCgt2fPHneb/tZz/d9999185/8PHjzYtdWLgOl1QE6ePOnFGr2Il9YW7ufRRx/1Vq1a5f6tv4P04nV6jQetvVWrVu4CaJmZmV4sOnz4sLu+y1VXXeUu3qZ16QXOrPe7GjBggDds2LCwt2ndM2bMCP29e/duV7f2d+PGjd11P7Zt2+bFGj2mC17748svv/R69uzprvmh1/vR638UvI9uL3hNmOuuu84dM7fccot7TcRK3fpep/td1Os++L6n7fM+V99//7335JNPeldffbV7rm6++Wbvr3/9qxeLfb506VKve/fu7lpm+trXi/LlfR1b6/O8x3rBa3Xlpa95vb3gBQH12mbB14d+ZuTm5nplKU7/U3bRCgAAILKYlgIAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAACCW/D+YrMV2Fx7pCgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Défintion de E\n", + "x = [0, 2, 5, 8, 9, 13, 18]\n", + "\n", + "#Représentation graphique\n", + "y=[0, 0, 0, 0, 0, 0, 0]\n", + "plt.scatter(x, y)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "5e96f7f3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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9re/jd133z023XTT2G677eLSSy99zxfmNYo777wzPv/5zxe1+NznPhe33HJLuO1MRKVSKW7Qt8MOO8TGG29c1Obmm2+udbPqQvoyyY022ig+9rGPzfczduzYWjetLjz88MPF/uUTn/hEbL/99kU/avTPVKVSidtuuy122WWXop985jOfiXPPPXfAHJP6fcfPweLf//53HHjggTFt2rT5tk+ePDm+8Y1vxCc/+cm45JJL4vXXXy9uo/7qq6/GVVddFY1cm7QDOPTQQ2PXXXeN73znO/HSSy/FxIkT480334yzzjorGslPfvKTOO2002LfffctPvQpmKYapIPIAQccEI3s/PPPjx/96Efx1a9+tQga//jHP+IHP/hB8Rk68cQTo5E9//zzxR2T09cxfPSjH527vVxu6PO9whNPPBGHHHJIEUqPPvro+POf/1zUqaenJw4++OBoVNdee21xLEr75HHjxsWUKVOKk7t0rLr++uujVCpFXas2mJ6enurdd99d3XLLLYuf0aNHV//4xz/O/fOJEydWN9544+r06dPnbrvtttuKv/fqq69WG7k2++yzT3X33Xef799ceuml1Q033LA6Y8aMaiPZc889q3vttdd824455pjqdtttV21kb7/9dtEfTjnllPm2/+Y3v6lusMEG1RdeeKHayO68887qmDFjql1dXbVuSt054IADql/5ylfm23bBBRdUx44dW+3s7Kw2op6enurmm29enTBhwnzb77333mL//Je//KVa7xouPj/33HNxxhlnFGfjF1xwwXv+PJ2JNjc3x/Dhw+duW2655YrH9vb2aOTapCG6Bben76xJw3np7KyRpH6SvpG4r9RPBnsf+V/+/ve/F2eeaSqtr0996lNFP/nd734Xjexvf/tbrLPOOsWXTTJPmnJNU7Np5KuvnXbaKWbMmFGMajSi6dOnx5e+9KX4whe+MN/21IeSV155Jepdw4WMVVddNR588ME46aSToqWl5T1/nuYDk/POOy/+85//FENSl19+eYwePbr4qvtGrs1HPvKRuZ07df4HHnigGK5L6xLa2tqikXz9618vpo9+8YtfFNNK6eD5s5/9rNghNLJRo0YVj//617/m256mTJI0ZdLoIaOpqamYUktrebbccss4/fTTB8z8ei7pYDlnzpxYa6215tu+5pprFo9piqARtbW1FV9Gmqbv+3rooYeKx/XWWy/qXcOtyegdlViUFCaOP/74OPPMM+Omm24qtqWvtE+L+tLOoZFr0+uNN96Irbfeem7wOOaYY6LRpGD1pz/9KU444YS52z796U/HySefHI1s7bXXLnaIl112Wayyyiqx1VZbFQeQtH4lnb3PnDkzGlVawJhGC9PjHnvsUaxv+utf/xo//OEP44UXXigWxzbq2oze9V8Ljg6OGDGieGz0ENbXk08+Gddcc00xWpiOV/WuMXv0+0hv3oQJE2KvvfaKG2+8MS6++OKio++///7x1ltv1bp5dSGNcqTapMVI6cCx5557FgtkG8lhhx0Wv/71r4tA+uMf/7g4iD711FPFgrVGXw2fFqWlK5OOOOKI4nG//fYr+kgKsX2nIRtN6hdXXnllcVXS3nvvHVtssUUxopH2N2k6oJGnktJU2vtp1PC1oNRPDjrooFhjjTWK0faBoOFGMt5PWldwxRVXFJcKpSHMvvPJn/3sZ4vLqb773e9Go0tDeGmVc5IuUUy1SVdbpINKI3jssceKA0K6tDmdkSZp2DuN6qRV8Oky3wXXJDSSFVdcsfgcdXR0FKNe6SqKdJBI632WXXbZaFSpBmlfsqB0mXySRjm23XbbaEStra3FY1p/0VfvCMaCIxyN6L777iuuzkpTSumKk96pyXonHvbxzjvvRGdnZ3F/jL5WWGGFYhg4rc9oVGkxX+rkzzzzzHzbU6JOB450MGkUvesNFuwn6aw9aeR+ktx7773x7LPPFmE0zRmn0a60FiGdrY4ZMyYaVRrtS6MYC65XmTVrVvE4UA4aOaQgmqajX3755YWu5Vl33XWjkV133XVx7LHHFut40tT9SiutFAOFkLFAmEhDuguuZE7hI62aT2eqjSrtANI9MdJPX08//XRxRUW6oVCj6F38mu6NseAIR9LI/SRJUwJp2rGvNL2WzlYXdibfSEE9Tavdcccd821P4T19vnpDaiMaNmxY8f+fFp73nW68//77i36zySabRKO6/fbbi6v60v1D0ghG76jPQGG6pI/0QT/yyCOLmyqldRjpTU1XmFx99dVzV4Q3slSbNF2Uhr133nnnYkFfmn9Pi496r8ppBOlsPF1al246NXXq1OLuhGnhXlrsmO7muOBleI0m3aAs9ZH111+/uENhOoj+6le/KtYeDLQd5NK02mqrxW677VaclaaDaqpNOqFJN/lLazTSaGkjSwth040Q07qmtD95/PHHi1qlG/816lqeN998s1h7kS4+SH1kwZHkNAK0/PLLRz0rpZtlRINK12WnSxHTVSR9z7DSZYk33HBDceBIQ5gpYaehqkY6Q11UbdJix3SWmu72ucwyyxTrMdJOoNHm2tN1/emMPfWVNFWUDiCpFocffvjcFfGNLN3xM10tkXaS6eCZ7la44LX+jSj1m3Q2mvpNmjZJV+CkdT1pMZ/FjVGMZKQTl3TJ6sorr1wcWBv55O6uu+6KU045ZZF/ngJICq71rKFDBgCQj+gMAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQOTw/wGT5waPeBdakgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Calcul de CAH avec lien simple\n", + "data = list(zip(x, strict=False))\n", + "\n", + "linkage_data = linkage(data, method='single', metric='euclidean')\n", + "dendrogram(linkage_data, labels=x)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "874c878c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0 0 0 0 0 2 1]\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Calcul de la partition de l'espace\n", + "hierarchical_cluster = AgglomerativeClustering(n_clusters=3, metric='euclidean', linkage='single')\n", + "\n", + "labels = hierarchical_cluster.fit_predict(data)\n", + "print(labels)\n", + "\n", + "#Représentation Graphique\n", + "plt.scatter(x, y, c=labels, cmap='viridis')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "75420ae4", + "metadata": {}, + "source": [ + "### Classification Ascendante Hiérarchique avec le lien complet" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "8f098bc3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Calcul de CAH avec lien complet\n", + "data = list(zip(x, strict=False))\n", + "\n", + "linkage_data = linkage(data, method='complete', metric='euclidean')\n", + "dendrogram(linkage_data, labels=x)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "68ccdf5c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2 2 1 1 1 0 0]\n" + ] + }, + { + "data": { + "image/png": "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uWYekdZRmm+//dY8Tn379jWPQ5MmTWT48OFm/kFlp3MpSptPoa9vraUw//NYj+l5551X5Hca+PWNsW7duuU6V1TWuvWDW2EaavR50KJFC0lKSir1tZKfny933323+UBYp04dufPOO+XGG2+Uyqas2rUO9cYbb8jKlStNqNPXuz6fq1WrVqK9Lce8sFdffVWqVKlijmVZ9LHSx2T8+PHyj3/8Q+Li4qRXr15y//33m3PfuULPTTn5J4QWP1gxMTHmzTtY+2AHtrT24UQ/oYwaNUp69uwpXbt2LfXEEBsbK88995wJODt37pQ77rijzMmIlZGeqHXfjx07Jg888IDpwdJJpffcc0/QyYI2HvcFCxaYk9ctt9xSaht9kz9+/Lg5wetEzFmzZpk3fZ2Eq2E3nOlzNtjrXgU7pv7neHnPFeHyOnjkkUdMgH3yySdLbae/14sPdDLpnDlz5NprrzXninfffVfCiZ7DNNBoONFey8cee0xWrVpl3rC1l8b2Y37ixAl5++23TbDxP9fLeqy0Rv0QM3v2bPPB75133jHngXOJnpty0gTrH3Lx/6z0oOqbeLD22rY4ba/JNlwtX75cRo4caa6YmjJlStA2epWAfsop/Onu4osvNtv06gu9miBc6FCEXu0TEREROO76yVVP4nryLt4NbeNx16sk9JgWft4Xp71V2v2urwXt8lY6jLllyxbz6VevGAtXwY6p/w0r2DH1vxkEu02wc0U4vNENGzZM1q5dK88//3yZPXEff/yx6bWNj483/09OTpb9+/eb18rNN98s4ULfoPv37296IpX23Olwc79+/eTf//53ieEc24758uXLTS16pdypaI+NDl9Wr1498FjpOUB7uTQQF+/ZPFvouSkn/1DDoUOHimzX/2vXa3HaPVm8rT5Z9FNNOA7NqDfffNP0Xlx99dXm00xZib54t7XWrEMala2Ltjz0RF38jV3Dmg692H7cdWhBlzu44YYbyjV86Q82Sj/56vyLYI9TOAl2TP3/D/ba1+e5hp7ynisqM91nHY7917/+ZQJK8eHp4vR14g82fvpmF26ve33u+oNN4de8ClaLTcfcH270WOtrujwfAP3BpjyP1dlCuCkn/QRStWrVImt26DirfjLV+STF6TY9sDovxU8/+ai2bdtKOA5NTJgwwZzopk6dWuZY6rRp00x3tF6N57dv3z6z/kvjxo0lnGgPjfZSFV+r5euvvw5ai23HXSfT1qxZ0zz/y6LzEnQtlMLrPulQhoajcDvmwY6pTgbXHgm/1atXmwmU+tgUp5Mr9TnjP+5++hxq166dhAsditX5Mjrnav78+UHPc4Xp+VAnXhdf/0l7OvxvduFCexzuuuuuEnWoYM9nW4554dd98V7p0ugQpA49Fn+s9IPOz372MzlXCDflpG/mOn9Ah2I+/fRTc9LWbjf9VKdzT/TEd/jw4cDYq3Zb6pNd22zevNmcDHURPO3eD7ckr5Non3rqKbnmmmtkyJAh5goRrVW/dJ6F9kzoz/4uWW33ww8/yNixY81tdbhCe3z08dAFEMOJ9jzolQLa9aov+O+//16efvpp80lWu65tPu5Kw3tpiy9q3XoFodKa9ZOudk9r8NMrKPRn7bEq/iYRbrRrXodmnnjiCTN/SN+8dWKtvhb89HWgIaDwomaLFy+W119/3TxnJk2aZBYC1LAQLvR5rmF18uTJpifW/5rXL3/Q0+OrX0o/5etVZPrhZsWKFeZqMp2jplfl6Os/nOiHM51Tp8NweuWU1qMXT1x//fWBq8FsPOb++XP6QbS0DzT6mtfnQOHH6oMPPpC33nrLPF+WLFliatf5OtohcM6c62vRw0l+fr4zadIk5/LLLzdrBAwePNjZu3ev+Z1+12v933vvvSLX/z/wwAOmrS4CpuuA5OTkOOFGF/HS2oJ9Pfroo87q1avNz/rdTxev0zUetPYOHTqYBdDS09OdcHT48GGzvssVV1xhFm/TunSBM9uPuxo0aJAzbNiwoL/TumfMmBH4/549e0zderxbtWpl1v3Yvn27E270OV187Y+vvvrK6devn1nzQ9f70fU/it9GtxdfE+aaa64xz5mbbrrJvCbCpW491+l+l/a695/3tH3hx+r48ePOU0895Vx11VXmsbrxxhudv/3tb044HvMlS5Y4ffr0MWuZ6WtfF+Ur/Dq27ZgXfq4XX6urMH3N6++LLwioa5v5Xx/6nlFQUOCcSx7959xFKwAAgNBiWAoAAFiFcAMAAKxCuAEAAFYh3AAAAKsQbgAAgFUINwAAwCqEGwAAYBXCDQAAsArhBgAAWIVwAwAArEK4AQAAYpP/B99OWNlCrUV2AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Calcul de la partition de l'espace\n", + "hierarchical_cluster = AgglomerativeClustering(n_clusters=3, metric='euclidean', linkage='complete')\n", + "\n", + "labels = hierarchical_cluster.fit_predict(data)\n", + "print(labels)\n", + "\n", + "#Représentation Graphique\n", + "plt.scatter(x, y, c=labels, cmap='viridis')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "99bc3508", + "metadata": {}, + "source": [ + "## K-means: Cas pratique" + ] + }, + { + "cell_type": "markdown", + "id": "b2b035d2", + "metadata": {}, + "source": [ + "### Import des données" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "8051b5f4", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.microsoft.datawrangler.viewer.v0+json": { + "columns": [ + { + "name": "index", + "rawType": "int64", + "type": "integer" + }, + { + "name": "ZONE_RISQUE", + "rawType": "object", + "type": "string" + }, + { + "name": "NB", + "rawType": "int64", + "type": "integer" + }, + { + "name": "CHARGE", + "rawType": "float64", + "type": "float" + }, + { + "name": "EXPO", + "rawType": "float64", + "type": "float" + }, + { + "name": "FREQ", + "rawType": "float64", + "type": "float" + }, + { + "name": "CM", + "rawType": "float64", + "type": "float" + }, + { + "name": "FREQxCHARGE", + "rawType": "float64", + "type": "float" + } + ], + "ref": "96564cd0-30e4-4347-a31a-4e7519cd4c0b", + "rows": [ + [ + "0", + "A", + "236", + "1174911.57", + "986430.8907103825", + "0.00023924636000606546", + "4978.438855932203", + "281.0933164515116" + ], + [ + "1", + "B", + "181", + "1146823.23", + "909243.3551912569", + "0.00019906661837735087", + "6336.039944751381", + "228.2942222726909" + ], + [ + "2", + "C", + "284", + "1926300.0", + "1356654.5300546447", + "0.00020933848205892237", + "6782.7464788732395", + "403.24871799010214" + ], + [ + "3", + "D", + "83", + "455800.64", + "314767.9918032787", + "0.00026368627738957876", + "5491.573975903615", + "120.18837399338753" + ], + [ + "4", + "E", + "20", + "181747.82", + "137874.1612021858", + "0.00014505981269884912", + "9087.391", + "26.364304727624145" + ], + [ + "5", + "F", + "1", + "19418.42", + "12129.715846994535", + "8.244216209300377e-05", + "19418.42", + "1.6008965292300261" + ], + [ + "6", + "G", + "5", + "29820.87", + "26935.5", + "0.000185628631360101", + "5964.174", + "5.535607284067495" + ], + [ + "7", + "H", + "14", + "86476.9", + "46174.15300546448", + "0.00030319993088651065", + "6176.921428571428", + "26.219790103279692" + ], + [ + "8", + "I", + "4", + "32686.63", + "13981.37431693989", + "0.0002860949080773543", + "8171.6575", + "9.351478405208491" + ], + [ + "9", + "J", + "12", + "75580.99", + "28698.71857923497", + "0.00041813713622330966", + "6298.4158333333335", + "31.603218711522608" + ], + [ + "10", + "K", + "17", + "87411.64", + "72896.8743169399", + "0.00023320615814181092", + "5141.861176470588", + "20.384932741275044" + ], + [ + "11", + "L", + "7", + "22684.079999999998", + "24877.61202185792", + "0.0002813774888783406", + "3240.582857142857", + "6.382789467915388" + ], + [ + "12", + "M", + "1", + "6352.66", + "1010.7759562841533", + "0.0009893389269727308", + "6352.66", + "6.284933827822588" + ], + [ + "13", + "R", + "0", + "0.0", + "729.1994535519125", + "0.0", + "0.0", + "0.0" + ], + [ + "14", + "S", + "0", + "0.0", + "1783.620218579235", + "0.0", + "0.0", + "0.0" + ], + [ + "15", + "T", + "1", + "3053.17", + "3044.155737704918", + "0.00032849830500259836", + "3053.17", + "1.0029611698847833" + ], + [ + "16", + "X", + "0", + "0.0", + "1627.1803278688521", + "0.0", + "0.0", + "0.0" + ] + ], + "shape": { + "columns": 7, + "rows": 17 + } + }, + "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", + " \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", + "
ZONE_RISQUENBCHARGEEXPOFREQCMFREQxCHARGE
0A2361174911.579.864309e+050.0002394978.438856281.093316
1B1811146823.239.092434e+050.0001996336.039945228.294222
2C2841926300.001.356655e+060.0002096782.746479403.248718
3D83455800.643.147680e+050.0002645491.573976120.188374
4E20181747.821.378742e+050.0001459087.39100026.364305
5F119418.421.212972e+040.00008219418.4200001.600897
6G529820.872.693550e+040.0001865964.1740005.535607
7H1486476.904.617415e+040.0003036176.92142926.219790
8I432686.631.398137e+040.0002868171.6575009.351478
9J1275580.992.869872e+040.0004186298.41583331.603219
10K1787411.647.289687e+040.0002335141.86117620.384933
11L722684.082.487761e+040.0002813240.5828576.382789
12M16352.661.010776e+030.0009896352.6600006.284934
13R00.007.291995e+020.0000000.0000000.000000
14S00.001.783620e+030.0000000.0000000.000000
15T13053.173.044156e+030.0003283053.1700001.002961
16X00.001.627180e+030.0000000.0000000.000000
\n", + "
" + ], + "text/plain": [ + " ZONE_RISQUE NB CHARGE EXPO FREQ CM \\\n", + "0 A 236 1174911.57 9.864309e+05 0.000239 4978.438856 \n", + "1 B 181 1146823.23 9.092434e+05 0.000199 6336.039945 \n", + "2 C 284 1926300.00 1.356655e+06 0.000209 6782.746479 \n", + "3 D 83 455800.64 3.147680e+05 0.000264 5491.573976 \n", + "4 E 20 181747.82 1.378742e+05 0.000145 9087.391000 \n", + "5 F 1 19418.42 1.212972e+04 0.000082 19418.420000 \n", + "6 G 5 29820.87 2.693550e+04 0.000186 5964.174000 \n", + "7 H 14 86476.90 4.617415e+04 0.000303 6176.921429 \n", + "8 I 4 32686.63 1.398137e+04 0.000286 8171.657500 \n", + "9 J 12 75580.99 2.869872e+04 0.000418 6298.415833 \n", + "10 K 17 87411.64 7.289687e+04 0.000233 5141.861176 \n", + "11 L 7 22684.08 2.487761e+04 0.000281 3240.582857 \n", + "12 M 1 6352.66 1.010776e+03 0.000989 6352.660000 \n", + "13 R 0 0.00 7.291995e+02 0.000000 0.000000 \n", + "14 S 0 0.00 1.783620e+03 0.000000 0.000000 \n", + "15 T 1 3053.17 3.044156e+03 0.000328 3053.170000 \n", + "16 X 0 0.00 1.627180e+03 0.000000 0.000000 \n", + "\n", + " FREQxCHARGE \n", + "0 281.093316 \n", + "1 228.294222 \n", + "2 403.248718 \n", + "3 120.188374 \n", + "4 26.364305 \n", + "5 1.600897 \n", + "6 5.535607 \n", + "7 26.219790 \n", + "8 9.351478 \n", + "9 31.603219 \n", + "10 20.384933 \n", + "11 6.382789 \n", + "12 6.284934 \n", + "13 0.000000 \n", + "14 0.000000 \n", + "15 1.002961 \n", + "16 0.000000 " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "path = input_path + '/base_retraitee.csv'\n", + "data_retraitee = pd.read_csv(path, sep=\",\", decimal=\".\")\n", + "\n", + "# Group by ZONE_RISQUE and aggregate the necessary columns\n", + "data = data_retraitee.groupby([\"ZONE_RISQUE\"], as_index=False).agg({\n", + " 'NB': 'sum',\n", + " 'CHARGE': 'sum',\n", + " 'EXPO': 'sum'\n", + "})\n", + "\n", + "# Calculate derived metrics\n", + "data[\"FREQ\"] = data[\"NB\"] / data[\"EXPO\"]\n", + "data[\"FREQ\"] = data[\"FREQ\"].fillna(0)\n", + "\n", + "data[\"CM\"] = data[\"CHARGE\"] / data[\"NB\"]\n", + "data[\"CM\"] = data[\"CM\"].fillna(0)\n", + "\n", + "data[\"FREQxCHARGE\"] = data[\"FREQ\"] * data[\"CHARGE\"]\n", + "data[\"FREQxCHARGE\"] = data[\"FREQxCHARGE\"].fillna(0)\n", + "\n", + "data" + ] + }, + { + "cell_type": "markdown", + "id": "aeff9cff", + "metadata": {}, + "source": [ + "**Exercice :** Regrouper les zones géographiques en 5 zones homogènes en termes :\n", + "* Fréquence de sinistres (La fréquence est égale au Nombre de sinistres divisé par l'exposition)\n", + "* Charge \n", + "* Fréquence de sinistres x Charge \n", + " \n", + "A chaque fois :\n", + "* Afficher les coordonnées des centroïdes\n", + "* Représenter graphiquement la partition obtenue" + ] + }, + { + "cell_type": "markdown", + "id": "1c4333b8", + "metadata": {}, + "source": [ + "### Regroupement de zones selon la fréquence" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "6e35f286", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coordonnées des centroïdes : \n", + "[[1.45059813e-04]\n", + " [2.06105405e-05]\n", + " [9.89338927e-04]\n", + " [3.13499008e-04]\n", + " [2.13297250e-04]]\n", + "Nombre d'itérations réalisées : \n", + "3\n", + "Partition : \n", + "[4 4 4 3 0 1 4 3 3 3 4 3 2 1 1 3 1]\n" + ] + } + ], + "source": [ + "# Initialisation de l'algorithme\n", + "kmeans_FREQ = KMeans(init='random', n_clusters=5, n_init=1, random_state=42, max_iter=300)\n", + "\n", + "# Transformation des données : plusieurs échantillons de 1 dimension\n", + "data_freq = data[\"FREQ\"].to_numpy()\n", + "data_freq = data_freq.reshape(-1, 1)\n", + "\n", + "# Fitting\n", + "kmeans_FREQ.fit(data_freq)\n", + "\n", + "# Centroïdes\n", + "print(\"Coordonnées des centroïdes : \")\n", + "print(kmeans_FREQ.cluster_centers_)\n", + "# Itérations nécessaire pour la résolution\n", + "print(\"Nombre d'itérations réalisées : \")\n", + "print(kmeans_FREQ.n_iter_)\n", + "# Classes\n", + "print(\"Partition : \")\n", + "print(kmeans_FREQ.labels_)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "277e3d46", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Cluster_FREQ=4
FREQ=%{x}
Y=%{y}", + "legendgroup": "4", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "4", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "DKJ1lcZbLz+MRDc7kRcqP8dbVN47cCs/rNRBzalUKD/efhelGZEuPw==", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AAAAAAA=", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ=3
FREQ=%{x}
Y=%{y}", + "legendgroup": "3", + "marker": { + "color": "#EF553B", + "symbol": "circle" + }, + "mode": "markers", + "name": "3", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "uSYT8OtHMT/+84zJ2d4zP04cFEbgvzI/BVFIUy1nOz8N79Acu3AyP6oYDnpJhzU/", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AAAAAAAA", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ=0
FREQ=%{x}
Y=%{y}", + "legendgroup": "0", + "marker": { + "color": "#00cc96", + "symbol": "circle" + }, + "mode": "markers", + "name": "0", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "ER+STWYDIz8=", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AA==", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ=1
FREQ=%{x}
Y=%{y}", + "legendgroup": "1", + "marker": { + "color": "#ab63fa", + "symbol": "circle" + }, + "mode": "markers", + "name": "1", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "3mpcj5mcFT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AAAAAA==", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ=2
FREQ=%{x}
Y=%{y}", + "legendgroup": "2", + "marker": { + "color": "#FFA15A", + "symbol": "circle" + }, + "mode": "markers", + "name": "2", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "ESaBlZY1UD8=", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AA==", + "dtype": "i1" + }, + "yaxis": "y" + } + ], + "layout": { + "legend": { + "title": { + "text": "Cluster_FREQ" + }, + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "FREQ" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Y" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualisation\n", + "data[\"Cluster_FREQ\"] = kmeans_FREQ.labels_\n", + "data[\"Cluster_FREQ\"] = data[\"Cluster_FREQ\"].astype(str)\n", + "data[\"Y\"] = 0\n", + "\n", + "fig = px.scatter(data, x=\"FREQ\", y=\"Y\", color=\"Cluster_FREQ\")\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "id": "9c738659", + "metadata": {}, + "source": [ + "### Regroupement de zones selon le coût moyen" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "f461bfb8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coordonnées des centroïdes : \n", + "[[ 5946.98129932]\n", + " [ 0. ]\n", + " [ 8629.52425 ]\n", + " [ 3146.87642857]\n", + " [19418.42 ]]\n", + "Nombre d'itérations réalisées : \n", + "6\n", + "Partition : \n", + "[0 0 0 0 2 4 0 0 2 0 0 3 0 1 1 3 1]\n" + ] + } + ], + "source": [ + "# Initialisation de l'algorithme\n", + "kmeans_CM = KMeans(init='random', n_clusters=5, n_init=1, random_state=42)\n", + "\n", + "# Transformation des données : plusieurs échantillons de 1 dimension\n", + "data_cm = data['CM'].to_numpy()\n", + "data_cm = data_cm.reshape(-1,1)\n", + "\n", + "# Fitting\n", + "kmeans_CM.fit(data_cm)\n", + "\n", + "# Centroïdes\n", + "print(\"Coordonnées des centroïdes : \")\n", + "print(kmeans_CM.cluster_centers_)\n", + "# Itérations nécessaire pour la résolution\n", + "print(\"Nombre d'itérations réalisées : \")\n", + "print(kmeans_CM.n_iter_)\n", + "# Classes\n", + "print(\"Partition : \")\n", + "print(kmeans_CM.labels_)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "98b2a0bf", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Cluster_CM=0
FREQ=%{x}
Y=%{y}", + "legendgroup": "0", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "0", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "DKJ1lcZbLz+MRDc7kRcqP8dbVN47cCs/uSYT8OtHMT+s1EHNqVQoP/7zjMnZ3jM/BVFIUy1nOz/efhelGZEuPxEmgZWWNVA/", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AAAAAAAAAAAA", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_CM=2
FREQ=%{x}
Y=%{y}", + "legendgroup": "2", + "marker": { + "color": "#EF553B", + "symbol": "circle" + }, + "mode": "markers", + "name": "2", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "ER+STWYDIz9OHBRG4L8yPw==", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AAA=", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_CM=4
FREQ=%{x}
Y=%{y}", + "legendgroup": "4", + "marker": { + "color": "#00cc96", + "symbol": "circle" + }, + "mode": "markers", + "name": "4", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "3mpcj5mcFT8=", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AA==", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_CM=3
FREQ=%{x}
Y=%{y}", + "legendgroup": "3", + "marker": { + "color": "#ab63fa", + "symbol": "circle" + }, + "mode": "markers", + "name": "3", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "De/QHLtwMj+qGA56SYc1Pw==", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AAA=", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_CM=1
FREQ=%{x}
Y=%{y}", + "legendgroup": "1", + "marker": { + "color": "#FFA15A", + "symbol": "circle" + }, + "mode": "markers", + "name": "1", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AAAA", + "dtype": "i1" + }, + "yaxis": "y" + } + ], + "layout": { + "legend": { + "title": { + "text": "Cluster_CM" + }, + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "FREQ" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Y" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualisation\n", + "data[\"Cluster_CM\"] = kmeans_CM.labels_\n", + "data[\"Cluster_CM\"] = data[\"Cluster_CM\"].astype(str)\n", + "data[\"Y\"] = 0\n", + "\n", + "fig = px.scatter(data, x=\"FREQ\", y=\"Y\", color=\"Cluster_CM\")\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "id": "6b154f4a", + "metadata": {}, + "source": [ + "### Regroupement de zones selon (fréquence; le coût moyen)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "1d89f70e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coordonnées des centroïdes : \n", + "[[ 6.88870225]\n", + " [ 0.52077154]\n", + " [ 26.14306157]\n", + " [120.18837399]\n", + " [304.21208557]]\n", + "Nombre d'itérations réalisées : \n", + "4\n", + "Partition : \n", + "[4 4 4 3 2 1 0 2 0 2 2 0 0 1 1 1 1]\n" + ] + } + ], + "source": [ + "# Initialisation de l'algorithme\n", + "kmeans_FREQ_CM = KMeans(init='random', n_clusters=5, n_init=1, random_state=42, max_iter=300)\n", + "\n", + "# Transformation des données : plusieurs échantillons de 1 dimension\n", + "data_x = data['FREQxCHARGE'].to_numpy()\n", + "data_x = data_x.reshape(-1,1)\n", + "\n", + "# Fitting\n", + "kmeans_FREQ_CM.fit(data_x)\n", + "\n", + "# Centroïdes\n", + "print(\"Coordonnées des centroïdes : \")\n", + "print(kmeans_FREQ_CM.cluster_centers_)\n", + "# Itérations nécessaire pour la résolution\n", + "print(\"Nombre d'itérations réalisées : \")\n", + "print(kmeans_FREQ_CM.n_iter_)\n", + "# Classes\n", + "print(\"Partition : \")\n", + "print(kmeans_FREQ_CM.labels_)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "48aa493b", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Cluster_FREQ_CM=4
FREQ=%{x}
CHARGE=%{y}", + "legendgroup": "4", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "4", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "DKJ1lcZbLz+MRDc7kRcqP8dbVN47cCs/", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "H4XrkX/tMUGuR+E6x38xQQAAAACcZD1B", + "dtype": "f8" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ_CM=3
FREQ=%{x}
CHARGE=%{y}", + "legendgroup": "3", + "marker": { + "color": "#EF553B", + "symbol": "circle" + }, + "mode": "markers", + "name": "3", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "uSYT8OtHMT8=", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "9ihcj+LRG0E=", + "dtype": "f8" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ_CM=2
FREQ=%{x}
CHARGE=%{y}", + "legendgroup": "2", + "marker": { + "color": "#00cc96", + "symbol": "circle" + }, + "mode": "markers", + "name": "2", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "ER+STWYDIz/+84zJ2d4zPwVRSFMtZzs/3n4XpRmRLj8=", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "9ihcj54vBkFmZmZmzhz1QHE9CtfPc/JA16NwPTpX9UA=", + "dtype": "f8" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ_CM=1
FREQ=%{x}
CHARGE=%{y}", + "legendgroup": "1", + "marker": { + "color": "#ab63fa", + "symbol": "circle" + }, + "mode": "markers", + "name": "1", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "3mpcj5mcFT8AAAAAAAAAAAAAAAAAAAAAqhgOekmHNT8AAAAAAAAAAA==", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "FK5H4Zr20kAAAAAAAAAAAAAAAAAAAAAApHA9Clfap0AAAAAAAAAAAA==", + "dtype": "f8" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ_CM=0
FREQ=%{x}
CHARGE=%{y}", + "legendgroup": "0", + "marker": { + "color": "#FFA15A", + "symbol": "circle" + }, + "mode": "markers", + "name": "0", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "rNRBzalUKD9OHBRG4L8yPw3v0By7cDI/ESaBlZY1UD8=", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "4XoUrjcf3UAfhetRqOvfQOtRuB4FJ9ZAXI/C9ajQuEA=", + "dtype": "f8" + }, + "yaxis": "y" + } + ], + "layout": { + "legend": { + "title": { + "text": "Cluster_FREQ_CM" + }, + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "FREQ" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "CHARGE" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualisation\n", + "data[\"Cluster_FREQ_CM\"] = kmeans_FREQ_CM.labels_\n", + "data[\"Cluster_FREQ_CM\"] = data[\"Cluster_FREQ_CM\"].astype(str)\n", + "\n", + "fig = px.scatter(data, x=\"FREQ\", y=\"CHARGE\", color=\"Cluster_FREQ_CM\")\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "id": "f1cac03f", + "metadata": {}, + "source": [ + "## C.A.H : Cas pratique" + ] + }, + { + "cell_type": "markdown", + "id": "bffff328", + "metadata": {}, + "source": [ + "**Exercice :** Comparer les résultats obtenus via K-means à ceux d'une C.A.H (lien simple) pour la fréquence et (fréquence; coût moyen)\n", + " \n", + "A chaque fois :\n", + "* Tracer le dendrogramme associé\n", + "* Représenter graphiquement la partition obtenue" + ] + }, + { + "cell_type": "markdown", + "id": "8453bf02", + "metadata": {}, + "source": [ + "### Regroupement de zones selon la fréquence" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "341bf2b2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Calcul de CAH avec lien simple\n", + "data_x = data['FREQ'].to_numpy()\n", + "data_x = data_x.reshape(-1,1)\n", + "\n", + "linkage_data = linkage(data_x, method='single', metric='euclidean')\n", + "dendrogram(linkage_data, labels=np.array(data['ZONE_RISQUE']))\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1f0c9650", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ZONE_RISQUE Cluster\n", + "0 A 0\n", + "1 B 0\n", + "2 C 0\n", + "3 D 0\n", + "4 E 0\n", + "5 F 4\n", + "6 G 0\n", + "7 H 0\n", + "8 I 0\n", + "9 J 2\n", + "10 K 0\n", + "11 L 0\n", + "12 M 3\n", + "13 R 1\n", + "14 S 1\n", + "15 T 0\n", + "16 X 1\n" + ] + } + ], + "source": [ + "# Calcul de la partition de l'espace\n", + "hierarchical_cluster = AgglomerativeClustering(\n", + " n_clusters=5, metric=\"euclidean\", linkage=\"single\"\n", + ")\n", + "\n", + "labels = hierarchical_cluster.fit_predict(data_x)\n", + "print(pd.DataFrame({\"ZONE_RISQUE\": data['ZONE_RISQUE'], \"Cluster\": labels}))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "3d77b67c", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Cluster_FREQ=0
FREQ=%{x}
Y=%{y}", + "legendgroup": "0", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "0", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "DKJ1lcZbLz+MRDc7kRcqP8dbVN47cCs/uSYT8OtHMT8RH5JNZgMjP6zUQc2pVCg//vOMydneMz9OHBRG4L8yP95+F6UZkS4/De/QHLtwMj+qGA56SYc1Pw==", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AAAAAAAAAAAAAAA=", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ=4
FREQ=%{x}
Y=%{y}", + "legendgroup": "4", + "marker": { + "color": "#EF553B", + "symbol": "circle" + }, + "mode": "markers", + "name": "4", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "3mpcj5mcFT8=", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AA==", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ=2
FREQ=%{x}
Y=%{y}", + "legendgroup": "2", + "marker": { + "color": "#00cc96", + "symbol": "circle" + }, + "mode": "markers", + "name": "2", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "BVFIUy1nOz8=", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AA==", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ=3
FREQ=%{x}
Y=%{y}", + "legendgroup": "3", + "marker": { + "color": "#ab63fa", + "symbol": "circle" + }, + "mode": "markers", + "name": "3", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "ESaBlZY1UD8=", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AA==", + "dtype": "i1" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ=1
FREQ=%{x}
Y=%{y}", + "legendgroup": "1", + "marker": { + "color": "#FFA15A", + "symbol": "circle" + }, + "mode": "markers", + "name": "1", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AAAA", + "dtype": "i1" + }, + "yaxis": "y" + } + ], + "layout": { + "legend": { + "title": { + "text": "Cluster_FREQ" + }, + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "FREQ" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Y" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualisation\n", + "data[\"Cluster_FREQ\"] = labels\n", + "data[\"Cluster_FREQ\"] = data[\"Cluster_FREQ\"].astype(str)\n", + "data[\"Y\"] = 0\n", + "\n", + "fig = px.scatter(data, x=\"FREQ\", y=\"Y\", color=\"Cluster_FREQ\")\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "id": "6ace7bc5", + "metadata": {}, + "source": [ + "### Regroupement de zones selon (fréquence; le coût moyen)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "16103b5b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Calcul de CAH avec lien simple\n", + "data_x = data[[\"FREQ\", \"CM\"]].to_numpy()\n", + "data_x = data_x.reshape(-1, 2)\n", + "\n", + "linkage_data = linkage(data_x, method=\"single\", metric=\"euclidean\")\n", + "dendrogram(linkage_data, labels=np.array(data[\"ZONE_RISQUE\"]))\n", + "\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "67bf3800", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ZONE_RISQUE Cluster\n", + "0 A 1\n", + "1 B 1\n", + "2 C 1\n", + "3 D 1\n", + "4 E 0\n", + "5 F 3\n", + "6 G 1\n", + "7 H 1\n", + "8 I 0\n", + "9 J 1\n", + "10 K 1\n", + "11 L 4\n", + "12 M 1\n", + "13 R 2\n", + "14 S 2\n", + "15 T 4\n", + "16 X 2\n" + ] + } + ], + "source": [ + "# Calcul de la partition de l'espace\n", + "hierarchical_cluster = AgglomerativeClustering(\n", + " n_clusters=5, metric=\"euclidean\", linkage=\"single\"\n", + ")\n", + "\n", + "labels = hierarchical_cluster.fit_predict(data_x)\n", + "print(pd.DataFrame({\"ZONE_RISQUE\": data[\"ZONE_RISQUE\"], \"Cluster\": labels}))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0efdf7c1", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Cluster_FREQ_CHARGE=1
FREQ=%{x}
CHARGE=%{y}", + "legendgroup": "1", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "1", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "DKJ1lcZbLz+MRDc7kRcqP8dbVN47cCs/uSYT8OtHMT+s1EHNqVQoP/7zjMnZ3jM/BVFIUy1nOz/efhelGZEuPxEmgZWWNVA/", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "H4XrkX/tMUGuR+E6x38xQQAAAACcZD1B9ihcj+LRG0HhehSuNx/dQGZmZmbOHPVAcT0K189z8kDXo3A9Olf1QFyPwvWo0LhA", + "dtype": "f8" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ_CHARGE=0
FREQ=%{x}
CHARGE=%{y}", + "legendgroup": "0", + "marker": { + "color": "#EF553B", + "symbol": "circle" + }, + "mode": "markers", + "name": "0", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "ER+STWYDIz9OHBRG4L8yPw==", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "9ihcj54vBkEfhetRqOvfQA==", + "dtype": "f8" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ_CHARGE=3
FREQ=%{x}
CHARGE=%{y}", + "legendgroup": "3", + "marker": { + "color": "#00cc96", + "symbol": "circle" + }, + "mode": "markers", + "name": "3", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "3mpcj5mcFT8=", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "FK5H4Zr20kA=", + "dtype": "f8" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ_CHARGE=4
FREQ=%{x}
CHARGE=%{y}", + "legendgroup": "4", + "marker": { + "color": "#ab63fa", + "symbol": "circle" + }, + "mode": "markers", + "name": "4", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "De/QHLtwMj+qGA56SYc1Pw==", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "61G4HgUn1kCkcD0KV9qnQA==", + "dtype": "f8" + }, + "yaxis": "y" + }, + { + "hovertemplate": "Cluster_FREQ_CHARGE=2
FREQ=%{x}
CHARGE=%{y}", + "legendgroup": "2", + "marker": { + "color": "#FFA15A", + "symbol": "circle" + }, + "mode": "markers", + "name": "2", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": { + "bdata": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "dtype": "f8" + }, + "xaxis": "x", + "y": { + "bdata": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "dtype": "f8" + }, + "yaxis": "y" + } + ], + "layout": { + "legend": { + "title": { + "text": "Cluster_FREQ_CHARGE" + }, + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "FREQ" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "CHARGE" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualisation\n", + "data[\"Cluster_FREQ_CHARGE\"] = labels\n", + "data[\"Cluster_FREQ_CHARGE\"] = data[\"Cluster_FREQ_CHARGE\"].astype(str)\n", + "\n", + "fig = px.scatter(data, x=\"FREQ\", y=\"CHARGE\", color=\"Cluster_FREQ_CHARGE\")\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "id": "12961201", + "metadata": {}, + "source": [ + "## Application : création de Model Points (K-means)" + ] + }, + { + "cell_type": "markdown", + "id": "6567c970", + "metadata": {}, + "source": [ + "Dans certains cas, il se peut que la modélisation ligne par ligne ne soit pas adaptée. C'est le cas des produits collectifs en assurance ou lorsque le nombre d'individus est trop important. \n", + "Dans ce cas de figure, il est nécessaire d'agréger l'information afin d'avoir des \"individus type\". Chacun de ces individus est appelé *Model Point*. \n", + "L'algorithme des k-means peut s'avérer utile pour le regroupement d'individus sous forme de *Mode Points* lorsque les variables explicatives sont numériques. \n", + " \n", + "Afin d'illustre ce propos, nous agrègerons la base de données selon les variables ANNEE_CTR, AGE_ASSURE_PRINCIPAL, ANCIENNETE_PERMIS et ANNEE_CONSTRUCTION afin de créer 100 Model Points. " + ] + }, + { + "cell_type": "markdown", + "id": "a250bff9", + "metadata": {}, + "source": [ + "**Exercice :** Construire la nouvelle base de modélisation (les nouveaux individus deviennent les Model Points et chacune de modalités devient le centroïde de la classe)." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "5b42c2b5", + "metadata": {}, + "outputs": [], + "source": [ + "# Sélection des variables\n", + "data_source_MP = data_retraitee[\n", + " [\n", + " \"ANNEE_CTR\",\n", + " \"AGE_ASSURE_PRINCIPAL\",\n", + " \"ANCIENNETE_PERMIS\",\n", + " \"ANNEE_CONSTRUCTION\",\n", + " \"NB\",\n", + " \"EXPO\",\n", + " \"CHARGE\",\n", + " ]\n", + "]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "0777373f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Nombre d'itérations réalisées : \n", + "41\n" + ] + } + ], + "source": [ + "# Agrégation sous forme de MP\n", + "# Itinitialisation\n", + "kmeans = KMeans(n_clusters=100, max_iter=500)\n", + "\n", + "# Sélection des données\n", + "data_x = data_source_MP[\n", + " [\"ANNEE_CTR\", \"AGE_ASSURE_PRINCIPAL\", \"ANCIENNETE_PERMIS\", \"ANNEE_CONSTRUCTION\"]\n", + "]\n", + "# Fitting\n", + "kmeans.fit(data_x)\n", + "\n", + "# Centroïdes\n", + "print(\"Nombre d'itérations réalisées : \")\n", + "print(kmeans.n_iter_)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "5fd7d737", + "metadata": {}, + "outputs": [], + "source": [ + "# Construction de la nouvelle base de modélisation\n", + "\n", + "# Nouvelles variables explicatives\n", + "base_MP = pd.DataFrame(\n", + " kmeans.cluster_centers_,\n", + " columns=[\n", + " \"ANNEE_CTR\",\n", + " \"AGE_ASSURE_PRINCIPAL\",\n", + " \"ANCIENNETE_PERMIS\",\n", + " \"ANNEE_CONSTRUCTION\",\n", + " ],\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "39e674dd", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/tp/_ld5_pzs6nx6mv1pbjhq1l740000gn/T/ipykernel_60807/1945959780.py:2: SettingWithCopyWarning:\n", + "\n", + "\n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + "\n" + ] + } + ], + "source": [ + "# Ajout du nombre de sinistres, exposition et CHARGE par classe\n", + "data_source_MP[\"Cluster\"] = kmeans.labels_\n", + "data_sinistralite_MP = data_source_MP[[\"Cluster\", \"NB\", \"EXPO\", \"CHARGE\"]]\n", + "\n", + "data_sinistralite_MP = data_sinistralite_MP.groupby([\"Cluster\"], as_index=False).sum()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "8115717e", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.microsoft.datawrangler.viewer.v0+json": { + "columns": [ + { + "name": "index", + "rawType": "int64", + "type": "integer" + }, + { + "name": "Cluster", + "rawType": "int32", + "type": "integer" + }, + { + "name": "ANNEE_CTR", + "rawType": "float64", + "type": "float" + }, + { + "name": "AGE_ASSURE_PRINCIPAL", + "rawType": "float64", + "type": "float" + }, + { + "name": "ANCIENNETE_PERMIS", + "rawType": "float64", + "type": "float" + }, + { + "name": "ANNEE_CONSTRUCTION", + "rawType": "float64", + "type": "float" + }, + { + "name": "NB", + "rawType": "int64", + "type": "integer" + }, + { + "name": "EXPO", + "rawType": "float64", + "type": "float" + }, + { + "name": "CHARGE", + "rawType": "float64", + "type": "float" + } + ], + "ref": "7165b46e-7eb6-49d2-a196-5f1042af8126", + "rows": [ + [ + "0", + "0", + "2019.307392996109", + "26.02334630350193", + "13.019455252918299", + "2017.307392996109", + "14", + "70582.72677595628", + "76623.37" + ], + [ + "1", + "1", + "2019.185628742515", + "56.634730538922156", + "34.64071856287425", + "2017.3233532934132", + "13", + "48258.04644808743", + "94446.05" + ], + [ + "2", + "2", + "2019.251282051282", + "45.44615384615385", + "63.061538461538476", + "2017.2205128205128", + "18", + "52378.40983606557", + "180511.41" + ], + [ + "3", + "3", + "2019.4968944099378", + "43.17391304347826", + "27.515527950310556", + "2017.2422360248447", + "8", + "43450.14480874316", + "70994.73999999999" + ], + [ + "4", + "4", + "2018.0091743119267", + "63.30275229357798", + "48.211009174311926", + "2014.4587155963302", + "3", + "31148.94262295082", + "14771.7" + ] + ], + "shape": { + "columns": 8, + "rows": 5 + } + }, + "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", + "
ClusterANNEE_CTRAGE_ASSURE_PRINCIPALANCIENNETE_PERMISANNEE_CONSTRUCTIONNBEXPOCHARGE
002019.30739326.02334613.0194552017.3073931470582.72677676623.37
112019.18562956.63473134.6407192017.3233531348258.04644894446.05
222019.25128245.44615463.0615382017.2205131852378.409836180511.41
332019.49689443.17391327.5155282017.242236843450.14480970994.74
442018.00917463.30275248.2110092014.458716331148.94262314771.70
\n", + "
" + ], + "text/plain": [ + " Cluster ANNEE_CTR AGE_ASSURE_PRINCIPAL ANCIENNETE_PERMIS \\\n", + "0 0 2019.307393 26.023346 13.019455 \n", + "1 1 2019.185629 56.634731 34.640719 \n", + "2 2 2019.251282 45.446154 63.061538 \n", + "3 3 2019.496894 43.173913 27.515528 \n", + "4 4 2018.009174 63.302752 48.211009 \n", + "\n", + " ANNEE_CONSTRUCTION NB EXPO CHARGE \n", + "0 2017.307393 14 70582.726776 76623.37 \n", + "1 2017.323353 13 48258.046448 94446.05 \n", + "2 2017.220513 18 52378.409836 180511.41 \n", + "3 2017.242236 8 43450.144809 70994.74 \n", + "4 2014.458716 3 31148.942623 14771.70 " + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Joiture des tables\n", + "base_MP = base_MP.merge(data_sinistralite_MP, left_index=True, right_on=\"Cluster\")\n", + "\n", + "base_MP = base_MP.iloc[:, [4, 0, 1, 2, 3, 5, 6, 7]]\n", + "base_MP.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b99a8316", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "studies", + "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.13.3" + } }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Calcul de la partition de l'espace\n", - "hierarchical_cluster = AgglomerativeClustering(n_clusters=3, metric='euclidean', linkage='single')\n", - "\n", - "labels = hierarchical_cluster.fit_predict(data) # type: ignore\n", - "print(labels)\n", - "\n", - "#Représentation Graphique\n", - "plt.scatter(x, y, c=labels, cmap='viridis')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "75420ae4", - "metadata": {}, - "source": [ - "### Classification Ascendante Hiérarchique avec le lien complet" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "8f098bc3", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Calcul de CAH avec lien complet\n", - "data = list(zip(x, strict=False))\n", - "\n", - "linkage_data = linkage(data, method='complete', metric='euclidean')\n", - "dendrogram(linkage_data, labels=x)\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "68ccdf5c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2 2 1 1 1 0 0]\n" - ] - }, - { - "data": { - "image/png": "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uWYekdZRmm+//dY8Tn379jWPQ5MmTWT48OFm/kFlp3MpSptPoa9vraUw//NYj+l5551X5Hca+PWNsW7duuU6V1TWuvWDW2EaavR50KJFC0lKSir1tZKfny933323+UBYp04dufPOO+XGG2+Uyqas2rUO9cYbb8jKlStNqNPXuz6fq1WrVqK9Lce8sFdffVWqVKlijmVZ9LHSx2T8+PHyj3/8Q+Li4qRXr15y//33m3PfuULPTTn5J4QWP1gxMTHmzTtY+2AHtrT24UQ/oYwaNUp69uwpXbt2LfXEEBsbK88995wJODt37pQ77rijzMmIlZGeqHXfjx07Jg888IDpwdJJpffcc0/QyYI2HvcFCxaYk9ctt9xSaht9kz9+/Lg5wetEzFmzZpk3fZ2Eq2E3nOlzNtjrXgU7pv7neHnPFeHyOnjkkUdMgH3yySdLbae/14sPdDLpnDlz5NprrzXninfffVfCiZ7DNNBoONFey8cee0xWrVpl3rC1l8b2Y37ixAl5++23TbDxP9fLeqy0Rv0QM3v2bPPB75133jHngXOJnpty0gTrH3Lx/6z0oOqbeLD22rY4ba/JNlwtX75cRo4caa6YmjJlStA2epWAfsop/Onu4osvNtv06gu9miBc6FCEXu0TEREROO76yVVP4nryLt4NbeNx16sk9JgWft4Xp71V2v2urwXt8lY6jLllyxbz6VevGAtXwY6p/w0r2DH1vxkEu02wc0U4vNENGzZM1q5dK88//3yZPXEff/yx6bWNj483/09OTpb9+/eb18rNN98s4ULfoPv37296IpX23Olwc79+/eTf//53ieEc24758uXLTS16pdypaI+NDl9Wr1498FjpOUB7uTQQF+/ZPFvouSkn/1DDoUOHimzX/2vXa3HaPVm8rT5Z9FNNOA7NqDfffNP0Xlx99dXm00xZib54t7XWrEMala2Ltjz0RF38jV3Dmg692H7cdWhBlzu44YYbyjV86Q82Sj/56vyLYI9TOAl2TP3/D/ba1+e5hp7ynisqM91nHY7917/+ZQJK8eHp4vR14g82fvpmF26ve33u+oNN4de8ClaLTcfcH270WOtrujwfAP3BpjyP1dlCuCkn/QRStWrVImt26DirfjLV+STF6TY9sDovxU8/+ai2bdtKOA5NTJgwwZzopk6dWuZY6rRp00x3tF6N57dv3z6z/kvjxo0lnGgPjfZSFV+r5euvvw5ai23HXSfT1qxZ0zz/y6LzEnQtlMLrPulQhoajcDvmwY6pTgbXHgm/1atXmwmU+tgUp5Mr9TnjP+5++hxq166dhAsditX5Mjrnav78+UHPc4Xp+VAnXhdf/0l7OvxvduFCexzuuuuuEnWoYM9nW4554dd98V7p0ugQpA49Fn+s9IPOz372MzlXCDflpG/mOn9Ah2I+/fRTc9LWbjf9VKdzT/TEd/jw4cDYq3Zb6pNd22zevNmcDHURPO3eD7ckr5Non3rqKbnmmmtkyJAh5goRrVW/dJ6F9kzoz/4uWW33ww8/yNixY81tdbhCe3z08dAFEMOJ9jzolQLa9aov+O+//16efvpp80lWu65tPu5Kw3tpiy9q3XoFodKa9ZOudk9r8NMrKPRn7bEq/iYRbrRrXodmnnjiCTN/SN+8dWKtvhb89HWgIaDwomaLFy+W119/3TxnJk2aZBYC1LAQLvR5rmF18uTJpifW/5rXL3/Q0+OrX0o/5etVZPrhZsWKFeZqMp2jplfl6Os/nOiHM51Tp8NweuWU1qMXT1x//fWBq8FsPOb++XP6QbS0DzT6mtfnQOHH6oMPPpC33nrLPF+WLFliatf5OtohcM6c62vRw0l+fr4zadIk5/LLLzdrBAwePNjZu3ev+Z1+12v933vvvSLX/z/wwAOmrS4CpuuA5OTkOOFGF/HS2oJ9Pfroo87q1avNz/rdTxev0zUetPYOHTqYBdDS09OdcHT48GGzvssVV1xhFm/TunSBM9uPuxo0aJAzbNiwoL/TumfMmBH4/549e0zderxbtWpl1v3Yvn27E270OV187Y+vvvrK6devn1nzQ9f70fU/it9GtxdfE+aaa64xz5mbbrrJvCbCpW491+l+l/a695/3tH3hx+r48ePOU0895Vx11VXmsbrxxhudv/3tb044HvMlS5Y4ffr0MWuZ6WtfF+Ur/Dq27ZgXfq4XX6urMH3N6++LLwioa5v5Xx/6nlFQUOCcSx7959xFKwAAgNBiWAoAAFiFcAMAAKxCuAEAAFYh3AAAAKsQbgAAgFUINwAAwCqEGwAAYBXCDQAAsArhBgAAWIVwAwAArEK4AQAAYpP/B99OWNlCrUV2AAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Calcul de la partition de l'espace\n", - "hierarchical_cluster = AgglomerativeClustering(n_clusters=3, metric='euclidean', linkage='complete')\n", - "\n", - "labels = hierarchical_cluster.fit_predict(data) # type: ignore\n", - "print(labels)\n", - "\n", - "#Représentation Graphique\n", - "plt.scatter(x, y, c=labels, cmap='viridis')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "99bc3508", - "metadata": {}, - "source": [ - "## K-means: Cas pratique" - ] - }, - { - "cell_type": "markdown", - "id": "b2b035d2", - "metadata": {}, - "source": [ - "### Import des données" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "8051b5f4", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.microsoft.datawrangler.viewer.v0+json": { - "columns": [ - { - "name": "index", - "rawType": "int64", - "type": "integer" - }, - { - "name": "ZONE_RISQUE", - "rawType": "object", - "type": "string" - }, - { - "name": "NB", - "rawType": "int64", - "type": "integer" - }, - { - "name": "CHARGE", - "rawType": "float64", - "type": "float" - }, - { - "name": "EXPO", - "rawType": "float64", - "type": "float" - }, - { - "name": "FREQ", - "rawType": "float64", - "type": "float" - }, - { - "name": "CM", - "rawType": "float64", - "type": "float" - }, - { - "name": "FREQxCHARGE", - "rawType": "float64", - "type": "float" - } - ], - "ref": "96564cd0-30e4-4347-a31a-4e7519cd4c0b", - "rows": [ - [ - "0", - "A", - "236", - "1174911.57", - "986430.8907103825", - "0.00023924636000606546", - "4978.438855932203", - "281.0933164515116" - ], - [ - "1", - "B", - "181", - "1146823.23", - "909243.3551912569", - "0.00019906661837735087", - "6336.039944751381", - "228.2942222726909" - ], - [ - "2", - "C", - "284", - "1926300.0", - "1356654.5300546447", - "0.00020933848205892237", - "6782.7464788732395", - "403.24871799010214" - ], - [ - "3", - "D", - "83", - "455800.64", - "314767.9918032787", - "0.00026368627738957876", - "5491.573975903615", - "120.18837399338753" - ], - [ - "4", - "E", - "20", - "181747.82", - "137874.1612021858", - "0.00014505981269884912", - "9087.391", - "26.364304727624145" - ], - [ - "5", - "F", - "1", - "19418.42", - "12129.715846994535", - "8.244216209300377e-05", - "19418.42", - "1.6008965292300261" - ], - [ - "6", - "G", - "5", - "29820.87", - "26935.5", - "0.000185628631360101", - "5964.174", - "5.535607284067495" - ], - [ - "7", - "H", - "14", - "86476.9", - "46174.15300546448", - "0.00030319993088651065", - "6176.921428571428", - "26.219790103279692" - ], - [ - "8", - "I", - "4", - "32686.63", - "13981.37431693989", - "0.0002860949080773543", - "8171.6575", - "9.351478405208491" - ], - [ - "9", - "J", - "12", - "75580.99", - "28698.71857923497", - "0.00041813713622330966", - "6298.4158333333335", - "31.603218711522608" - ], - [ - "10", - "K", - "17", - "87411.64", - "72896.8743169399", - "0.00023320615814181092", - "5141.861176470588", - "20.384932741275044" - ], - [ - "11", - "L", - "7", - "22684.079999999998", - "24877.61202185792", - "0.0002813774888783406", - "3240.582857142857", - "6.382789467915388" - ], - [ - "12", - "M", - "1", - "6352.66", - "1010.7759562841533", - "0.0009893389269727308", - "6352.66", - "6.284933827822588" - ], - [ - "13", - "R", - "0", - "0.0", - "729.1994535519125", - "0.0", - "0.0", - "0.0" - ], - [ - "14", - "S", - "0", - "0.0", - "1783.620218579235", - "0.0", - "0.0", - "0.0" - ], - [ - "15", - "T", - "1", - "3053.17", - "3044.155737704918", - "0.00032849830500259836", - "3053.17", - "1.0029611698847833" - ], - [ - "16", - "X", - "0", - "0.0", - "1627.1803278688521", - "0.0", - "0.0", - "0.0" - ] - ], - "shape": { - "columns": 7, - "rows": 17 - } - }, - "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", - " \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", - "
ZONE_RISQUENBCHARGEEXPOFREQCMFREQxCHARGE
0A2361174911.579.864309e+050.0002394978.438856281.093316
1B1811146823.239.092434e+050.0001996336.039945228.294222
2C2841926300.001.356655e+060.0002096782.746479403.248718
3D83455800.643.147680e+050.0002645491.573976120.188374
4E20181747.821.378742e+050.0001459087.39100026.364305
5F119418.421.212972e+040.00008219418.4200001.600897
6G529820.872.693550e+040.0001865964.1740005.535607
7H1486476.904.617415e+040.0003036176.92142926.219790
8I432686.631.398137e+040.0002868171.6575009.351478
9J1275580.992.869872e+040.0004186298.41583331.603219
10K1787411.647.289687e+040.0002335141.86117620.384933
11L722684.082.487761e+040.0002813240.5828576.382789
12M16352.661.010776e+030.0009896352.6600006.284934
13R00.007.291995e+020.0000000.0000000.000000
14S00.001.783620e+030.0000000.0000000.000000
15T13053.173.044156e+030.0003283053.1700001.002961
16X00.001.627180e+030.0000000.0000000.000000
\n", - "
" - ], - "text/plain": [ - " ZONE_RISQUE NB CHARGE EXPO FREQ CM \\\n", - "0 A 236 1174911.57 9.864309e+05 0.000239 4978.438856 \n", - "1 B 181 1146823.23 9.092434e+05 0.000199 6336.039945 \n", - "2 C 284 1926300.00 1.356655e+06 0.000209 6782.746479 \n", - "3 D 83 455800.64 3.147680e+05 0.000264 5491.573976 \n", - "4 E 20 181747.82 1.378742e+05 0.000145 9087.391000 \n", - "5 F 1 19418.42 1.212972e+04 0.000082 19418.420000 \n", - "6 G 5 29820.87 2.693550e+04 0.000186 5964.174000 \n", - "7 H 14 86476.90 4.617415e+04 0.000303 6176.921429 \n", - "8 I 4 32686.63 1.398137e+04 0.000286 8171.657500 \n", - "9 J 12 75580.99 2.869872e+04 0.000418 6298.415833 \n", - "10 K 17 87411.64 7.289687e+04 0.000233 5141.861176 \n", - "11 L 7 22684.08 2.487761e+04 0.000281 3240.582857 \n", - "12 M 1 6352.66 1.010776e+03 0.000989 6352.660000 \n", - "13 R 0 0.00 7.291995e+02 0.000000 0.000000 \n", - "14 S 0 0.00 1.783620e+03 0.000000 0.000000 \n", - "15 T 1 3053.17 3.044156e+03 0.000328 3053.170000 \n", - "16 X 0 0.00 1.627180e+03 0.000000 0.000000 \n", - "\n", - " FREQxCHARGE \n", - "0 281.093316 \n", - "1 228.294222 \n", - "2 403.248718 \n", - "3 120.188374 \n", - "4 26.364305 \n", - "5 1.600897 \n", - "6 5.535607 \n", - "7 26.219790 \n", - "8 9.351478 \n", - "9 31.603219 \n", - "10 20.384933 \n", - "11 6.382789 \n", - "12 6.284934 \n", - "13 0.000000 \n", - "14 0.000000 \n", - "15 1.002961 \n", - "16 0.000000 " - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "path = input_path + '/base_retraitee.csv'\n", - "data_retraitee = pd.read_csv(path, sep=\",\", decimal=\".\")\n", - "\n", - "# Group by ZONE_RISQUE and aggregate the necessary columns\n", - "data = data_retraitee.groupby([\"ZONE_RISQUE\"], as_index=False).agg({\n", - " 'NB': 'sum',\n", - " 'CHARGE': 'sum',\n", - " 'EXPO': 'sum'\n", - "})\n", - "\n", - "# Calculate derived metrics\n", - "data[\"FREQ\"] = data[\"NB\"] / data[\"EXPO\"]\n", - "data[\"FREQ\"] = data[\"FREQ\"].fillna(0)\n", - "\n", - "data[\"CM\"] = data[\"CHARGE\"] / data[\"NB\"]\n", - "data[\"CM\"] = data[\"CM\"].fillna(0)\n", - "\n", - "data[\"FREQxCHARGE\"] = data[\"FREQ\"] * data[\"CHARGE\"]\n", - "data[\"FREQxCHARGE\"] = data[\"FREQxCHARGE\"].fillna(0)\n", - "\n", - "data" - ] - }, - { - "cell_type": "markdown", - "id": "aeff9cff", - "metadata": {}, - "source": [ - "**Exercice :** Regrouper les zones géographiques en 5 zones homogènes en termes :\n", - "* Fréquence de sinistres (La fréquence est égale au Nombre de sinistres divisé par l'exposition)\n", - "* Charge \n", - "* Fréquence de sinistres x Charge \n", - " \n", - "A chaque fois :\n", - "* Afficher les coordonnées des centroïdes\n", - "* Représenter graphiquement la partition obtenue" - ] - }, - { - "cell_type": "markdown", - "id": "1c4333b8", - "metadata": {}, - "source": [ - "### Regroupement de zones selon la fréquence" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "6e35f286", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Coordonnées des centroïdes : \n", - "[[1.45059813e-04]\n", - " [2.06105405e-05]\n", - " [9.89338927e-04]\n", - " [3.13499008e-04]\n", - " [2.13297250e-04]]\n", - "Nombre d'itérations réalisées : \n", - "3\n", - "Partition : \n", - "[4 4 4 3 0 1 4 3 3 3 4 3 2 1 1 3 1]\n" - ] - } - ], - "source": [ - "# Initialisation de l'algorithme\n", - "kmeans_FREQ = KMeans(init='random', n_clusters=5, n_init=1, random_state=42, max_iter=300)\n", - "\n", - "# Transformation des données : plusieurs échantillons de 1 dimension\n", - "data_freq = data[\"FREQ\"].to_numpy()\n", - "data_freq = data_freq.reshape(-1, 1)\n", - "\n", - "# Fitting\n", - "kmeans_FREQ.fit(data_freq)\n", - "\n", - "# Centroïdes\n", - "print(\"Coordonnées des centroïdes : \")\n", - "print(kmeans_FREQ.cluster_centers_)\n", - "# Itérations nécessaire pour la résolution\n", - "print(\"Nombre d'itérations réalisées : \")\n", - "print(kmeans_FREQ.n_iter_)\n", - "# Classes\n", - "print(\"Partition : \")\n", - "print(kmeans_FREQ.labels_)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "277e3d46", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "Cluster_FREQ=4
FREQ=%{x}
Y=%{y}", - "legendgroup": "4", - "marker": { - "color": "#636efa", - "symbol": "circle" - }, - "mode": "markers", - "name": "4", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "DKJ1lcZbLz+MRDc7kRcqP8dbVN47cCs/rNRBzalUKD/efhelGZEuPw==", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AAAAAAA=", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ=3
FREQ=%{x}
Y=%{y}", - "legendgroup": "3", - "marker": { - "color": "#EF553B", - "symbol": "circle" - }, - "mode": "markers", - "name": "3", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "uSYT8OtHMT/+84zJ2d4zP04cFEbgvzI/BVFIUy1nOz8N79Acu3AyP6oYDnpJhzU/", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AAAAAAAA", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ=0
FREQ=%{x}
Y=%{y}", - "legendgroup": "0", - "marker": { - "color": "#00cc96", - "symbol": "circle" - }, - "mode": "markers", - "name": "0", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "ER+STWYDIz8=", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AA==", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ=1
FREQ=%{x}
Y=%{y}", - "legendgroup": "1", - "marker": { - "color": "#ab63fa", - "symbol": "circle" - }, - "mode": "markers", - "name": "1", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "3mpcj5mcFT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AAAAAA==", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ=2
FREQ=%{x}
Y=%{y}", - "legendgroup": "2", - "marker": { - "color": "#FFA15A", - "symbol": "circle" - }, - "mode": "markers", - "name": "2", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "ESaBlZY1UD8=", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AA==", - "dtype": "i1" - }, - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "Cluster_FREQ" - }, - "tracegroupgap": 0 - }, - "margin": { - "t": 60 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermap" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "FREQ" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Y" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Visualisation\n", - "data[\"Cluster_FREQ\"] = kmeans_FREQ.labels_\n", - "data[\"Cluster_FREQ\"] = data[\"Cluster_FREQ\"].astype(str)\n", - "data[\"Y\"] = 0\n", - "\n", - "fig = px.scatter(data, x=\"FREQ\", y=\"Y\", color=\"Cluster_FREQ\")\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "id": "9c738659", - "metadata": {}, - "source": [ - "### Regroupement de zones selon le coût moyen" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "f461bfb8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Coordonnées des centroïdes : \n", - "[[ 5946.98129932]\n", - " [ 0. ]\n", - " [ 8629.52425 ]\n", - " [ 3146.87642857]\n", - " [19418.42 ]]\n", - "Nombre d'itérations réalisées : \n", - "6\n", - "Partition : \n", - "[0 0 0 0 2 4 0 0 2 0 0 3 0 1 1 3 1]\n" - ] - } - ], - "source": [ - "# Initialisation de l'algorithme\n", - "kmeans_CM = KMeans(init='random', n_clusters=5, n_init=1, random_state=42)\n", - "\n", - "# Transformation des données : plusieurs échantillons de 1 dimension\n", - "data_cm = data['CM'].to_numpy()\n", - "data_cm = data_cm.reshape(-1,1)\n", - "\n", - "# Fitting\n", - "kmeans_CM.fit(data_cm)\n", - "\n", - "# Centroïdes\n", - "print(\"Coordonnées des centroïdes : \")\n", - "print(kmeans_CM.cluster_centers_)\n", - "# Itérations nécessaire pour la résolution\n", - "print(\"Nombre d'itérations réalisées : \")\n", - "print(kmeans_CM.n_iter_)\n", - "# Classes\n", - "print(\"Partition : \")\n", - "print(kmeans_CM.labels_)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "98b2a0bf", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "Cluster_CM=0
FREQ=%{x}
Y=%{y}", - "legendgroup": "0", - "marker": { - "color": "#636efa", - "symbol": "circle" - }, - "mode": "markers", - "name": "0", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "DKJ1lcZbLz+MRDc7kRcqP8dbVN47cCs/uSYT8OtHMT+s1EHNqVQoP/7zjMnZ3jM/BVFIUy1nOz/efhelGZEuPxEmgZWWNVA/", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AAAAAAAAAAAA", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_CM=2
FREQ=%{x}
Y=%{y}", - "legendgroup": "2", - "marker": { - "color": "#EF553B", - "symbol": "circle" - }, - "mode": "markers", - "name": "2", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "ER+STWYDIz9OHBRG4L8yPw==", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AAA=", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_CM=4
FREQ=%{x}
Y=%{y}", - "legendgroup": "4", - "marker": { - "color": "#00cc96", - "symbol": "circle" - }, - "mode": "markers", - "name": "4", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "3mpcj5mcFT8=", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AA==", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_CM=3
FREQ=%{x}
Y=%{y}", - "legendgroup": "3", - "marker": { - "color": "#ab63fa", - "symbol": "circle" - }, - "mode": "markers", - "name": "3", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "De/QHLtwMj+qGA56SYc1Pw==", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AAA=", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_CM=1
FREQ=%{x}
Y=%{y}", - "legendgroup": "1", - "marker": { - "color": "#FFA15A", - "symbol": "circle" - }, - "mode": "markers", - "name": "1", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AAAA", - "dtype": "i1" - }, - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "Cluster_CM" - }, - "tracegroupgap": 0 - }, - "margin": { - "t": 60 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermap" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "FREQ" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Y" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Visualisation\n", - "data[\"Cluster_CM\"] = kmeans_CM.labels_\n", - "data[\"Cluster_CM\"] = data[\"Cluster_CM\"].astype(str)\n", - "data[\"Y\"] = 0\n", - "\n", - "fig = px.scatter(data, x=\"FREQ\", y=\"Y\", color=\"Cluster_CM\")\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "id": "6b154f4a", - "metadata": {}, - "source": [ - "### Regroupement de zones selon (fréquence; le coût moyen)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "1d89f70e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Coordonnées des centroïdes : \n", - "[[ 6.88870225]\n", - " [ 0.52077154]\n", - " [ 26.14306157]\n", - " [120.18837399]\n", - " [304.21208557]]\n", - "Nombre d'itérations réalisées : \n", - "4\n", - "Partition : \n", - "[4 4 4 3 2 1 0 2 0 2 2 0 0 1 1 1 1]\n" - ] - } - ], - "source": [ - "# Initialisation de l'algorithme\n", - "kmeans_FREQ_CM = KMeans(init='random', n_clusters=5, n_init=1, random_state=42, max_iter=300)\n", - "\n", - "# Transformation des données : plusieurs échantillons de 1 dimension\n", - "data_x = data['FREQxCHARGE'].to_numpy()\n", - "data_x = data_x.reshape(-1,1)\n", - "\n", - "# Fitting\n", - "kmeans_FREQ_CM.fit(data_x)\n", - "\n", - "# Centroïdes\n", - "print(\"Coordonnées des centroïdes : \")\n", - "print(kmeans_FREQ_CM.cluster_centers_)\n", - "# Itérations nécessaire pour la résolution\n", - "print(\"Nombre d'itérations réalisées : \")\n", - "print(kmeans_FREQ_CM.n_iter_)\n", - "# Classes\n", - "print(\"Partition : \")\n", - "print(kmeans_FREQ_CM.labels_)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "48aa493b", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "Cluster_FREQ_CM=4
FREQ=%{x}
CHARGE=%{y}", - "legendgroup": "4", - "marker": { - "color": "#636efa", - "symbol": "circle" - }, - "mode": "markers", - "name": "4", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "DKJ1lcZbLz+MRDc7kRcqP8dbVN47cCs/", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "H4XrkX/tMUGuR+E6x38xQQAAAACcZD1B", - "dtype": "f8" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ_CM=3
FREQ=%{x}
CHARGE=%{y}", - "legendgroup": "3", - "marker": { - "color": "#EF553B", - "symbol": "circle" - }, - "mode": "markers", - "name": "3", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "uSYT8OtHMT8=", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "9ihcj+LRG0E=", - "dtype": "f8" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ_CM=2
FREQ=%{x}
CHARGE=%{y}", - "legendgroup": "2", - "marker": { - "color": "#00cc96", - "symbol": "circle" - }, - "mode": "markers", - "name": "2", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "ER+STWYDIz/+84zJ2d4zPwVRSFMtZzs/3n4XpRmRLj8=", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "9ihcj54vBkFmZmZmzhz1QHE9CtfPc/JA16NwPTpX9UA=", - "dtype": "f8" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ_CM=1
FREQ=%{x}
CHARGE=%{y}", - "legendgroup": "1", - "marker": { - "color": "#ab63fa", - "symbol": "circle" - }, - "mode": "markers", - "name": "1", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "3mpcj5mcFT8AAAAAAAAAAAAAAAAAAAAAqhgOekmHNT8AAAAAAAAAAA==", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "FK5H4Zr20kAAAAAAAAAAAAAAAAAAAAAApHA9Clfap0AAAAAAAAAAAA==", - "dtype": "f8" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ_CM=0
FREQ=%{x}
CHARGE=%{y}", - "legendgroup": "0", - "marker": { - "color": "#FFA15A", - "symbol": "circle" - }, - "mode": "markers", - "name": "0", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "rNRBzalUKD9OHBRG4L8yPw3v0By7cDI/ESaBlZY1UD8=", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "4XoUrjcf3UAfhetRqOvfQOtRuB4FJ9ZAXI/C9ajQuEA=", - "dtype": "f8" - }, - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "Cluster_FREQ_CM" - }, - "tracegroupgap": 0 - }, - "margin": { - "t": 60 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermap" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "FREQ" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "CHARGE" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Visualisation\n", - "data[\"Cluster_FREQ_CM\"] = kmeans_FREQ_CM.labels_\n", - "data[\"Cluster_FREQ_CM\"] = data[\"Cluster_FREQ_CM\"].astype(str)\n", - "\n", - "fig = px.scatter(data, x=\"FREQ\", y=\"CHARGE\", color=\"Cluster_FREQ_CM\")\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "id": "f1cac03f", - "metadata": {}, - "source": [ - "## C.A.H : Cas pratique" - ] - }, - { - "cell_type": "markdown", - "id": "bffff328", - "metadata": {}, - "source": [ - "**Exercice :** Comparer les résultats obtenus via K-means à ceux d'une C.A.H (lien simple) pour la fréquence et (fréquence; coût moyen)\n", - " \n", - "A chaque fois :\n", - "* Tracer le dendrogramme associé\n", - "* Représenter graphiquement la partition obtenue" - ] - }, - { - "cell_type": "markdown", - "id": "8453bf02", - "metadata": {}, - "source": [ - "### Regroupement de zones selon la fréquence" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "341bf2b2", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Calcul de CAH avec lien simple\n", - "data_x = data['FREQ'].to_numpy()\n", - "data_x = data_x.reshape(-1,1)\n", - "\n", - "linkage_data = linkage(data_x, method='single', metric='euclidean')\n", - "dendrogram(linkage_data, labels=np.array(data['ZONE_RISQUE']))\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "1f0c9650", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " ZONE_RISQUE Cluster\n", - "0 A 0\n", - "1 B 0\n", - "2 C 0\n", - "3 D 0\n", - "4 E 0\n", - "5 F 4\n", - "6 G 0\n", - "7 H 0\n", - "8 I 0\n", - "9 J 2\n", - "10 K 0\n", - "11 L 0\n", - "12 M 3\n", - "13 R 1\n", - "14 S 1\n", - "15 T 0\n", - "16 X 1\n" - ] - } - ], - "source": [ - "# Calcul de la partition de l'espace\n", - "hierarchical_cluster = AgglomerativeClustering(\n", - " n_clusters=5, metric=\"euclidean\", linkage=\"single\"\n", - ")\n", - "\n", - "labels = hierarchical_cluster.fit_predict(data_x) # type: ignore\n", - "print(pd.DataFrame({\"ZONE_RISQUE\": data['ZONE_RISQUE'], \"Cluster\": labels}))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "3d77b67c", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "Cluster_FREQ=0
FREQ=%{x}
Y=%{y}", - "legendgroup": "0", - "marker": { - "color": "#636efa", - "symbol": "circle" - }, - "mode": "markers", - "name": "0", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "DKJ1lcZbLz+MRDc7kRcqP8dbVN47cCs/uSYT8OtHMT8RH5JNZgMjP6zUQc2pVCg//vOMydneMz9OHBRG4L8yP95+F6UZkS4/De/QHLtwMj+qGA56SYc1Pw==", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AAAAAAAAAAAAAAA=", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ=4
FREQ=%{x}
Y=%{y}", - "legendgroup": "4", - "marker": { - "color": "#EF553B", - "symbol": "circle" - }, - "mode": "markers", - "name": "4", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "3mpcj5mcFT8=", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AA==", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ=2
FREQ=%{x}
Y=%{y}", - "legendgroup": "2", - "marker": { - "color": "#00cc96", - "symbol": "circle" - }, - "mode": "markers", - "name": "2", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "BVFIUy1nOz8=", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AA==", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ=3
FREQ=%{x}
Y=%{y}", - "legendgroup": "3", - "marker": { - "color": "#ab63fa", - "symbol": "circle" - }, - "mode": "markers", - "name": "3", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "ESaBlZY1UD8=", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AA==", - "dtype": "i1" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ=1
FREQ=%{x}
Y=%{y}", - "legendgroup": "1", - "marker": { - "color": "#FFA15A", - "symbol": "circle" - }, - "mode": "markers", - "name": "1", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AAAA", - "dtype": "i1" - }, - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "Cluster_FREQ" - }, - "tracegroupgap": 0 - }, - "margin": { - "t": 60 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermap" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "FREQ" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Y" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Visualisation\n", - "data[\"Cluster_FREQ\"] = labels\n", - "data[\"Cluster_FREQ\"] = data[\"Cluster_FREQ\"].astype(str)\n", - "data[\"Y\"] = 0\n", - "\n", - "fig = px.scatter(data, x=\"FREQ\", y=\"Y\", color=\"Cluster_FREQ\")\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "id": "6ace7bc5", - "metadata": {}, - "source": [ - "### Regroupement de zones selon (fréquence; le coût moyen)" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "16103b5b", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Calcul de CAH avec lien simple\n", - "data_x = data[[\"FREQ\", \"CM\"]].to_numpy()\n", - "data_x = data_x.reshape(-1, 2)\n", - "\n", - "linkage_data = linkage(data_x, method=\"single\", metric=\"euclidean\")\n", - "dendrogram(linkage_data, labels=np.array(data[\"ZONE_RISQUE\"]))\n", - "\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "67bf3800", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " ZONE_RISQUE Cluster\n", - "0 A 1\n", - "1 B 1\n", - "2 C 1\n", - "3 D 1\n", - "4 E 0\n", - "5 F 3\n", - "6 G 1\n", - "7 H 1\n", - "8 I 0\n", - "9 J 1\n", - "10 K 1\n", - "11 L 4\n", - "12 M 1\n", - "13 R 2\n", - "14 S 2\n", - "15 T 4\n", - "16 X 2\n" - ] - } - ], - "source": [ - "# Calcul de la partition de l'espace\n", - "hierarchical_cluster = AgglomerativeClustering(\n", - " n_clusters=5, metric=\"euclidean\", linkage=\"single\"\n", - ")\n", - "\n", - "labels = hierarchical_cluster.fit_predict(data_x) # type: ignore\n", - "print(pd.DataFrame({\"ZONE_RISQUE\": data[\"ZONE_RISQUE\"], \"Cluster\": labels}))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0efdf7c1", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "Cluster_FREQ_CHARGE=1
FREQ=%{x}
CHARGE=%{y}", - "legendgroup": "1", - "marker": { - "color": "#636efa", - "symbol": "circle" - }, - "mode": "markers", - "name": "1", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "DKJ1lcZbLz+MRDc7kRcqP8dbVN47cCs/uSYT8OtHMT+s1EHNqVQoP/7zjMnZ3jM/BVFIUy1nOz/efhelGZEuPxEmgZWWNVA/", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "H4XrkX/tMUGuR+E6x38xQQAAAACcZD1B9ihcj+LRG0HhehSuNx/dQGZmZmbOHPVAcT0K189z8kDXo3A9Olf1QFyPwvWo0LhA", - "dtype": "f8" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ_CHARGE=0
FREQ=%{x}
CHARGE=%{y}", - "legendgroup": "0", - "marker": { - "color": "#EF553B", - "symbol": "circle" - }, - "mode": "markers", - "name": "0", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "ER+STWYDIz9OHBRG4L8yPw==", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "9ihcj54vBkEfhetRqOvfQA==", - "dtype": "f8" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ_CHARGE=3
FREQ=%{x}
CHARGE=%{y}", - "legendgroup": "3", - "marker": { - "color": "#00cc96", - "symbol": "circle" - }, - "mode": "markers", - "name": "3", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "3mpcj5mcFT8=", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "FK5H4Zr20kA=", - "dtype": "f8" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ_CHARGE=4
FREQ=%{x}
CHARGE=%{y}", - "legendgroup": "4", - "marker": { - "color": "#ab63fa", - "symbol": "circle" - }, - "mode": "markers", - "name": "4", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "De/QHLtwMj+qGA56SYc1Pw==", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "61G4HgUn1kCkcD0KV9qnQA==", - "dtype": "f8" - }, - "yaxis": "y" - }, - { - "hovertemplate": "Cluster_FREQ_CHARGE=2
FREQ=%{x}
CHARGE=%{y}", - "legendgroup": "2", - "marker": { - "color": "#FFA15A", - "symbol": "circle" - }, - "mode": "markers", - "name": "2", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": { - "bdata": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "dtype": "f8" - }, - "xaxis": "x", - "y": { - "bdata": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "dtype": "f8" - }, - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "Cluster_FREQ_CHARGE" - }, - "tracegroupgap": 0 - }, - "margin": { - "t": 60 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermap" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "FREQ" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "CHARGE" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Visualisation\n", - "data[\"Cluster_FREQ_CHARGE\"] = labels\n", - "data[\"Cluster_FREQ_CHARGE\"] = data[\"Cluster_FREQ_CHARGE\"].astype(str)\n", - "\n", - "fig = px.scatter(data, x=\"FREQ\", y=\"CHARGE\", color=\"Cluster_FREQ_CHARGE\")\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "id": "12961201", - "metadata": {}, - "source": [ - "## Application : création de Model Points (K-means)" - ] - }, - { - "cell_type": "markdown", - "id": "6567c970", - "metadata": {}, - "source": [ - "Dans certains cas, il se peut que la modélisation ligne par ligne ne soit pas adaptée. C'est le cas des produits collectifs en assurance ou lorsque le nombre d'individus est trop important. \n", - "Dans ce cas de figure, il est nécessaire d'agréger l'information afin d'avoir des \"individus type\". Chacun de ces individus est appelé *Model Point*. \n", - "L'algorithme des k-means peut s'avérer utile pour le regroupement d'individus sous forme de *Mode Points* lorsque les variables explicatives sont numériques. \n", - " \n", - "Afin d'illustre ce propos, nous agrègerons la base de données selon les variables ANNEE_CTR, AGE_ASSURE_PRINCIPAL, ANCIENNETE_PERMIS et ANNEE_CONSTRUCTION afin de créer 100 Model Points. " - ] - }, - { - "cell_type": "markdown", - "id": "a250bff9", - "metadata": {}, - "source": [ - "**Exercice :** Construire la nouvelle base de modélisation (les nouveaux individus deviennent les Model Points et chacune de modalités devient le centroïde de la classe)." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "5b42c2b5", - "metadata": {}, - "outputs": [], - "source": [ - "# Sélection des variables\n", - "data_source_MP = data_retraitee[\n", - " [\n", - " \"ANNEE_CTR\",\n", - " \"AGE_ASSURE_PRINCIPAL\",\n", - " \"ANCIENNETE_PERMIS\",\n", - " \"ANNEE_CONSTRUCTION\",\n", - " \"NB\",\n", - " \"EXPO\",\n", - " \"CHARGE\",\n", - " ]\n", - "]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "0777373f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Nombre d'itérations réalisées : \n", - "41\n" - ] - } - ], - "source": [ - "# Agrégation sous forme de MP\n", - "# Itinitialisation\n", - "kmeans = KMeans(n_clusters=100, max_iter=500)\n", - "\n", - "# Sélection des données\n", - "data_x = data_source_MP[\n", - " [\"ANNEE_CTR\", \"AGE_ASSURE_PRINCIPAL\", \"ANCIENNETE_PERMIS\", \"ANNEE_CONSTRUCTION\"]\n", - "]\n", - "# Fitting\n", - "kmeans.fit(data_x)\n", - "\n", - "# Centroïdes\n", - "print(\"Nombre d'itérations réalisées : \")\n", - "print(kmeans.n_iter_)" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "5fd7d737", - "metadata": {}, - "outputs": [], - "source": [ - "# Construction de la nouvelle base de modélisation\n", - "\n", - "# Nouvelles variables explicatives\n", - "base_MP = pd.DataFrame(\n", - " kmeans.cluster_centers_,\n", - " columns=[\n", - " \"ANNEE_CTR\",\n", - " \"AGE_ASSURE_PRINCIPAL\",\n", - " \"ANCIENNETE_PERMIS\",\n", - " \"ANNEE_CONSTRUCTION\",\n", - " ],\n", - ")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "39e674dd", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/tp/_ld5_pzs6nx6mv1pbjhq1l740000gn/T/ipykernel_60807/1945959780.py:2: SettingWithCopyWarning:\n", - "\n", - "\n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - "\n" - ] - } - ], - "source": [ - "# Ajout du nombre de sinistres, exposition et CHARGE par classe\n", - "data_source_MP[\"Cluster\"] = kmeans.labels_\n", - "data_sinistralite_MP = data_source_MP[[\"Cluster\", \"NB\", \"EXPO\", \"CHARGE\"]]\n", - "\n", - "data_sinistralite_MP = data_sinistralite_MP.groupby([\"Cluster\"], as_index=False).sum()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "8115717e", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.microsoft.datawrangler.viewer.v0+json": { - "columns": [ - { - "name": "index", - "rawType": "int64", - "type": "integer" - }, - { - "name": "Cluster", - "rawType": "int32", - "type": "integer" - }, - { - "name": "ANNEE_CTR", - "rawType": "float64", - "type": "float" - }, - { - "name": "AGE_ASSURE_PRINCIPAL", - "rawType": "float64", - "type": "float" - }, - { - "name": "ANCIENNETE_PERMIS", - "rawType": "float64", - "type": "float" - }, - { - "name": "ANNEE_CONSTRUCTION", - "rawType": "float64", - "type": "float" - }, - { - "name": "NB", - "rawType": "int64", - "type": "integer" - }, - { - "name": "EXPO", - "rawType": "float64", - "type": "float" - }, - { - "name": "CHARGE", - "rawType": "float64", - "type": "float" - } - ], - "ref": "7165b46e-7eb6-49d2-a196-5f1042af8126", - "rows": [ - [ - "0", - "0", - "2019.307392996109", - "26.02334630350193", - "13.019455252918299", - "2017.307392996109", - "14", - "70582.72677595628", - "76623.37" - ], - [ - "1", - "1", - "2019.185628742515", - "56.634730538922156", - "34.64071856287425", - "2017.3233532934132", - "13", - "48258.04644808743", - "94446.05" - ], - [ - "2", - "2", - "2019.251282051282", - "45.44615384615385", - "63.061538461538476", - "2017.2205128205128", - "18", - "52378.40983606557", - "180511.41" - ], - [ - "3", - "3", - "2019.4968944099378", - "43.17391304347826", - "27.515527950310556", - "2017.2422360248447", - "8", - "43450.14480874316", - "70994.73999999999" - ], - [ - "4", - "4", - "2018.0091743119267", - "63.30275229357798", - "48.211009174311926", - "2014.4587155963302", - "3", - "31148.94262295082", - "14771.7" - ] - ], - "shape": { - "columns": 8, - "rows": 5 - } - }, - "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", - "
ClusterANNEE_CTRAGE_ASSURE_PRINCIPALANCIENNETE_PERMISANNEE_CONSTRUCTIONNBEXPOCHARGE
002019.30739326.02334613.0194552017.3073931470582.72677676623.37
112019.18562956.63473134.6407192017.3233531348258.04644894446.05
222019.25128245.44615463.0615382017.2205131852378.409836180511.41
332019.49689443.17391327.5155282017.242236843450.14480970994.74
442018.00917463.30275248.2110092014.458716331148.94262314771.70
\n", - "
" - ], - "text/plain": [ - " Cluster ANNEE_CTR AGE_ASSURE_PRINCIPAL ANCIENNETE_PERMIS \\\n", - "0 0 2019.307393 26.023346 13.019455 \n", - "1 1 2019.185629 56.634731 34.640719 \n", - "2 2 2019.251282 45.446154 63.061538 \n", - "3 3 2019.496894 43.173913 27.515528 \n", - "4 4 2018.009174 63.302752 48.211009 \n", - "\n", - " ANNEE_CONSTRUCTION NB EXPO CHARGE \n", - "0 2017.307393 14 70582.726776 76623.37 \n", - "1 2017.323353 13 48258.046448 94446.05 \n", - "2 2017.220513 18 52378.409836 180511.41 \n", - "3 2017.242236 8 43450.144809 70994.74 \n", - "4 2014.458716 3 31148.942623 14771.70 " - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Joiture des tables\n", - "base_MP = base_MP.merge(data_sinistralite_MP, left_index=True, right_on=\"Cluster\")\n", - "\n", - "base_MP = base_MP.iloc[:, [4, 0, 1, 2, 3, 5, 6, 7]]\n", - "base_MP.head()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b99a8316", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "studies", - "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.13.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/M2/Machine Learning/TP_3/2025_TP_3_M2_ISF.ipynb b/M2/Machine Learning/TP_3/2025_TP_3_M2_ISF.ipynb index c81c357..e1345ff 100644 --- a/M2/Machine Learning/TP_3/2025_TP_3_M2_ISF.ipynb +++ b/M2/Machine Learning/TP_3/2025_TP_3_M2_ISF.ipynb @@ -1,3800 +1,3800 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "8750d15b", - "metadata": {}, - "source": [ - "# Cours 3 : Machine Learning - Algorithmes supervisés (1/2)" - ] - }, - { - "cell_type": "markdown", - "id": "f7c08ae5", - "metadata": {}, - "source": [ - "## Préambule" - ] - }, - { - "cell_type": "markdown", - "id": "ec7ecb4b", - "metadata": {}, - "source": [ - "Les objectifs de cette séance (3h) sont :\n", - "* Préparation des bases de modélisation (sampling)\n", - "* Mettre en application un modèle supervisé simple.\n", - "* Construire un modèle de Machine Learning (cross-validation et hyperparamétrage) pour résoudre un problème de régression\n", - "* Analyser les performances du modèle" - ] - }, - { - "cell_type": "markdown", - "id": "4e99c600", - "metadata": {}, - "source": [ - "## Préparation du workspace" - ] - }, - { - "cell_type": "markdown", - "id": "c1b01045", - "metadata": {}, - "source": [ - "### Import de librairies " - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "97d58527", - "metadata": {}, - "outputs": [], - "source": [ - "# Données\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "#Graphiques\n", - "import seaborn as sns\n", - "\n", - "sns.set()\n", - "import plotly.express as px\n", - "import plotly.graph_objects as gp\n", - "import sklearn.metrics as metrics\n", - "import sklearn.preprocessing as preproc\n", - "\n", - "#Statistiques\n", - "from scipy.stats import chi2_contingency\n", - "\n", - "# Machine Learning\n", - "from sklearn.cluster import KMeans\n", - "from sklearn.ensemble import RandomForestRegressor\n", - "from sklearn.model_selection import KFold, train_test_split\n", - "from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor\n" - ] - }, - { - "cell_type": "markdown", - "id": "06153286", - "metadata": {}, - "source": [ - "### Définition des fonctions " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c67db932", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "985e4e97", - "metadata": {}, - "source": [ - "### Constantes" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "c9597b48", - "metadata": {}, - "outputs": [], - "source": [ - "input_path = \"./1_inputs\"\n", - "output_path = \"./2_outputs\"" - ] - }, - { - "cell_type": "markdown", - "id": "b2b035d2", - "metadata": {}, - "source": [ - "### Import des données" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "8051b5f4", - "metadata": {}, - "outputs": [], - "source": [ - "path =input_path + '/base_retraitee.csv'\n", - "data_retraitee = pd.read_csv(path,sep=\",\",decimal=\".\")" - ] - }, - { - "cell_type": "markdown", - "id": "a2578ba1", - "metadata": {}, - "source": [ - "## Algorithme supervisé : CART " - ] - }, - { - "cell_type": "markdown", - "id": "aaa0b27d", - "metadata": {}, - "source": [ - "Dans cette partie l'objectif est de construire un modèle simple (algorithme CART) afin de voir les différentes étapes nécessaire au lancement d'un modèle\n", - "Nous modéliserons directement le coût des sinistres. " - ] - }, - { - "cell_type": "markdown", - "id": "a0458a05", - "metadata": {}, - "source": [ - "### Construction du modèle" - ] - }, - { - "cell_type": "markdown", - "id": "b3715c37", - "metadata": {}, - "source": [ - "La première étape est de calculer les côut moyen de chaque sinistre (target ou variable réponse). Cette variable sera la variable à prédire en fonction des variables explicatives." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "c427a4b8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(824, 14)" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_model = data_retraitee.copy()\n", - "\n", - "# Filtre pour ne garder que les lignes qui ont un sinistre (NB > 0)\n", - "data_model = data_model[data_model['NB'] > 0]\n", - "\n", - "# Calcul du cout moyen \"théorique\" des sinistres\n", - "data_model[\"CM\"] = (data_model[\"CHARGE\"] / data_model[\"NB\"])\n", - "data_model = data_model.drop(['CHARGE', 'NB', \"EXPO\"], axis=1)\n", - "data_model.shape" - ] - }, - { - "cell_type": "markdown", - "id": "e3e85088", - "metadata": {}, - "source": [ - "**Exercice :** construisez les statistiques descriptives de la base utilisée." - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "c8fd3ee1", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.microsoft.datawrangler.viewer.v0+json": { - "columns": [ + "cells": [ { - "name": "index", - "rawType": "object", - "type": "string" + "cell_type": "markdown", + "id": "8750d15b", + "metadata": {}, + "source": [ + "# Cours 3 : Machine Learning - Algorithmes supervisés (1/2)" + ] }, { - "name": "ANNEE_CTR", - "rawType": "float64", - "type": "float" + "cell_type": "markdown", + "id": "f7c08ae5", + "metadata": {}, + "source": [ + "## Préambule" + ] }, { - "name": "CONTRAT_ANCIENNETE", - "rawType": "object", - "type": "unknown" + "cell_type": "markdown", + "id": "ec7ecb4b", + "metadata": {}, + "source": [ + "Les objectifs de cette séance (3h) sont :\n", + "* Préparation des bases de modélisation (sampling)\n", + "* Mettre en application un modèle supervisé simple.\n", + "* Construire un modèle de Machine Learning (cross-validation et hyperparamétrage) pour résoudre un problème de régression\n", + "* Analyser les performances du modèle" + ] }, { - "name": "FREQUENCE_PAIEMENT_COTISATION", - "rawType": "object", - "type": "unknown" + "cell_type": "markdown", + "id": "4e99c600", + "metadata": {}, + "source": [ + "## Préparation du workspace" + ] }, { - "name": "GROUPE_KM", - "rawType": "object", - "type": "unknown" + "cell_type": "markdown", + "id": "c1b01045", + "metadata": {}, + "source": [ + "### Import de librairies " + ] }, { - "name": "ZONE_RISQUE", - "rawType": "object", - "type": "unknown" + "cell_type": "code", + "execution_count": 56, + "id": "97d58527", + "metadata": {}, + "outputs": [], + "source": [ + "# Données\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "#Graphiques\n", + "import seaborn as sns\n", + "\n", + "sns.set()\n", + "import plotly.express as px\n", + "import plotly.graph_objects as gp\n", + "import sklearn.metrics as metrics\n", + "import sklearn.preprocessing as preproc\n", + "\n", + "#Statistiques\n", + "from scipy.stats import chi2_contingency\n", + "\n", + "# Machine Learning\n", + "from sklearn.cluster import KMeans\n", + "from sklearn.ensemble import RandomForestRegressor\n", + "from sklearn.model_selection import KFold, train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor\n" + ] }, { - "name": "AGE_ASSURE_PRINCIPAL", - "rawType": "float64", - "type": "float" + "cell_type": "markdown", + "id": "06153286", + "metadata": {}, + "source": [ + "### Définition des fonctions " + ] }, { - "name": "GENRE", - "rawType": "object", - "type": "unknown" + "cell_type": "code", + "execution_count": null, + "id": "c67db932", + "metadata": {}, + "outputs": [], + "source": [] }, { - "name": "DEUXIEME_CONDUCTEUR", - "rawType": "object", - "type": "unknown" + "cell_type": "markdown", + "id": "985e4e97", + "metadata": {}, + "source": [ + "### Constantes" + ] }, { - "name": "ANCIENNETE_PERMIS", - "rawType": "float64", - "type": "float" + "cell_type": "code", + "execution_count": 57, + "id": "c9597b48", + "metadata": {}, + "outputs": [], + "source": [ + "input_path = \"./1_inputs\"\n", + "output_path = \"./2_outputs\"" + ] }, { - "name": "ANNEE_CONSTRUCTION", - "rawType": "float64", - "type": "float" + "cell_type": "markdown", + "id": "b2b035d2", + "metadata": {}, + "source": [ + "### Import des données" + ] }, { - "name": "ENERGIE", - "rawType": "object", - "type": "unknown" + "cell_type": "code", + "execution_count": 58, + "id": "8051b5f4", + "metadata": {}, + "outputs": [], + "source": [ + "path =input_path + '/base_retraitee.csv'\n", + "data_retraitee = pd.read_csv(path,sep=\",\",decimal=\".\")" + ] }, { - "name": "EQUIPEMENT_SECURITE", - "rawType": "object", - "type": "unknown" + "cell_type": "markdown", + "id": "a2578ba1", + "metadata": {}, + "source": [ + "## Algorithme supervisé : CART " + ] }, { - "name": "VALEUR_DU_BIEN", - "rawType": "object", - "type": "unknown" + "cell_type": "markdown", + "id": "aaa0b27d", + "metadata": {}, + "source": [ + "Dans cette partie l'objectif est de construire un modèle simple (algorithme CART) afin de voir les différentes étapes nécessaire au lancement d'un modèle\n", + "Nous modéliserons directement le coût des sinistres. " + ] }, { - "name": "CM", - "rawType": "float64", - "type": "float" + "cell_type": "markdown", + "id": "a0458a05", + "metadata": {}, + "source": [ + "### Construction du modèle" + ] + }, + { + "cell_type": "markdown", + "id": "b3715c37", + "metadata": {}, + "source": [ + "La première étape est de calculer les côut moyen de chaque sinistre (target ou variable réponse). Cette variable sera la variable à prédire en fonction des variables explicatives." + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "c427a4b8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(824, 14)" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_model = data_retraitee.copy()\n", + "\n", + "# Filtre pour ne garder que les lignes qui ont un sinistre (NB > 0)\n", + "data_model = data_model[data_model['NB'] > 0]\n", + "\n", + "# Calcul du cout moyen \"théorique\" des sinistres\n", + "data_model[\"CM\"] = (data_model[\"CHARGE\"] / data_model[\"NB\"])\n", + "data_model = data_model.drop(['CHARGE', 'NB', \"EXPO\"], axis=1)\n", + "data_model.shape" + ] + }, + { + "cell_type": "markdown", + "id": "e3e85088", + "metadata": {}, + "source": [ + "**Exercice :** construisez les statistiques descriptives de la base utilisée." + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "c8fd3ee1", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.microsoft.datawrangler.viewer.v0+json": { + "columns": [ + { + "name": "index", + "rawType": "object", + "type": "string" + }, + { + "name": "ANNEE_CTR", + "rawType": "float64", + "type": "float" + }, + { + "name": "CONTRAT_ANCIENNETE", + "rawType": "object", + "type": "unknown" + }, + { + "name": "FREQUENCE_PAIEMENT_COTISATION", + "rawType": "object", + "type": "unknown" + }, + { + "name": "GROUPE_KM", + "rawType": "object", + "type": "unknown" + }, + { + "name": "ZONE_RISQUE", + "rawType": "object", + "type": "unknown" + }, + { + "name": "AGE_ASSURE_PRINCIPAL", + "rawType": "float64", + "type": "float" + }, + { + "name": "GENRE", + "rawType": "object", + "type": "unknown" + }, + { + "name": "DEUXIEME_CONDUCTEUR", + "rawType": "object", + "type": "unknown" + }, + { + "name": "ANCIENNETE_PERMIS", + "rawType": "float64", + "type": "float" + }, + { + "name": "ANNEE_CONSTRUCTION", + "rawType": "float64", + "type": "float" + }, + { + "name": "ENERGIE", + "rawType": "object", + "type": "unknown" + }, + { + "name": "EQUIPEMENT_SECURITE", + "rawType": "object", + "type": "unknown" + }, + { + "name": "VALEUR_DU_BIEN", + "rawType": "object", + "type": "unknown" + }, + { + "name": "CM", + "rawType": "float64", + "type": "float" + } + ], + "ref": "8fcd0abc-8334-4a0d-96b7-b6d7e17b3fb7", + "rows": [ + [ + "count", + "824.0", + "824", + "824", + "824", + "824", + "824.0", + "824", + "824", + "824.0", + "824.0", + "824", + "824", + "824", + "824.0" + ], + [ + "unique", + null, + "5", + "3", + "4", + "14", + null, + "2", + "2", + null, + null, + "3", + "2", + "6", + null + ], + [ + "top", + null, + "(0,1]", + "MENSUEL", + "[0;20000[", + "C", + null, + "M", + "False", + null, + null, + "ESSENCE", + "FAUX", + "[10000;15000[", + null + ], + [ + "freq", + null, + "297", + "398", + "391", + "269", + null, + "483", + "663", + null, + null, + "413", + "517", + "213", + null + ], + [ + "mean", + "2018.384708737864", + null, + null, + null, + null, + "44.383495145631066", + null, + null, + "35.68810679611651", + "2015.2123786407767", + null, + null, + null, + "4246.01697815534" + ], + [ + "std", + "1.515832735580178", + null, + null, + null, + null, + "13.808216667998865", + null, + null, + "19.370620845496358", + "3.1637823115731556", + null, + null, + null, + "6869.61691660173" + ], + [ + "min", + "2016.0", + null, + null, + null, + null, + "19.0", + null, + null, + "1.0", + "1998.0", + null, + null, + null, + "7.5" + ], + [ + "25%", + "2017.0", + null, + null, + null, + null, + "34.0", + null, + null, + "18.0", + "2014.0", + null, + null, + null, + "1159.96125" + ], + [ + "50%", + "2018.0", + null, + null, + null, + null, + "43.0", + null, + null, + "35.0", + "2016.0", + null, + null, + null, + "2541.6499999999996" + ], + [ + "75%", + "2020.0", + null, + null, + null, + null, + "53.0", + null, + null, + "53.0", + "2017.0", + null, + null, + null, + "4193.797500000001" + ], + [ + "max", + "2021.0", + null, + null, + null, + null, + "94.0", + null, + null, + "70.0", + "2021.0", + null, + null, + null, + "83421.85" + ] + ], + "shape": { + "columns": 14, + "rows": 11 + } + }, + "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", + " \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", + "
ANNEE_CTRCONTRAT_ANCIENNETEFREQUENCE_PAIEMENT_COTISATIONGROUPE_KMZONE_RISQUEAGE_ASSURE_PRINCIPALGENREDEUXIEME_CONDUCTEURANCIENNETE_PERMISANNEE_CONSTRUCTIONENERGIEEQUIPEMENT_SECURITEVALEUR_DU_BIENCM
count824.000000824824824824824.000000824824824.000000824.000000824824824824.000000
uniqueNaN53414NaN22NaNNaN326NaN
topNaN(0,1]MENSUEL[0;20000[CNaNMFalseNaNNaNESSENCEFAUX[10000;15000[NaN
freqNaN297398391269NaN483663NaNNaN413517213NaN
mean2018.384709NaNNaNNaNNaN44.383495NaNNaN35.6881072015.212379NaNNaNNaN4246.016978
std1.515833NaNNaNNaNNaN13.808217NaNNaN19.3706213.163782NaNNaNNaN6869.616917
min2016.000000NaNNaNNaNNaN19.000000NaNNaN1.0000001998.000000NaNNaNNaN7.500000
25%2017.000000NaNNaNNaNNaN34.000000NaNNaN18.0000002014.000000NaNNaNNaN1159.961250
50%2018.000000NaNNaNNaNNaN43.000000NaNNaN35.0000002016.000000NaNNaNNaN2541.650000
75%2020.000000NaNNaNNaNNaN53.000000NaNNaN53.0000002017.000000NaNNaNNaN4193.797500
max2021.000000NaNNaNNaNNaN94.000000NaNNaN70.0000002021.000000NaNNaNNaN83421.850000
\n", + "
" + ], + "text/plain": [ + " ANNEE_CTR CONTRAT_ANCIENNETE FREQUENCE_PAIEMENT_COTISATION \\\n", + "count 824.000000 824 824 \n", + "unique NaN 5 3 \n", + "top NaN (0,1] MENSUEL \n", + "freq NaN 297 398 \n", + "mean 2018.384709 NaN NaN \n", + "std 1.515833 NaN NaN \n", + "min 2016.000000 NaN NaN \n", + "25% 2017.000000 NaN NaN \n", + "50% 2018.000000 NaN NaN \n", + "75% 2020.000000 NaN NaN \n", + "max 2021.000000 NaN NaN \n", + "\n", + " GROUPE_KM ZONE_RISQUE AGE_ASSURE_PRINCIPAL GENRE DEUXIEME_CONDUCTEUR \\\n", + "count 824 824 824.000000 824 824 \n", + "unique 4 14 NaN 2 2 \n", + "top [0;20000[ C NaN M False \n", + "freq 391 269 NaN 483 663 \n", + "mean NaN NaN 44.383495 NaN NaN \n", + "std NaN NaN 13.808217 NaN NaN \n", + "min NaN NaN 19.000000 NaN NaN \n", + "25% NaN NaN 34.000000 NaN NaN \n", + "50% NaN NaN 43.000000 NaN NaN \n", + "75% NaN NaN 53.000000 NaN NaN \n", + "max NaN NaN 94.000000 NaN NaN \n", + "\n", + " ANCIENNETE_PERMIS ANNEE_CONSTRUCTION ENERGIE EQUIPEMENT_SECURITE \\\n", + "count 824.000000 824.000000 824 824 \n", + "unique NaN NaN 3 2 \n", + "top NaN NaN ESSENCE FAUX \n", + "freq NaN NaN 413 517 \n", + "mean 35.688107 2015.212379 NaN NaN \n", + "std 19.370621 3.163782 NaN NaN \n", + "min 1.000000 1998.000000 NaN NaN \n", + "25% 18.000000 2014.000000 NaN NaN \n", + "50% 35.000000 2016.000000 NaN NaN \n", + "75% 53.000000 2017.000000 NaN NaN \n", + "max 70.000000 2021.000000 NaN NaN \n", + "\n", + " VALEUR_DU_BIEN CM \n", + "count 824 824.000000 \n", + "unique 6 NaN \n", + "top [10000;15000[ NaN \n", + "freq 213 NaN \n", + "mean NaN 4246.016978 \n", + "std NaN 6869.616917 \n", + "min NaN 7.500000 \n", + "25% NaN 1159.961250 \n", + "50% NaN 2541.650000 \n", + "75% NaN 4193.797500 \n", + "max NaN 83421.850000 " + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_model.describe(include='all')" + ] + }, + { + "cell_type": "markdown", + "id": "92d6156a", + "metadata": {}, + "source": [ + "#### Etude des corrélations parmi les variables explicatives" + ] + }, + { + "cell_type": "markdown", + "id": "d7327570", + "metadata": {}, + "source": [ + "**Question :** Selon vous, pourquoi faut-il s'intéresser à la corrélation des variables ? " + ] + }, + { + "cell_type": "markdown", + "id": "475e141b", + "metadata": {}, + "source": [ + "*Réponse*: Pour avoir un modèle qui fit mieux + déterminer un potentiel effet de causalité entre features et target + sélectionner certaines variables." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "1b156435", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(824, 13)" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_set = data_model.drop(\"CM\", axis=1)\n", + "data_set.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "0ef0fcc0", + "metadata": {}, + "outputs": [], + "source": [ + "#Séparation en variables qualitatives ou catégorielles\n", + "variables_na = []\n", + "variables_numeriques = []\n", + "variables_01 = []\n", + "variables_categorielles = []\n", + "for colu in data_set.columns:\n", + " if True in data_set[colu].isna().unique() :\n", + " variables_na.append(data_set[colu])\n", + " else :\n", + " if str(data_set[colu].dtypes) in [\"int32\",\"int64\",\"float64\"]:\n", + " if len(data_set[colu].unique())==2 :\n", + " variables_categorielles.append(data_set[colu])\n", + " else :\n", + " variables_numeriques.append(data_set[colu])\n", + " else :\n", + " if len(data_set[colu].unique())==2 :\n", + " variables_categorielles.append(data_set[colu])\n", + " else :\n", + " variables_categorielles.append(data_set[colu])" + ] + }, + { + "cell_type": "markdown", + "id": "e82fcade", + "metadata": {}, + "source": [ + "##### Corrélation des variables catégorielles :" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "e130aae5", + "metadata": {}, + "outputs": [], + "source": [ + "vars_categorielles = pd.DataFrame(variables_categorielles).transpose()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c39e2ad0", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "coloraxis": "coloraxis", + "hovertemplate": "x: %{x}
y: %{y}
color: %{z}", + "name": "0", + "texttemplate": "%{z:.2f}", + "type": "heatmap", + "x": [ + "CONTRAT_ANCIENNETE", + "FREQUENCE_PAIEMENT_COTISATION", + "GROUPE_KM", + "ZONE_RISQUE", + "GENRE", + "DEUXIEME_CONDUCTEUR", + "ENERGIE", + "EQUIPEMENT_SECURITE", + "VALEUR_DU_BIEN" + ], + "xaxis": "x", + "y": [ + "CONTRAT_ANCIENNETE", + "FREQUENCE_PAIEMENT_COTISATION", + "GROUPE_KM", + "ZONE_RISQUE", + "GENRE", + "DEUXIEME_CONDUCTEUR", + "ENERGIE", + "EQUIPEMENT_SECURITE", + "VALEUR_DU_BIEN" + ], + "yaxis": "y", + "z": { + "bdata": "AAAAAAAA8D8AAAAAAAAAACoCGzzITrA/jS6+t390sj/aAKYMJa2eP5RMqUS3uZs/ytNpsBVXkz8AAAAAAAAAAJsekiMPM4I/AAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAABgNwyfFOK3Px3tLvtk1qI/VTS7w965nj/DbHQwNU6sP6xOyIjBVMQ/KwIbPMhOsD8AAAAAAAAAAAAAAAAAAPA/JGwWgOwjwz/Y12crRVC2P1AU8aUpk3Y/tZ25v8HgyT9++YWBDBq6PxMKBP1KAMk/ki6+t390sj8AAAAAAAAAACNsFoDsI8M/AAAAAAAA8D8AAAAAAAAAAOzpAHMW1bU/OToUIB5twT+gpoD1ZjrEP/5ATjN+vpg/0gCmDCWtnj9gNwyfFOK3P9jXZytFULY/AAAAAAAAAAAAAAAAAADwPwAAAAAAAAAA2p0N4q1bwz/UsLoqS0u5PxFqf8IHB9E/lEypRLe5mz8d7S77ZNaiP1AU8aUpk3Y/7OkAcxbVtT8AAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAOYlMsJ0brs/ytNpsBVXkz9RNLvD3rmeP7edub/B4Mk/OjoUIB5twT/anQ3irVvDPwAAAAAAAAAAAAAAAAAA8D8nEbUEUmnAP+SA2g/TvNE/AAAAAAAAAADDbHQwNU6sP335hYEMGro/oKaA9WY6xD/UsLoqS0u5PwAAAAAAAAAAJxG1BFJpwD8AAAAAAADwP+fmCf6XRco/mx6SIw8zgj+rTsiIwVTEPxIKBP1KAMk//kBOM36+mD8Ran/CBwfRP+YlMsJ0brs/5YDaD9O80T/n5gn+l0XKPwAAAAAAAPA/", + "dtype": "f8", + "shape": "9, 9" + } + } + ], + "layout": { + "coloraxis": { + "colorscale": [ + [ + 0, + "rgb(5,48,97)" + ], + [ + 0.1, + "rgb(33,102,172)" + ], + [ + 0.2, + "rgb(67,147,195)" + ], + [ + 0.3, + "rgb(146,197,222)" + ], + [ + 0.4, + "rgb(209,229,240)" + ], + [ + 0.5, + "rgb(247,247,247)" + ], + [ + 0.6, + "rgb(253,219,199)" + ], + [ + 0.7, + "rgb(244,165,130)" + ], + [ + 0.8, + "rgb(214,96,77)" + ], + [ + 0.9, + "rgb(178,24,43)" + ], + [ + 1, + "rgb(103,0,31)" + ] + ] + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Matrice de corrélation des variables catégorielles (V de Cramér)" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ] + }, + "yaxis": { + "anchor": "x", + "autorange": "reversed", + "domain": [ + 0, + 1 + ] + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Matrice de corrélation pour les variables catégorielles (V de Cramér)\n", + "def cramers_v(confusion_matrix):\n", + " \"\"\"Calcule le V de Cramér à partir d'une matrice de contingence\"\"\"\n", + " chi2 = chi2_contingency(confusion_matrix)[0]\n", + " n = confusion_matrix.sum().sum()\n", + " phi2 = chi2 / n\n", + " r, k = confusion_matrix.shape\n", + " phi2corr = max(0, phi2 - ((k-1)*(r-1))/(n-1))\n", + " rcorr = r - ((r-1)**2)/(n-1)\n", + " kcorr = k - ((k-1)**2)/(n-1)\n", + " return np.sqrt(phi2corr / min((kcorr-1), (rcorr-1)))\n", + "\n", + "# Créer la matrice de corrélation\n", + "categorical_cols = vars_categorielles.columns\n", + "n_vars = len(categorical_cols)\n", + "cramers_matrix = np.zeros((n_vars, n_vars))\n", + "\n", + "for i, col1 in enumerate(categorical_cols):\n", + " for j, col2 in enumerate(categorical_cols):\n", + " if i == j:\n", + " cramers_matrix[i, j] = 1.0\n", + " else:\n", + " confusion_matrix = pd.crosstab(vars_categorielles[col1], vars_categorielles[col2])\n", + " cramers_matrix[i, j] = cramers_v(confusion_matrix)\n", + "\n", + "# Créer le DataFrame de corrélation\n", + "correlation_cat = pd.DataFrame(cramers_matrix,\n", + " index=categorical_cols,\n", + " columns=categorical_cols)\n", + "\n", + "# Visualiser avec Plotly\n", + "fig = px.imshow(correlation_cat,\n", + " text_auto='.2f',\n", + " aspect=\"auto\",\n", + " color_continuous_scale='RdBu_r',\n", + " title='Matrice de corrélation des variables catégorielles (V de Cramér)')\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8f615121", + "metadata": {}, + "source": [ + "##### Corrélation des variables numériques :" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "a16215ab", + "metadata": {}, + "outputs": [], + "source": [ + "vars_numeriques = pd.DataFrame(variables_numeriques).transpose()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "532ca6c4", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "coloraxis": "coloraxis", + "hovertemplate": "x: %{x}
y: %{y}
color: %{z}", + "name": "0", + "texttemplate": "%{z}", + "type": "heatmap", + "x": [ + "ANNEE_CTR", + "AGE_ASSURE_PRINCIPAL", + "ANCIENNETE_PERMIS", + "ANNEE_CONSTRUCTION" + ], + "xaxis": "x", + "y": [ + "ANNEE_CTR", + "AGE_ASSURE_PRINCIPAL", + "ANCIENNETE_PERMIS", + "ANNEE_CONSTRUCTION" + ], + "yaxis": "y", + "z": { + "bdata": "AAAAAAAA8D+ybZcEUUCbP/CBLCtO46Q/qr2Q49LN2D+ybZcEUUCbPwAAAAAAAPA/slV7SAtP4T84L73yETWgv/CBLCtO46Q/slV7SAtP4T8AAAAAAADwP0I6y25dD6E/qr2Q49LN2D84L73yETWgv0I6y25dD6E/AAAAAAAA8D8=", + "dtype": "f8", + "shape": "4, 4" + } + } + ], + "layout": { + "coloraxis": { + "colorscale": [ + [ + 0, + "rgb(5,48,97)" + ], + [ + 0.1, + "rgb(33,102,172)" + ], + [ + 0.2, + "rgb(67,147,195)" + ], + [ + 0.3, + "rgb(146,197,222)" + ], + [ + 0.4, + "rgb(209,229,240)" + ], + [ + 0.5, + "rgb(247,247,247)" + ], + [ + 0.6, + "rgb(253,219,199)" + ], + [ + 0.7, + "rgb(244,165,130)" + ], + [ + 0.8, + "rgb(214,96,77)" + ], + [ + 0.9, + "rgb(178,24,43)" + ], + [ + 1, + "rgb(103,0,31)" + ] + ] + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Matrice de corrélation des variables numériques" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ] + }, + "yaxis": { + "anchor": "x", + "autorange": "reversed", + "domain": [ + 0, + 1 + ] + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "vars_numeriques.corr()\n", + "fig = px.imshow(vars_numeriques.corr(),\n", + " text_auto=True,\n", + " aspect=\"auto\",\n", + " color_continuous_scale='RdBu_r',\n", + " title='Matrice de corrélation des variables numériques')\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "id": "98c7dba6", + "metadata": {}, + "source": [ + "**Question :** quels sont vos commentaires ?" + ] + }, + { + "cell_type": "markdown", + "id": "67406b54", + "metadata": {}, + "source": [ + "*Réponse*: Aucune des variables ne semblent corrélées." + ] + }, + { + "cell_type": "markdown", + "id": "212209ec", + "metadata": {}, + "source": [ + "#### Preprocessing" + ] + }, + { + "cell_type": "markdown", + "id": "65aca700", + "metadata": {}, + "source": [ + "Deux étapes sont nécessaires avant de lancer l'apprentissage d'un modèle, c'est ce qu'on connait comme le *Preprocessing* :\n", + "\n", + "* Les modèles proposés par la librairie \"sklearn\" ne gèrent que des variables numériques. Il est donc nécessaire de transformer les variables catégorielles en variables numériques : ce processus s'appelle le *One Hot Encoding*.\n", + "* Normaliser les données numériques" + ] + }, + { + "cell_type": "markdown", + "id": "95f5cc9f", + "metadata": {}, + "source": [ + "**Exercice :** proposez un bout de code permettant de réaliser le One Hot Encoding des variables catégorielles. Vous pourrez utiliser la fonction \"preproc.OneHotEncoder\" de la librairie sklearn" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "b8530717", + "metadata": {}, + "outputs": [], + "source": [ + "encoder = preproc.OneHotEncoder()\n", + "encoder.fit(vars_categorielles)\n", + "vars_categorielles_enc = encoder.transform(vars_categorielles)\n", + "vars_categorielles_enc = pd.DataFrame(vars_categorielles_enc.toarray(), columns=encoder.get_feature_names_out(vars_categorielles.columns))" + ] + }, + { + "cell_type": "markdown", + "id": "b70abc5c", + "metadata": {}, + "source": [ + "**Exercice :** proposez un bout de code permettant normaliser les variables numériques présentes dans la base. Vous pourrez utiliser la fonction \"preproc.StandardScaler\" de la librairie sklearn" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "4ff3847d", + "metadata": {}, + "outputs": [], + "source": [ + "scaler = preproc.StandardScaler()\n", + "scaler.fit(vars_numeriques)\n", + "vars_numeriques_scaled = scaler.transform(vars_numeriques)\n", + "vars_numeriques_scaled = pd.DataFrame(vars_numeriques_scaled, columns=vars_numeriques.columns)" + ] + }, + { + "cell_type": "markdown", + "id": "62d49546", + "metadata": {}, + "source": [ + "#### Sampling" + ] + }, + { + "cell_type": "markdown", + "id": "64d229f4", + "metadata": {}, + "source": [ + "**Exercice :** proposez un bout de code permettant construire la base d'apprentissage (80% des données) et la base de test (20%)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a1c7907", + "metadata": {}, + "outputs": [], + "source": [ + "X = data_model_preprocessed = vars_numeriques_scaled.merge(vars_categorielles_enc, left_index=True, right_index=True)\n", + "Y = data_model[\"CM\"]\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X, Y, test_size=0.2, random_state=42\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "84dc7a07", + "metadata": {}, + "source": [ + "#### Fitting" + ] + }, + { + "cell_type": "markdown", + "id": "97c7b783", + "metadata": {}, + "source": [ + "**Exercice :** proposez un bout de code permettant construire le modèle" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "053e013c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
DecisionTreeRegressor()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "DecisionTreeRegressor()" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tree = DecisionTreeRegressor()\n", + "tree.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "id": "8d624704", + "metadata": {}, + "source": [ + "**Exercice :** proposez un bout de code permettant d'évaluer les performances du modèle (MAE, MSE et RMSE)" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "c4ca2cf9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAE: 0.00\n", + "MSE: 0.00\n", + "RMSE: 0.00\n" + ] + } + ], + "source": [ + "# Prédictions sur l'ensemble d'entraînement\n", + "y_pred_train = tree.predict(X_train)\n", + "\n", + "mae = metrics.mean_absolute_error(y_train, y_pred_train)\n", + "mse = metrics.mean_squared_error(y_train, y_pred_train)\n", + "rmse = metrics.root_mean_squared_error(y_train, y_pred_train)\n", + "\n", + "print(f\"MAE: {mae:.2f}\")\n", + "print(f\"MSE: {mse:.2f}\")\n", + "print(f\"RMSE: {rmse:.2f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "4b739d5b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAE: 5124.14\n", + "MSE: 84535204.52\n", + "RMSE: 9194.30\n" + ] + } + ], + "source": [ + "y_pred_test = tree.predict(X_test)\n", + "\n", + "mae = metrics.mean_absolute_error(y_test, y_pred_test)\n", + "mse = metrics.mean_squared_error(y_test, y_pred_test)\n", + "rmse = metrics.root_mean_squared_error(y_test, y_pred_test)\n", + "\n", + "print(f\"MAE: {mae:.2f}\")\n", + "print(f\"MSE: {mse:.2f}\")\n", + "print(f\"RMSE: {rmse:.2f}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "fb2fe98c", + "metadata": {}, + "source": [ + "**Question :** que pensez-vous des performances de ce modèle ?" + ] + }, + { + "cell_type": "markdown", + "id": "bdd7ccd6", + "metadata": {}, + "source": [ + "*Réponse*: \n", + "\n", + "Erreur Absolue Moyenne (MAE)\n", + "La MAE représente l'écart absolu moyen entre les prédictions du modèle et les valeurs réelles. Une MAE de 5950.05 signifie qu'en moyenne, notre modèle commet une erreur de cette magnitude, dans l'unité de la variable cible. C'est l'indicateur le plus direct de l'erreur de prédiction moyenne.\n", + "\n", + "Racine de l'Erreur Quadratique Moyenne (RMSE)\n", + "La RMSE est la racine carrée de la moyenne des erreurs au carré ($RMSE = \\sqrt{MSE}$). En raison de l'opération de mise au carré, cette métrique est particulièrement sensible aux grandes erreurs. La valeur obtenue est de 12651.79." + ] + }, + { + "cell_type": "markdown", + "id": "7ecba832", + "metadata": {}, + "source": [ + "## Algorithme supervisé : Random Forest " + ] + }, + { + "cell_type": "markdown", + "id": "efcb8987", + "metadata": {}, + "source": [ + "A ce stade, nous avons vu les différentes étapes pour lancer un algorithme de Machine Learning. Néanmoins, ces étapes ne sont pas suffisantes pour construire un modèle performant. \n", + "En effet, afin de construire un modèle performant le Data Scientist doit agir sur l'apprentissage du modèle. Dans ce qui suit nous :\n", + "* Changerons d'algorithme pour utiliser un algorithme plus performant (Random Forest)\n", + "* Raliserons un *grid search* sur les paramètres du modèle\n", + "* Appliquerons l'apprentissage par validation croisée\n" + ] + }, + { + "cell_type": "markdown", + "id": "d6723a2f", + "metadata": {}, + "source": [ + "### Modèle avec Validation Croisée" + ] + }, + { + "cell_type": "markdown", + "id": "3716b09f", + "metadata": {}, + "source": [ + "#### Sampling" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "ab1e1367", + "metadata": {}, + "outputs": [], + "source": [ + "X = data_model_preprocessed\n", + "Y = data_model[\"CM\"]\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X, Y, test_size=0.2, random_state=42\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "3f5d735e", + "metadata": {}, + "source": [ + "#### Fitting avec Cross-Validation" + ] + }, + { + "cell_type": "markdown", + "id": "bc819f8f", + "metadata": {}, + "source": [ + "**Exercice :** construisez un modèle RF (RandomForestRegressor) en implémentant la technique de validation croisée. Pensez à enregistrer au sein d'une variable/liste les performances (MAE, MSE & RMSE) du modèle au sein de chaque fold." + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "b515460e", + "metadata": {}, + "outputs": [], + "source": [ + "# Initialisation\n", + "# Nombre de sous-échantillons pour la cross-validation\n", + "num_splits = 5\n", + "\n", + "# Random Forest regressor\n", + "rf_regressor = RandomForestRegressor(n_estimators=100, random_state=42)\n", + "\n", + "# Initialisation du KFold cross-validation splitter\n", + "kf = KFold(n_splits=num_splits)\n", + "\n", + "# Listes pour enregistrer les performances du modèle\n", + "MAE_scores = []\n", + "MSE_scores = []\n", + "RMSE_scores = []" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "eebb394f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Validation croisée terminée avec 5 folds\n" + ] + } + ], + "source": [ + "# Entrainement avec cross-validation\n", + "for train_index, val_index in kf.split(X_train):\n", + " X_train_fold, X_val_fold = X_train.iloc[train_index], X_train.iloc[val_index]\n", + " y_train_fold, y_val_fold = y_train.iloc[train_index], y_train.iloc[val_index]\n", + "\n", + " rf_regressor.fit(X_train_fold, y_train_fold)\n", + " y_pred_fold = rf_regressor.predict(X_val_fold)\n", + "\n", + " mae = metrics.mean_absolute_error(y_val_fold, y_pred_fold)\n", + " mse = metrics.mean_squared_error(y_val_fold, y_pred_fold)\n", + " rmse = metrics.root_mean_squared_error(y_val_fold, y_pred_fold)\n", + "\n", + " MAE_scores.append(mae)\n", + " MSE_scores.append(mse)\n", + " RMSE_scores.append(rmse)\n", + "\n", + "print(f\"Validation croisée terminée avec {len(MAE_scores)} folds\")" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "b067126c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fold 1 MAE: 4472.5486946969695\n", + "Fold 2 MAE: 3859.4743234848484\n", + "Fold 3 MAE: 3633.0231541666662\n", + "Fold 4 MAE: 3888.3910715909087\n", + "Fold 5 MAE: 4808.59621832061\n" + ] + } + ], + "source": [ + "# Métriques sur tous les folds\n", + "\n", + "#MAE\n", + "for fold, mae in enumerate(MAE_scores, start=1):\n", + " print(f\"Fold {fold} MAE:\", mae)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "6597152c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fold 1 MSE: 85464414.44080053\n", + "Fold 2 MSE: 34396997.21755034\n", + "Fold 3 MSE: 55184512.50786593\n", + "Fold 4 MSE: 33191300.80751679\n", + "Fold 5 MSE: 68739370.63588645\n" + ] + } + ], + "source": [ + "#MSE\n", + "for fold, mse in enumerate(MSE_scores, start=1):\n", + " print(f\"Fold {fold} MSE:\", mse)" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "63ff1c9d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fold 1 RMSE: 9244.696557529649\n", + "Fold 2 RMSE: 5864.895328780415\n", + "Fold 3 RMSE: 7428.62790210049\n", + "Fold 4 RMSE: 5761.189183451346\n", + "Fold 5 RMSE: 8290.9209763383\n" + ] + } + ], + "source": [ + "#RMSE\n", + "for fold, rmse in enumerate(RMSE_scores, start=1):\n", + " print(f\"Fold {fold} RMSE:\", rmse)" + ] + }, + { + "cell_type": "markdown", + "id": "ec1961c2", + "metadata": {}, + "source": [ + "**Question :** Commentez les résultats." + ] + }, + { + "cell_type": "markdown", + "id": "5a8163ef", + "metadata": {}, + "source": [ + "### Ajout d'un Grid Search pour les hyper paramètres" + ] + }, + { + "cell_type": "markdown", + "id": "5a6adbfe", + "metadata": {}, + "source": [ + "#### Sampling" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d9342ad6", + "metadata": {}, + "outputs": [], + "source": [ + "X = data_model_preprocessed\n", + "Y = data_model[\"CM\"]\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X, Y, test_size=0.2, random_state=42\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "dce52b11", + "metadata": {}, + "source": [ + "#### Fitting avec Cross-Validation et *Grid Search*" + ] + }, + { + "cell_type": "markdown", + "id": "7e3a9dd0", + "metadata": {}, + "source": [ + "**Exercice :** Intégrez la technique de Grid Search pour rechercher les paramètres optimaux du modèle." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d58dbc2", + "metadata": {}, + "outputs": [], + "source": [ + "#Initialisation\n", + "# Nombre de sous-échantillons pour la cross-validation\n", + "num_splits = 5\n", + "\n", + "# Initialisation du KFold cross-validation splitter\n", + "kf = KFold(n_splits=num_splits)\n", + "\n", + "# Listes pour enregistrer les performances du modèle\n", + "MAE_scores = []\n", + "MSE_scores = []\n", + "RMSE_scores = []\n", + "\n", + "# Hyperparamètres à tester\n", + "n_estimators_values = []\n", + "max_depth_values = []\n", + "min_samples_split_values = []\n", + "\n", + "# Liste pour sauveagrder les meilleurs résultats\n", + "best_score = np.inf\n", + "best_params = {}\n", + "\n", + "MAE_best_score = []\n", + "MSE_best_score = []\n", + "RMSE_best_score = []" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "47da5172", + "metadata": {}, + "outputs": [], + "source": [ + "#Complétez ici avec votre code\n", + "for n_estimators in n_estimators_values:\n", + " for max_depth in max_depth_values:\n", + " for min_samples_split in min_samples_split_values:\n", + " rf_regressor = RandomForestRegressor(\n", + " n_estimators=n_estimators,\n", + " max_depth=max_depth,\n", + " min_samples_split=min_samples_split,\n", + " random_state=42\n", + " )\n", + " MAE_scores = []\n", + " MSE_scores = []\n", + " RMSE_scores = []\n", + "\n", + " for train_index, val_index in kf.split(X_train):\n", + " X_train_fold, X_val_fold = X_train.iloc[train_index], X_train.iloc[val_index]\n", + " y_train_fold, y_val_fold = y_train.iloc[train_index], y_train.iloc[val_index]\n", + "\n", + " rf_regressor.fit(X_train_fold, y_train_fold)\n", + " y_pred_fold = rf_regressor.predict(X_val_fold)\n", + "\n", + " mae = metrics.mean_absolute_error(y_val_fold, y_pred_fold)\n", + " mse = metrics.mean_squared_error(y_val_fold, y_pred_fold)\n", + " rmse = metrics.root_mean_squared_error(y_val_fold, y_pred_fold)\n", + "\n", + " MAE_scores.append(mae)\n", + " MSE_scores.append(mse)\n", + " RMSE_scores.append(rmse)\n", + "\n", + " avg_mae = np.mean(MAE_scores)\n", + " avg_mse = np.mean(MSE_scores)\n", + " avg_rmse = np.mean(RMSE_scores)\n", + "\n", + " if avg_rmse < best_score:\n", + " best_score = avg_rmse\n", + " best_params = {\n", + " 'n_estimators': n_estimators,\n", + " 'max_depth': max_depth,\n", + " 'min_samples_split': min_samples_split\n", + " }\n", + " MAE_best_score = MAE_scores\n", + " MSE_best_score = MSE_scores\n", + " RMSE_best_score = RMSE_scores" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "id": "d4936c46", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Meilleurs paramètres: {}\n", + "Meilleure RMSE : inf\n" + ] + } + ], + "source": [ + "# Meilleurs résultats\n", + "print(\"Meilleurs paramètres:\", best_params)\n", + "print(\"Meilleure RMSE :\", best_score)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "3215c463", + "metadata": {}, + "outputs": [], + "source": [ + "# Métriques sur tous les folds\n", + "\n", + "#RMSE\n", + "for fold, rmse in enumerate(RMSE_best_score, start=1):\n", + " print(f\"Fold {fold} RMSE:\", rmse)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "id": "bb9a5c9b", + "metadata": {}, + "outputs": [], + "source": [ + "#MAE\n", + "for fold, mse in enumerate(MSE_best_score, start=1):\n", + " print(f\"Fold {fold} MSE:\", mse)" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "id": "0f0768ad", + "metadata": {}, + "outputs": [], + "source": [ + "#MSE\n", + "for fold, mae in enumerate(MAE_best_score, start=1):\n", + " print(f\"Fold {fold} MAE:\", mae)" + ] + }, + { + "cell_type": "markdown", + "id": "802a625f", + "metadata": {}, + "source": [ + "**Question :** Commentez les résultats" + ] } - ], - "ref": "8fcd0abc-8334-4a0d-96b7-b6d7e17b3fb7", - "rows": [ - [ - "count", - "824.0", - "824", - "824", - "824", - "824", - "824.0", - "824", - "824", - "824.0", - "824.0", - "824", - "824", - "824", - "824.0" - ], - [ - "unique", - null, - "5", - "3", - "4", - "14", - null, - "2", - "2", - null, - null, - "3", - "2", - "6", - null - ], - [ - "top", - null, - "(0,1]", - "MENSUEL", - "[0;20000[", - "C", - null, - "M", - "False", - null, - null, - "ESSENCE", - "FAUX", - "[10000;15000[", - null - ], - [ - "freq", - null, - "297", - "398", - "391", - "269", - null, - "483", - "663", - null, - null, - "413", - "517", - "213", - null - ], - [ - "mean", - "2018.384708737864", - null, - null, - null, - null, - "44.383495145631066", - null, - null, - "35.68810679611651", - "2015.2123786407767", - null, - null, - null, - "4246.01697815534" - ], - [ - "std", - "1.515832735580178", - null, - null, - null, - null, - "13.808216667998865", - null, - null, - "19.370620845496358", - "3.1637823115731556", - null, - null, - null, - "6869.61691660173" - ], - [ - "min", - "2016.0", - null, - null, - null, - null, - "19.0", - null, - null, - "1.0", - "1998.0", - null, - null, - null, - "7.5" - ], - [ - "25%", - "2017.0", - null, - null, - null, - null, - "34.0", - null, - null, - "18.0", - "2014.0", - null, - null, - null, - "1159.96125" - ], - [ - "50%", - "2018.0", - null, - null, - null, - null, - "43.0", - null, - null, - "35.0", - "2016.0", - null, - null, - null, - "2541.6499999999996" - ], - [ - "75%", - "2020.0", - null, - null, - null, - null, - "53.0", - null, - null, - "53.0", - "2017.0", - null, - null, - null, - "4193.797500000001" - ], - [ - "max", - "2021.0", - null, - null, - null, - null, - "94.0", - null, - null, - "70.0", - "2021.0", - null, - null, - null, - "83421.85" - ] - ], - "shape": { - "columns": 14, - "rows": 11 - } - }, - "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", - " \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", - "
ANNEE_CTRCONTRAT_ANCIENNETEFREQUENCE_PAIEMENT_COTISATIONGROUPE_KMZONE_RISQUEAGE_ASSURE_PRINCIPALGENREDEUXIEME_CONDUCTEURANCIENNETE_PERMISANNEE_CONSTRUCTIONENERGIEEQUIPEMENT_SECURITEVALEUR_DU_BIENCM
count824.000000824824824824824.000000824824824.000000824.000000824824824824.000000
uniqueNaN53414NaN22NaNNaN326NaN
topNaN(0,1]MENSUEL[0;20000[CNaNMFalseNaNNaNESSENCEFAUX[10000;15000[NaN
freqNaN297398391269NaN483663NaNNaN413517213NaN
mean2018.384709NaNNaNNaNNaN44.383495NaNNaN35.6881072015.212379NaNNaNNaN4246.016978
std1.515833NaNNaNNaNNaN13.808217NaNNaN19.3706213.163782NaNNaNNaN6869.616917
min2016.000000NaNNaNNaNNaN19.000000NaNNaN1.0000001998.000000NaNNaNNaN7.500000
25%2017.000000NaNNaNNaNNaN34.000000NaNNaN18.0000002014.000000NaNNaNNaN1159.961250
50%2018.000000NaNNaNNaNNaN43.000000NaNNaN35.0000002016.000000NaNNaNNaN2541.650000
75%2020.000000NaNNaNNaNNaN53.000000NaNNaN53.0000002017.000000NaNNaNNaN4193.797500
max2021.000000NaNNaNNaNNaN94.000000NaNNaN70.0000002021.000000NaNNaNNaN83421.850000
\n", - "
" - ], - "text/plain": [ - " ANNEE_CTR CONTRAT_ANCIENNETE FREQUENCE_PAIEMENT_COTISATION \\\n", - "count 824.000000 824 824 \n", - "unique NaN 5 3 \n", - "top NaN (0,1] MENSUEL \n", - "freq NaN 297 398 \n", - "mean 2018.384709 NaN NaN \n", - "std 1.515833 NaN NaN \n", - "min 2016.000000 NaN NaN \n", - "25% 2017.000000 NaN NaN \n", - "50% 2018.000000 NaN NaN \n", - "75% 2020.000000 NaN NaN \n", - "max 2021.000000 NaN NaN \n", - "\n", - " GROUPE_KM ZONE_RISQUE AGE_ASSURE_PRINCIPAL GENRE DEUXIEME_CONDUCTEUR \\\n", - "count 824 824 824.000000 824 824 \n", - "unique 4 14 NaN 2 2 \n", - "top [0;20000[ C NaN M False \n", - "freq 391 269 NaN 483 663 \n", - "mean NaN NaN 44.383495 NaN NaN \n", - "std NaN NaN 13.808217 NaN NaN \n", - "min NaN NaN 19.000000 NaN NaN \n", - "25% NaN NaN 34.000000 NaN NaN \n", - "50% NaN NaN 43.000000 NaN NaN \n", - "75% NaN NaN 53.000000 NaN NaN \n", - "max NaN NaN 94.000000 NaN NaN \n", - "\n", - " ANCIENNETE_PERMIS ANNEE_CONSTRUCTION ENERGIE EQUIPEMENT_SECURITE \\\n", - "count 824.000000 824.000000 824 824 \n", - "unique NaN NaN 3 2 \n", - "top NaN NaN ESSENCE FAUX \n", - "freq NaN NaN 413 517 \n", - "mean 35.688107 2015.212379 NaN NaN \n", - "std 19.370621 3.163782 NaN NaN \n", - "min 1.000000 1998.000000 NaN NaN \n", - "25% 18.000000 2014.000000 NaN NaN \n", - "50% 35.000000 2016.000000 NaN NaN \n", - "75% 53.000000 2017.000000 NaN NaN \n", - "max 70.000000 2021.000000 NaN NaN \n", - "\n", - " VALEUR_DU_BIEN CM \n", - "count 824 824.000000 \n", - "unique 6 NaN \n", - "top [10000;15000[ NaN \n", - "freq 213 NaN \n", - "mean NaN 4246.016978 \n", - "std NaN 6869.616917 \n", - "min NaN 7.500000 \n", - "25% NaN 1159.961250 \n", - "50% NaN 2541.650000 \n", - "75% NaN 4193.797500 \n", - "max NaN 83421.850000 " - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_model.describe(include='all')" - ] - }, - { - "cell_type": "markdown", - "id": "92d6156a", - "metadata": {}, - "source": [ - "#### Etude des corrélations parmi les variables explicatives" - ] - }, - { - "cell_type": "markdown", - "id": "d7327570", - "metadata": {}, - "source": [ - "**Question :** Selon vous, pourquoi faut-il s'intéresser à la corrélation des variables ? " - ] - }, - { - "cell_type": "markdown", - "id": "475e141b", - "metadata": {}, - "source": [ - "*Réponse*: Pour avoir un modèle qui fit mieux + déterminer un potentiel effet de causalité entre features et target + sélectionner certaines variables." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "1b156435", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(824, 13)" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_set = data_model.drop(\"CM\", axis=1)\n", - "data_set.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "0ef0fcc0", - "metadata": {}, - "outputs": [], - "source": [ - "#Séparation en variables qualitatives ou catégorielles\n", - "variables_na = []\n", - "variables_numeriques = []\n", - "variables_01 = []\n", - "variables_categorielles = []\n", - "for colu in data_set.columns:\n", - " if True in data_set[colu].isna().unique() :\n", - " variables_na.append(data_set[colu])\n", - " else :\n", - " if str(data_set[colu].dtypes) in [\"int32\",\"int64\",\"float64\"]:\n", - " if len(data_set[colu].unique())==2 :\n", - " variables_categorielles.append(data_set[colu])\n", - " else :\n", - " variables_numeriques.append(data_set[colu])\n", - " else :\n", - " if len(data_set[colu].unique())==2 :\n", - " variables_categorielles.append(data_set[colu])\n", - " else :\n", - " variables_categorielles.append(data_set[colu])" - ] - }, - { - "cell_type": "markdown", - "id": "e82fcade", - "metadata": {}, - "source": [ - "##### Corrélation des variables catégorielles :" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "e130aae5", - "metadata": {}, - "outputs": [], - "source": [ - "vars_categorielles = pd.DataFrame(variables_categorielles).transpose()" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "c39e2ad0", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "coloraxis": "coloraxis", - "hovertemplate": "x: %{x}
y: %{y}
color: %{z}", - "name": "0", - "texttemplate": "%{z:.2f}", - "type": "heatmap", - "x": [ - "CONTRAT_ANCIENNETE", - "FREQUENCE_PAIEMENT_COTISATION", - "GROUPE_KM", - "ZONE_RISQUE", - "GENRE", - "DEUXIEME_CONDUCTEUR", - "ENERGIE", - "EQUIPEMENT_SECURITE", - "VALEUR_DU_BIEN" - ], - "xaxis": "x", - "y": [ - "CONTRAT_ANCIENNETE", - "FREQUENCE_PAIEMENT_COTISATION", - "GROUPE_KM", - "ZONE_RISQUE", - "GENRE", - "DEUXIEME_CONDUCTEUR", - "ENERGIE", - "EQUIPEMENT_SECURITE", - "VALEUR_DU_BIEN" - ], - "yaxis": "y", - "z": { - "bdata": "AAAAAAAA8D8AAAAAAAAAACoCGzzITrA/jS6+t390sj/aAKYMJa2eP5RMqUS3uZs/ytNpsBVXkz8AAAAAAAAAAJsekiMPM4I/AAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAABgNwyfFOK3Px3tLvtk1qI/VTS7w965nj/DbHQwNU6sP6xOyIjBVMQ/KwIbPMhOsD8AAAAAAAAAAAAAAAAAAPA/JGwWgOwjwz/Y12crRVC2P1AU8aUpk3Y/tZ25v8HgyT9++YWBDBq6PxMKBP1KAMk/ki6+t390sj8AAAAAAAAAACNsFoDsI8M/AAAAAAAA8D8AAAAAAAAAAOzpAHMW1bU/OToUIB5twT+gpoD1ZjrEP/5ATjN+vpg/0gCmDCWtnj9gNwyfFOK3P9jXZytFULY/AAAAAAAAAAAAAAAAAADwPwAAAAAAAAAA2p0N4q1bwz/UsLoqS0u5PxFqf8IHB9E/lEypRLe5mz8d7S77ZNaiP1AU8aUpk3Y/7OkAcxbVtT8AAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAOYlMsJ0brs/ytNpsBVXkz9RNLvD3rmeP7edub/B4Mk/OjoUIB5twT/anQ3irVvDPwAAAAAAAAAAAAAAAAAA8D8nEbUEUmnAP+SA2g/TvNE/AAAAAAAAAADDbHQwNU6sP335hYEMGro/oKaA9WY6xD/UsLoqS0u5PwAAAAAAAAAAJxG1BFJpwD8AAAAAAADwP+fmCf6XRco/mx6SIw8zgj+rTsiIwVTEPxIKBP1KAMk//kBOM36+mD8Ran/CBwfRP+YlMsJ0brs/5YDaD9O80T/n5gn+l0XKPwAAAAAAAPA/", - "dtype": "f8", - "shape": "9, 9" - } + ], + "metadata": { + "kernelspec": { + "display_name": "studies", + "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.13.3" } - ], - "layout": { - "coloraxis": { - "colorscale": [ - [ - 0, - "rgb(5,48,97)" - ], - [ - 0.1, - "rgb(33,102,172)" - ], - [ - 0.2, - "rgb(67,147,195)" - ], - [ - 0.3, - "rgb(146,197,222)" - ], - [ - 0.4, - "rgb(209,229,240)" - ], - [ - 0.5, - "rgb(247,247,247)" - ], - [ - 0.6, - "rgb(253,219,199)" - ], - [ - 0.7, - "rgb(244,165,130)" - ], - [ - 0.8, - "rgb(214,96,77)" - ], - [ - 0.9, - "rgb(178,24,43)" - ], - [ - 1, - "rgb(103,0,31)" - ] - ] - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermap" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Matrice de corrélation des variables catégorielles (V de Cramér)" - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ] - }, - "yaxis": { - "anchor": "x", - "autorange": "reversed", - "domain": [ - 0, - 1 - ] - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Matrice de corrélation pour les variables catégorielles (V de Cramér)\n", - "def cramers_v(confusion_matrix):\n", - " \"\"\"Calcule le V de Cramér à partir d'une matrice de contingence\"\"\"\n", - " chi2 = chi2_contingency(confusion_matrix)[0]\n", - " n = confusion_matrix.sum().sum()\n", - " phi2 = chi2 / n\n", - " r, k = confusion_matrix.shape\n", - " phi2corr = max(0, phi2 - ((k-1)*(r-1))/(n-1))\n", - " rcorr = r - ((r-1)**2)/(n-1)\n", - " kcorr = k - ((k-1)**2)/(n-1)\n", - " return np.sqrt(phi2corr / min((kcorr-1), (rcorr-1)))\n", - "\n", - "# Créer la matrice de corrélation\n", - "categorical_cols = vars_categorielles.columns\n", - "n_vars = len(categorical_cols)\n", - "cramers_matrix = np.zeros((n_vars, n_vars))\n", - "\n", - "for i, col1 in enumerate(categorical_cols):\n", - " for j, col2 in enumerate(categorical_cols):\n", - " if i == j:\n", - " cramers_matrix[i, j] = 1.0\n", - " else:\n", - " confusion_matrix = pd.crosstab(vars_categorielles[col1], vars_categorielles[col2])\n", - " cramers_matrix[i, j] = cramers_v(confusion_matrix)\n", - "\n", - "# Créer le DataFrame de corrélation\n", - "correlation_cat = pd.DataFrame(cramers_matrix,\n", - " index=categorical_cols,\n", - " columns=categorical_cols)\n", - "\n", - "# Visualiser avec Plotly\n", - "fig = px.imshow(correlation_cat,\n", - " text_auto='.2f', # type: ignore\n", - " aspect=\"auto\",\n", - " color_continuous_scale='RdBu_r',\n", - " title='Matrice de corrélation des variables catégorielles (V de Cramér)')\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8f615121", - "metadata": {}, - "source": [ - "##### Corrélation des variables numériques :" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "a16215ab", - "metadata": {}, - "outputs": [], - "source": [ - "vars_numeriques = pd.DataFrame(variables_numeriques).transpose()" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "532ca6c4", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "coloraxis": "coloraxis", - "hovertemplate": "x: %{x}
y: %{y}
color: %{z}", - "name": "0", - "texttemplate": "%{z}", - "type": "heatmap", - "x": [ - "ANNEE_CTR", - "AGE_ASSURE_PRINCIPAL", - "ANCIENNETE_PERMIS", - "ANNEE_CONSTRUCTION" - ], - "xaxis": "x", - "y": [ - "ANNEE_CTR", - "AGE_ASSURE_PRINCIPAL", - "ANCIENNETE_PERMIS", - "ANNEE_CONSTRUCTION" - ], - "yaxis": "y", - "z": { - "bdata": "AAAAAAAA8D+ybZcEUUCbP/CBLCtO46Q/qr2Q49LN2D+ybZcEUUCbPwAAAAAAAPA/slV7SAtP4T84L73yETWgv/CBLCtO46Q/slV7SAtP4T8AAAAAAADwP0I6y25dD6E/qr2Q49LN2D84L73yETWgv0I6y25dD6E/AAAAAAAA8D8=", - "dtype": "f8", - "shape": "4, 4" - } - } - ], - "layout": { - "coloraxis": { - "colorscale": [ - [ - 0, - "rgb(5,48,97)" - ], - [ - 0.1, - "rgb(33,102,172)" - ], - [ - 0.2, - "rgb(67,147,195)" - ], - [ - 0.3, - "rgb(146,197,222)" - ], - [ - 0.4, - "rgb(209,229,240)" - ], - [ - 0.5, - "rgb(247,247,247)" - ], - [ - 0.6, - "rgb(253,219,199)" - ], - [ - 0.7, - "rgb(244,165,130)" - ], - [ - 0.8, - "rgb(214,96,77)" - ], - [ - 0.9, - "rgb(178,24,43)" - ], - [ - 1, - "rgb(103,0,31)" - ] - ] - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermap" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Matrice de corrélation des variables numériques" - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ] - }, - "yaxis": { - "anchor": "x", - "autorange": "reversed", - "domain": [ - 0, - 1 - ] - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "vars_numeriques.corr()\n", - "fig = px.imshow(vars_numeriques.corr(),\n", - " text_auto=True,\n", - " aspect=\"auto\",\n", - " color_continuous_scale='RdBu_r',\n", - " title='Matrice de corrélation des variables numériques')\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "id": "98c7dba6", - "metadata": {}, - "source": [ - "**Question :** quels sont vos commentaires ?" - ] - }, - { - "cell_type": "markdown", - "id": "67406b54", - "metadata": {}, - "source": [ - "*Réponse*: Aucune des variables ne semblent corrélées." - ] - }, - { - "cell_type": "markdown", - "id": "212209ec", - "metadata": {}, - "source": [ - "#### Preprocessing" - ] - }, - { - "cell_type": "markdown", - "id": "65aca700", - "metadata": {}, - "source": [ - "Deux étapes sont nécessaires avant de lancer l'apprentissage d'un modèle, c'est ce qu'on connait comme le *Preprocessing* :\n", - "\n", - "* Les modèles proposés par la librairie \"sklearn\" ne gèrent que des variables numériques. Il est donc nécessaire de transformer les variables catégorielles en variables numériques : ce processus s'appelle le *One Hot Encoding*.\n", - "* Normaliser les données numériques" - ] - }, - { - "cell_type": "markdown", - "id": "95f5cc9f", - "metadata": {}, - "source": [ - "**Exercice :** proposez un bout de code permettant de réaliser le One Hot Encoding des variables catégorielles. Vous pourrez utiliser la fonction \"preproc.OneHotEncoder\" de la librairie sklearn" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "b8530717", - "metadata": {}, - "outputs": [], - "source": [ - "encoder = preproc.OneHotEncoder()\n", - "encoder.fit(vars_categorielles)\n", - "vars_categorielles_enc = encoder.transform(vars_categorielles)\n", - "vars_categorielles_enc = pd.DataFrame(vars_categorielles_enc.toarray(), columns=encoder.get_feature_names_out(vars_categorielles.columns))" - ] - }, - { - "cell_type": "markdown", - "id": "b70abc5c", - "metadata": {}, - "source": [ - "**Exercice :** proposez un bout de code permettant normaliser les variables numériques présentes dans la base. Vous pourrez utiliser la fonction \"preproc.StandardScaler\" de la librairie sklearn" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "4ff3847d", - "metadata": {}, - "outputs": [], - "source": [ - "scaler = preproc.StandardScaler()\n", - "scaler.fit(vars_numeriques)\n", - "vars_numeriques_scaled = scaler.transform(vars_numeriques)\n", - "vars_numeriques_scaled = pd.DataFrame(vars_numeriques_scaled, columns=vars_numeriques.columns)" - ] - }, - { - "cell_type": "markdown", - "id": "62d49546", - "metadata": {}, - "source": [ - "#### Sampling" - ] - }, - { - "cell_type": "markdown", - "id": "64d229f4", - "metadata": {}, - "source": [ - "**Exercice :** proposez un bout de code permettant construire la base d'apprentissage (80% des données) et la base de test (20%)." - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "6a1c7907", - "metadata": {}, - "outputs": [], - "source": [ - "X = data_model_preprocessed = vars_numeriques_scaled.merge(vars_categorielles_enc, left_index=True, right_index=True) # type: ignore\n", - "Y = data_model[\"CM\"]\n", - "\n", - "X_train, X_test, y_train, y_test = train_test_split(\n", - " X, Y, test_size=0.2, random_state=42\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "84dc7a07", - "metadata": {}, - "source": [ - "#### Fitting" - ] - }, - { - "cell_type": "markdown", - "id": "97c7b783", - "metadata": {}, - "source": [ - "**Exercice :** proposez un bout de code permettant construire le modèle" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "053e013c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
DecisionTreeRegressor()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" - ], - "text/plain": [ - "DecisionTreeRegressor()" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tree = DecisionTreeRegressor()\n", - "tree.fit(X_train, y_train)" - ] - }, - { - "cell_type": "markdown", - "id": "8d624704", - "metadata": {}, - "source": [ - "**Exercice :** proposez un bout de code permettant d'évaluer les performances du modèle (MAE, MSE et RMSE)" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "c4ca2cf9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MAE: 0.00\n", - "MSE: 0.00\n", - "RMSE: 0.00\n" - ] - } - ], - "source": [ - "# Prédictions sur l'ensemble d'entraînement\n", - "y_pred_train = tree.predict(X_train)\n", - "\n", - "mae = metrics.mean_absolute_error(y_train, y_pred_train)\n", - "mse = metrics.mean_squared_error(y_train, y_pred_train)\n", - "rmse = metrics.root_mean_squared_error(y_train, y_pred_train)\n", - "\n", - "print(f\"MAE: {mae:.2f}\")\n", - "print(f\"MSE: {mse:.2f}\")\n", - "print(f\"RMSE: {rmse:.2f}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "4b739d5b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MAE: 5124.14\n", - "MSE: 84535204.52\n", - "RMSE: 9194.30\n" - ] - } - ], - "source": [ - "y_pred_test = tree.predict(X_test)\n", - "\n", - "mae = metrics.mean_absolute_error(y_test, y_pred_test)\n", - "mse = metrics.mean_squared_error(y_test, y_pred_test)\n", - "rmse = metrics.root_mean_squared_error(y_test, y_pred_test)\n", - "\n", - "print(f\"MAE: {mae:.2f}\")\n", - "print(f\"MSE: {mse:.2f}\")\n", - "print(f\"RMSE: {rmse:.2f}\")\n" - ] - }, - { - "cell_type": "markdown", - "id": "fb2fe98c", - "metadata": {}, - "source": [ - "**Question :** que pensez-vous des performances de ce modèle ?" - ] - }, - { - "cell_type": "markdown", - "id": "bdd7ccd6", - "metadata": {}, - "source": [ - "*Réponse*: \n", - "\n", - "Erreur Absolue Moyenne (MAE)\n", - "La MAE représente l'écart absolu moyen entre les prédictions du modèle et les valeurs réelles. Une MAE de 5950.05 signifie qu'en moyenne, notre modèle commet une erreur de cette magnitude, dans l'unité de la variable cible. C'est l'indicateur le plus direct de l'erreur de prédiction moyenne.\n", - "\n", - "Racine de l'Erreur Quadratique Moyenne (RMSE)\n", - "La RMSE est la racine carrée de la moyenne des erreurs au carré ($RMSE = \\sqrt{MSE}$). En raison de l'opération de mise au carré, cette métrique est particulièrement sensible aux grandes erreurs. La valeur obtenue est de 12651.79." - ] - }, - { - "cell_type": "markdown", - "id": "7ecba832", - "metadata": {}, - "source": [ - "## Algorithme supervisé : Random Forest " - ] - }, - { - "cell_type": "markdown", - "id": "efcb8987", - "metadata": {}, - "source": [ - "A ce stade, nous avons vu les différentes étapes pour lancer un algorithme de Machine Learning. Néanmoins, ces étapes ne sont pas suffisantes pour construire un modèle performant. \n", - "En effet, afin de construire un modèle performant le Data Scientist doit agir sur l'apprentissage du modèle. Dans ce qui suit nous :\n", - "* Changerons d'algorithme pour utiliser un algorithme plus performant (Random Forest)\n", - "* Raliserons un *grid search* sur les paramètres du modèle\n", - "* Appliquerons l'apprentissage par validation croisée\n" - ] - }, - { - "cell_type": "markdown", - "id": "d6723a2f", - "metadata": {}, - "source": [ - "### Modèle avec Validation Croisée" - ] - }, - { - "cell_type": "markdown", - "id": "3716b09f", - "metadata": {}, - "source": [ - "#### Sampling" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "ab1e1367", - "metadata": {}, - "outputs": [], - "source": [ - "X = data_model_preprocessed\n", - "Y = data_model[\"CM\"]\n", - "\n", - "X_train, X_test, y_train, y_test = train_test_split(\n", - " X, Y, test_size=0.2, random_state=42\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "3f5d735e", - "metadata": {}, - "source": [ - "#### Fitting avec Cross-Validation" - ] - }, - { - "cell_type": "markdown", - "id": "bc819f8f", - "metadata": {}, - "source": [ - "**Exercice :** construisez un modèle RF (RandomForestRegressor) en implémentant la technique de validation croisée. Pensez à enregistrer au sein d'une variable/liste les performances (MAE, MSE & RMSE) du modèle au sein de chaque fold." - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "b515460e", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialisation\n", - "# Nombre de sous-échantillons pour la cross-validation\n", - "num_splits = 5\n", - "\n", - "# Random Forest regressor\n", - "rf_regressor = RandomForestRegressor(n_estimators=100, random_state=42)\n", - "\n", - "# Initialisation du KFold cross-validation splitter\n", - "kf = KFold(n_splits=num_splits)\n", - "\n", - "# Listes pour enregistrer les performances du modèle\n", - "MAE_scores = []\n", - "MSE_scores = []\n", - "RMSE_scores = []" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "eebb394f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Validation croisée terminée avec 5 folds\n" - ] - } - ], - "source": [ - "# Entrainement avec cross-validation\n", - "for train_index, val_index in kf.split(X_train):\n", - " X_train_fold, X_val_fold = X_train.iloc[train_index], X_train.iloc[val_index]\n", - " y_train_fold, y_val_fold = y_train.iloc[train_index], y_train.iloc[val_index]\n", - "\n", - " rf_regressor.fit(X_train_fold, y_train_fold)\n", - " y_pred_fold = rf_regressor.predict(X_val_fold)\n", - "\n", - " mae = metrics.mean_absolute_error(y_val_fold, y_pred_fold)\n", - " mse = metrics.mean_squared_error(y_val_fold, y_pred_fold)\n", - " rmse = metrics.root_mean_squared_error(y_val_fold, y_pred_fold)\n", - "\n", - " MAE_scores.append(mae)\n", - " MSE_scores.append(mse)\n", - " RMSE_scores.append(rmse)\n", - "\n", - "print(f\"Validation croisée terminée avec {len(MAE_scores)} folds\")" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "b067126c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fold 1 MAE: 4472.5486946969695\n", - "Fold 2 MAE: 3859.4743234848484\n", - "Fold 3 MAE: 3633.0231541666662\n", - "Fold 4 MAE: 3888.3910715909087\n", - "Fold 5 MAE: 4808.59621832061\n" - ] - } - ], - "source": [ - "# Métriques sur tous les folds\n", - "\n", - "#MAE\n", - "for fold, mae in enumerate(MAE_scores, start=1):\n", - " print(f\"Fold {fold} MAE:\", mae)" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "6597152c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fold 1 MSE: 85464414.44080053\n", - "Fold 2 MSE: 34396997.21755034\n", - "Fold 3 MSE: 55184512.50786593\n", - "Fold 4 MSE: 33191300.80751679\n", - "Fold 5 MSE: 68739370.63588645\n" - ] - } - ], - "source": [ - "#MSE\n", - "for fold, mse in enumerate(MSE_scores, start=1):\n", - " print(f\"Fold {fold} MSE:\", mse)" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "63ff1c9d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fold 1 RMSE: 9244.696557529649\n", - "Fold 2 RMSE: 5864.895328780415\n", - "Fold 3 RMSE: 7428.62790210049\n", - "Fold 4 RMSE: 5761.189183451346\n", - "Fold 5 RMSE: 8290.9209763383\n" - ] - } - ], - "source": [ - "#RMSE\n", - "for fold, rmse in enumerate(RMSE_scores, start=1):\n", - " print(f\"Fold {fold} RMSE:\", rmse)" - ] - }, - { - "cell_type": "markdown", - "id": "ec1961c2", - "metadata": {}, - "source": [ - "**Question :** Commentez les résultats." - ] - }, - { - "cell_type": "markdown", - "id": "5a8163ef", - "metadata": {}, - "source": [ - "### Ajout d'un Grid Search pour les hyper paramètres" - ] - }, - { - "cell_type": "markdown", - "id": "5a6adbfe", - "metadata": {}, - "source": [ - "#### Sampling" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d9342ad6", - "metadata": {}, - "outputs": [], - "source": [ - "X = data_model_preprocessed\n", - "Y = data_model[\"CM\"]\n", - "\n", - "X_train, X_test, y_train, y_test = train_test_split(\n", - " X, Y, test_size=0.2, random_state=42\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "dce52b11", - "metadata": {}, - "source": [ - "#### Fitting avec Cross-Validation et *Grid Search*" - ] - }, - { - "cell_type": "markdown", - "id": "7e3a9dd0", - "metadata": {}, - "source": [ - "**Exercice :** Intégrez la technique de Grid Search pour rechercher les paramètres optimaux du modèle." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6d58dbc2", - "metadata": {}, - "outputs": [], - "source": [ - "#Initialisation\n", - "# Nombre de sous-échantillons pour la cross-validation\n", - "num_splits = 5\n", - "\n", - "# Initialisation du KFold cross-validation splitter\n", - "kf = KFold(n_splits=num_splits)\n", - "\n", - "# Listes pour enregistrer les performances du modèle\n", - "MAE_scores = []\n", - "MSE_scores = []\n", - "RMSE_scores = []\n", - "\n", - "# Hyperparamètres à tester\n", - "n_estimators_values = []\n", - "max_depth_values = []\n", - "min_samples_split_values = []\n", - "\n", - "# Liste pour sauveagrder les meilleurs résultats\n", - "best_score = np.inf\n", - "best_params = {}\n", - "\n", - "MAE_best_score = []\n", - "MSE_best_score = []\n", - "RMSE_best_score = []" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "47da5172", - "metadata": {}, - "outputs": [], - "source": [ - "#Complétez ici avec votre code\n", - "for n_estimators in n_estimators_values:\n", - " for max_depth in max_depth_values:\n", - " for min_samples_split in min_samples_split_values:\n", - " rf_regressor = RandomForestRegressor(\n", - " n_estimators=n_estimators,\n", - " max_depth=max_depth,\n", - " min_samples_split=min_samples_split,\n", - " random_state=42\n", - " )\n", - " MAE_scores = []\n", - " MSE_scores = []\n", - " RMSE_scores = []\n", - "\n", - " for train_index, val_index in kf.split(X_train):\n", - " X_train_fold, X_val_fold = X_train.iloc[train_index], X_train.iloc[val_index]\n", - " y_train_fold, y_val_fold = y_train.iloc[train_index], y_train.iloc[val_index]\n", - "\n", - " rf_regressor.fit(X_train_fold, y_train_fold)\n", - " y_pred_fold = rf_regressor.predict(X_val_fold)\n", - "\n", - " mae = metrics.mean_absolute_error(y_val_fold, y_pred_fold)\n", - " mse = metrics.mean_squared_error(y_val_fold, y_pred_fold)\n", - " rmse = metrics.root_mean_squared_error(y_val_fold, y_pred_fold)\n", - "\n", - " MAE_scores.append(mae)\n", - " MSE_scores.append(mse)\n", - " RMSE_scores.append(rmse)\n", - "\n", - " avg_mae = np.mean(MAE_scores)\n", - " avg_mse = np.mean(MSE_scores)\n", - " avg_rmse = np.mean(RMSE_scores)\n", - "\n", - " if avg_rmse < best_score:\n", - " best_score = avg_rmse\n", - " best_params = {\n", - " 'n_estimators': n_estimators,\n", - " 'max_depth': max_depth,\n", - " 'min_samples_split': min_samples_split\n", - " }\n", - " MAE_best_score = MAE_scores\n", - " MSE_best_score = MSE_scores\n", - " RMSE_best_score = RMSE_scores" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "d4936c46", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Meilleurs paramètres: {}\n", - "Meilleure RMSE : inf\n" - ] - } - ], - "source": [ - "# Meilleurs résultats\n", - "print(\"Meilleurs paramètres:\", best_params)\n", - "print(\"Meilleure RMSE :\", best_score)" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "3215c463", - "metadata": {}, - "outputs": [], - "source": [ - "# Métriques sur tous les folds\n", - "\n", - "#RMSE\n", - "for fold, rmse in enumerate(RMSE_best_score, start=1):\n", - " print(f\"Fold {fold} RMSE:\", rmse)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "id": "bb9a5c9b", - "metadata": {}, - "outputs": [], - "source": [ - "#MAE\n", - "for fold, mse in enumerate(MSE_best_score, start=1):\n", - " print(f\"Fold {fold} MSE:\", mse)" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "id": "0f0768ad", - "metadata": {}, - "outputs": [], - "source": [ - "#MSE\n", - "for fold, mae in enumerate(MAE_best_score, start=1):\n", - " print(f\"Fold {fold} MAE:\", mae)" - ] - }, - { - "cell_type": "markdown", - "id": "802a625f", - "metadata": {}, - "source": [ - "**Question :** Commentez les résultats" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "studies", - "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.13.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + }, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/M2/Risks Management/TP1/portef_v3_4_2.ipynb b/M2/Risks Management/TP1/portef_v3_4_2.ipynb index 7d0824a..598b91c 100644 --- a/M2/Risks Management/TP1/portef_v3_4_2.ipynb +++ b/M2/Risks Management/TP1/portef_v3_4_2.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "c2ee7763", "metadata": {}, "outputs": [], @@ -11,12 +11,12 @@ "import numpy as np\n", "import pandas as pd\n", "from scipy.special import softmax\n", - "from scipy.stats import kstest, normaltest # type: ignore" + "from scipy.stats import kstest, normaltest" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 23, "id": "369319f6", "metadata": {}, "outputs": [ @@ -45,7 +45,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 24, "id": "04ef8bd1", "metadata": {}, "outputs": [ @@ -103,7 +103,7 @@ "(0, 40)" ] }, - "execution_count": 10, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -137,7 +137,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "a8752573", "metadata": {}, "outputs": [ @@ -203,7 +203,7 @@ "(26, 14)" ] }, - "execution_count": 11, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, @@ -223,14 +223,14 @@ "# returns = data.pct_change() #actuarial\n", "returns = np.log(data/data.shift(1))\n", "\n", - "_ = returns.hist(bins = int(np.sqrt(returns.shape[0])), figsize = (15,15)) # type: ignore\n", + "_ = returns.hist(bins = int(np.sqrt(returns.shape[0])), figsize = (15,15))\n", "\n", - "normality_test(returns.tail(25*3)) # type: ignore # test last 3 months" + "normality_test(returns.tail(25*3)) # test last 3 months" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 26, "id": "c6e5a552", "metadata": {}, "outputs": [ @@ -289,7 +289,7 @@ "(31, 9)" ] }, - "execution_count": 12, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, @@ -314,31 +314,33 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "dc693457", "metadata": {}, "outputs": [], "source": [ - "nb = 10 #will work with nb stocks\n", + "nb = 25 #will work with nb stocks\n", "all_returns = returns.copy() #backup\n", "nb_all = all_returns.shape[1]\n", + "\n", "if (nb > nb_all):\n", " print(\"too many number of stocks, revert to max\")\n", " nb = nb_all\n", + "\n", "#choose the stock names\n", - "nb_stocks_names = np.random.choice(all_returns.keys(), nb, replace=False) # type: ignore\n", - "returns_small = all_returns.loc[:, nb_stocks_names] # type: ignore" + "nb_stocks_names = np.random.choice(all_returns.keys(), nb, replace=False)\n", + "returns_small = all_returns.loc[:, nb_stocks_names]" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "efeaa5cb", "metadata": {}, "outputs": [ { "data": { - "image/png": "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fv16NGvWDFFRUWjRogW2bNli9bdARIUgvDDehIjILo4fP47ExESMGTMG9957L86fP49ffvkFDz/8MA4dOoTU1FRMmzZNPbd06dK4cOEC7r77btxxxx34/PPPsX//fjz11FNWfxtEVAgYooiI8oWozMxM3HfffahWrZp6THqlhPRMpaenIyEhIef86dOnIzs7Gx9//LHaE9WgQQMcOXIETzzxhGXfAxEVDg7nERE5aNKkCdq3b68Gp549e2LKlCk4d+6cy/N3796Nxo0bqwFK17p160JqLRFZiSGKiMhB0aJFsWTJEixevBj169fH+PHjcd1116nDdEREjhiiiIjykUnjbdu2xauvvqpOEo+IiMDXX3+tfs7Kyspzbr169bBt2zakpaXlHFu7dq0FrSaiwsYQRUTkYN26dfjvf/+LjRs3qhPJv/rqK5w6dUoNS9WrV1cD0549e3D69GlcuXIFvXv3VkPXoEGDsGvXLixatAhjx461+tsgokLAEEVE5CA2NhYrV65E586dUadOHYwYMQLvvPMO7rrrLjUoydCelDEoV64cVq1ahRIlSuC7777D9u3b1TIH//73v/HWW29Z/W0QUSEIUxRFKYw3IiIiIgom7IkiIiIiMoAhioiIiMgAhigiIiIiAxiiiIiIiAxgiCIiIiIygCGKiIiIyACGKCIiIiIDGKKIiIiIDGCIIiIiIjKAIYqIiIjIAIYoIiIiInjv/wFJj1ZwqZrihgAAAABJRU5ErkJggg==", + "image/png": "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xsbqJQ/WrFmT/VrLli21Pn36WLWfNWuWVrVqVb19rVq1tAULFli9LmUOhg8frgdBEqC1bt1a2717t1WbM2fO6EFToUKFtMTERK1v377axYsXrdps2bJFu/XWW/VzlC1bVg/O3MEgioiIKPi4ev+OkP+YPRoWqmQaUVbpSZI586OIiIhC6/7N1XlEREREHmAQRUREROSBaE++iFxjzJSycjkREVHwMO7beWU8MYjyoYsXL+ofWbmciIgoOO/jkhvlCBPLfUjqTh07dgyFCxdGRESEw2hXgiypbs7kc9fwmrmP18x9vGbu4fVyH69Z4F4zCY0kgCpTpoy+r64jHInyIbnw119/vUttWeHcfbxm7uM1cx+vmXt4vdzHaxaY18zZCJSBieVEREREHmAQRUREROQBBlEmk02LR44cqX8k1/CauY/XzH28Zu7h9XIfr1nwXzMmlhMRERF5gCNRRERERB5gEEVERETkAQZRRERERB5gEEVERETkAQZR+TRx4kRUrFgRBQoUQOPGjbFu3Tqn7WfPno3q1avr7WvXro2FCxdavT5nzhy0bdsWxYsX16ucb968Odc5rly5gkGDBultChUqhHvuuQcnT55EsPD3NTt79iwef/xxVKtWDfHx8ShfvjyeeOIJpKamIliY8XNmkLUnHTp00Nt98803CBZmXbPVq1fjjjvuQEJCgl4M8LbbbsPly5cR6My4XidOnEDv3r2RnJysX6+bb74ZX3/9NYKFN6/ZtWvX8Oyzz+rH5VpIpez7779f3/XC9vdZz5499Z+tIkWKoF+/fkhLS0OwmOjna3bw4EH9GlWqVEn//X/jjTfqq/uuXr3qnW9IVueRZ2bMmKHFxsZqU6ZM0X7//Xetf//+WpEiRbSTJ0/abb9y5UotKipKGzt2rLZjxw7thRde0GJiYrRt27Zlt/n000+1F198Ufvwww9l1aS2adOmXOd5+OGHtXLlymlLly7V1q9frzVp0kRr1qyZFgzMuGbStmvXrtr8+fO1ffv26detSpUq2j333KMFA7N+zgxvvvmm1qFDB73d3LlztWBg1jVbtWqVlpiYqI0ZM0bbvn27tmvXLm3mzJnalStXtEBm1vW68847tVtuuUVbu3attn//fm306NFaZGSktnHjRi3QefuanT9/XmvTpo3+8yI/N6tXr9YaNWqkNWjQwOo87du31+rW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", "text/plain": [ "
" ] @@ -353,6 +355,7 @@ "cov_matrix = returns_small.cov()\n", "rdt_list = []\n", "std_list = []\n", + "\n", "for _ in range(500):\n", " #sample at random some \"allocation\"\n", " allocation = np.random.randn(nb)\n", @@ -364,14 +367,17 @@ "\n", "\n", "inverse_cov = np.linalg.inv(cov_matrix)\n", + "\n", "# compute and draw the efficient frontier on the same graph\n", "onesM = np.ones_like(mean_returns)\n", + "\n", "#compute 'a' and 'b' using formulas from the course\n", "a = onesM.T @ inverse_cov @ onesM\n", "b = onesM.T @ inverse_cov @ mean_returns\n", "\n", "# plot the frontier and its symmetric w/r to origin\n", "sigmarange = np.linspace(1. / np.sqrt(a) + 1.e-10, 1.1 * np.max(std_list), 47)\n", + "\n", "# compute the return of the optimal portfolio for sigma in sigmarange\n", "# will use the \"factor\" auxiliary variable\n", "factor = np.sqrt((mean_returns - b / a * onesM).T @ inverse_cov @ (mean_returns - b / a * onesM))\n", diff --git a/M2/Risks Management/TP1/portef_v3_4_2.py b/M2/Risks Management/TP1/portef_v3_4_2.py deleted file mode 100644 index e5c86b5..0000000 --- a/M2/Risks Management/TP1/portef_v3_4_2.py +++ /dev/null @@ -1,144 +0,0 @@ -""" -Created on Thu Oct 3 15:57:44 2024 - -@author: turinici -""" - - -""" -This program uses historical data in the format in : - https://turinici.com/wp-content/uploads/cours/common/close_cac40_historical.csv - -It can also be downloaded form yahoo finance in daily -prices (at least the "close") if possible at lest 5 years - -Idea: use yahoo e.g., yfinance package -"pip install yfinance" - - -Then the code does : - -1'/ order by increasing date - -2/ plot price histogram and returns (with "log" and/or "actuarial") - -3/ test normality of : prices, log returns, actuarial returns - for instance can use scipy.stats.normaltest - -4/ shows the random versus optimal results - -TODO : replace "None" by what is required to implement the task. - -""" -import matplotlib.pyplot as plt -import numpy as np -import pandas as pd -from scipy.stats import kstest, normaltest # type: ignore - -#from scipy.special import softmax - -# take csv from www course :we suppose it is available locally)) -data = pd.read_csv('M2/Risks Management/TP1/close_cac40_historical.csv', sep=';', index_col = 'Date') -data.head() -# order by increasing date, keep variable 'data' -data = data.sort_index(ascending=True) -data.head() -data.tail() - -# plot histogram of prices -_ = data.hist(bins=30, figsize = (15,15)) - -def normality_test(data,kolmogorov_smirnov=False,level=0.01,print_results=True): - """ - Tests normality of each column of dataframe "data". - Inputs: - kolmogorov_smirnov= false: use "normaltest", otherswise use kstest, both from scipy.stats - level = p-value threshold level for the conclusions - - Outputs: the number of yes/no in the results - """ - - pvalues = [] - for cols in data.keys(): - pv = kstest(data[cols].dropna(), 'norm', args=(data[cols].mean(), data[cols].std())).pvalue if kolmogorov_smirnov else normaltest(data[cols].dropna()).pvalue - pvalues.append(pv) - res = 'normal' if pv >= level else 'not normal' - print("Test pval=", pv, 'res=', res) - normalok = sum([1 for pv in pvalues if pv >= level]) - normalnotok = sum([1 for pv in pvalues if pv < level]) - if (print_results): - print("no. of normal = ", normalok) - print("no. of not normal = ", normalnotok) - return normalok, normalnotok - -normality_test(data) - -# use 'data' to compute returns -# returns = data.pct_change() #actuarial -returns = np.log(data/data.shift(1)) - -_ = returns.hist(bins = int(np.sqrt(returns.shape[0])), figsize = (15,15)) # type: ignore - -normality_test(returns.tail(25*3)) # type: ignore # test last 3 months - -########################################################### -print('normality tests for increments, not returns!!') -increments = data - data.shift(1) -_ = increments.hist(bins=int(np.sqrt(increments.shape[0])), figsize = (15,15)) - -normality_test(increments.tail(25*3)) -######################################################################## - - - -#%% -nb = 10 #will work with nb stocks -all_returns = returns.copy() #backup -nb_all = all_returns.shape[1] -if (nb > nb_all): - print("too many number of stocks, revert to max") - nb = nb_all -#choose the stock names -nb_stocks_names = np.random.choice(all_returns.keys(), nb, replace=False) # type: ignore -returns_small = all_returns.loc[:, nb_stocks_names] # type: ignore - -#%% -#compute avg and cov of returns -mean_returns = returns_small.mean() -cov_matrix = returns_small.cov() -rdt_list = [] -std_list = [] -for _ in range(500): - #sample at random some "allocation" - allocation = np.random.random(nb) - rdt_port = allocation@mean_returns - std_port = np.sqrt(allocation@cov_matrix@allocation) - rdt_list.append(rdt_port) - std_list.append(std_port) - - -inverse_cov = np.linalg.inv(cov_matrix) -# compute and draw the efficient frontier on the same graph -onesM = np.ones_like(mean_returns) -#compute 'a' and 'b' using formulas from the course -a = onesM.T @ inverse_cov @ onesM -b = onesM.T @ inverse_cov @ mean_returns - -# plot the frontier and its symmetric w/r to origin -sigmarange = np.linspace(1. / np.sqrt(a) + 1.e-10, 1.1 * np.max(std_list), 47) -# compute the return of the optimal portfolio for sigma in sigmarange -# will use the "factor" auxiliary variable -factor = np.sqrt(sigmarange**2 - 1. / a) -optimal_return = b / a + np.sqrt(sigmarange**2 - 1. / a) * factor - -fig = plt.figure('perf') -plt.scatter(std_list, rdt_list) -plt.plot(sigmarange, optimal_return, 'r-') -plt.xlabel('std') -plt.ylabel('rdt') -#plt.xlim([0,.2]) -#plt.ylim([-.05,.05]) -plt.show() - - -# %% diff --git a/M2/Risks Management/TP1/portef_v3_4_3.ipynb b/M2/Risks Management/TP1/portef_v3_4_3.ipynb new file mode 100644 index 0000000..6967338 --- /dev/null +++ b/M2/Risks Management/TP1/portef_v3_4_3.ipynb @@ -0,0 +1,606 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "62fa0297", + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"\n", + "\n", + "@author: Gabriel Turinici 2025\n", + "\"\"\"\n", + "\n", + "\"\"\"\n", + "This program uses historical data in the format in :\n", + " https://turinici.com/wp-content/uploads/cours/common/close_cac40_historical.csv\n", + "\n", + "It can also be downloaded form yahoo finance in daily\n", + "prices (at least the \"close\") if possible at lest 5 years\n", + "\n", + "Idea: use yahoo e.g., yfinance package\n", + "\"pip install yfinance\"\n", + "\n", + "\n", + "Then the code does :\n", + "\n", + "1'/ order by increasing date\n", + "2/ plot price histogram and returns (with \"log\" and/or \"actuarial\")\n", + "3/ test normality of : prices, log returns, actuarial returns\n", + " for instance can use scipy.stats.normaltest\n", + "4/ shows the random versus optimal results\n", + "5/ show what a backtest would obtain : compute market portfolio from T-6Y,T-1Y data\n", + "(last 5 years of data before this last year)\n", + "6/ compute performance of estimated market portfolio on the T-1Y,T data (last year data)\n", + "7/ compare with random choices\n", + "\n", + "\"\"\"\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from scipy.stats import kstest, normaltest" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3202bb04", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABMsAAATFCAYAAAC+Z1HSAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QmcU9X5//GHYd8RlK0CUqvsAgXFBRGRRUWqQm1dQaWgFFTABVFEFllEBURRqkWoFYvwL26gyCKCsojaWlmUgktR2awKCMie/+t7ftw0yWRmMkMyyU0+79crr0ySO5l7M/fk3vuc5zynSCAQCBgAAAAAAAAAy0r2CgAAAAAAAACpgmAZAAAAAAAAcAzBMgAAAAAAAOAYgmUAAAAAAADAMQTLAAAAAAAAgGMIlgEAAAAAAADHECwDAAAAAAAAjiFYBgAAAAAAABxDsAwAAAAAAAA4hmAZAAAAAAAAcAzBsjTy1FNPWZEiRaxVq1ZRX9dr/fr1y/N9TjnlFLesd6tataqdf/759vLLL0dd/qyzznLLPf3008e9DUCy2sNXX30Vtt9nZWVZ5cqV7ZJLLrGVK1fG9DdpO8ikY8W6devs+uuvt1/84hdWsmRJq1mzpl133XXu+Vi0bds2rL2ovZ155pn23HPP2dGjR7Mt/7vf/c4tN2jQoJjeH4iH6dOnB/fR9957L9vrgUDAatWq5V6/7LLL7MYbbwzbr3O6abnc3HPPPW653//+9zku891339kdd9xh9evXt9KlS7tjjo4raiN79uyJy/YD+fH555/bLbfcYr/85S+tVKlSVqFCBTvvvPPs8ccft59//tktc/DgQfe4efPm7vVKlSpZo0aNrHfv3vbZZ5/l+v6R52pFixa12rVr25VXXmkff/xxtuV37tzp1kPLfvrppwnbbiC3Y0fodcGFF15ob775Ztiy3uuPPfZYju/z4YcfBp8bNmxY2PuWKVPGGjZsaEOGDLHdu3dHXR/OuQqmWAF/DyloxowZ7mJ99erVtmnTJvvVr35V4Pdq1qyZ3Xnnne7nLVu22J/+9Cfr2rWru6i/9dZbg8tt3LjRPvjgA/d39ff79OkTl20BktUerrnmGrv00kvtyJEj9u9//9sFFnRg037epEmTPH+ftoNMOFbMmTPHtRWdbPXs2dPq1q3rLmKmTp1q/+///T+bOXOmu3jJy8knn2xjxowJXvg///zz7v3U9saOHRtcTid/r7/+ulvvv/3tb+41ncQBhUUX3C+++KK1bt067PmlS5faN9984wLGokBB+/btg69/+eWXNnToUBcIUOeJ59RTT83xbykAp/1c+7v2+59++snKly8ftswPP/xgLVu2dG3j5ptvdgGz77//3j755BN3vNExpVy5cnH8BIDczZs3z6666irXFrp3726NGzd2gTEFme+++27XkfLMM89Yt27dXLBAx5BevXrZoUOHXJBs7ty5du6557p9OT/nagqCaZ/Xe65atcqdh3lmz57tjhXVq1d3x76HHnoowZ8CEG7EiBHuHEnf69u3b3fBL+27+m5XB0uoRx55xH13K/gVC+33+p5X58iCBQts1KhR9vbbb9vy5cujniNxzlUAAaSFL774IqB/55w5cwInnXRSYNiwYdmW0et9+/bN873q1KkT6Ny5c9hzW7duDZQtWzZw+umnhz0/dOjQQNWqVQN///vfA0WKFAl8+eWXcdgaoPDbg/ZdPffII4+ELffmm2+65/v06ZPn36XtIBOOFZs2bQqUKVMmUL9+/cCOHTvCXvvuu+/c89rnP//881zX5YILLgg0atQo7Lm9e/cGTj75ZPf7Bw8eDD7/3HPPBYoXLx54++233fq98847+dhqoOCmTZvm9rmuXbsGTjzxxMChQ4fCXu/Vq1egRYsWUb//5YMPPnC/r/eJlbef6177/fTp07MtM27cOLfM8uXLs722a9euwM8//xzz3wPicWwpV66c+/7fsmVLttc3btwYmDhxYmD16tVuvx01alS2ZQ4fPhz473//m+vfyelc7bXXXnPP9+7dO+z5Nm3auLY7YMCAQN26dQu8fUBBjx06BoT64Ycf3Pf6tddeG3xOyzVr1szdP/bYY3m+z4MPPuie0zlXKO3ren7FihXZ1odzroJhGGaaUG/JCSecYJ07d7bf/va37nE8qUemQYMGroc0lHpZ9fcUGa9YsaJ7DKRTe/AyATS0oCBoO0i3tqGez3379rkMgZNOOinstRNPPNFlU+7du9fGjRuX7/dWb+rZZ5/tfl+9nqHr3aFDB5flqfYU72McEEsmizK3Fi5cGHxOWTPKpLz22mvj+re0f2tIjfZ3ZalF2991TNIQNLWXSBrapkw4oLDo+17ZLcourlGjRrbXlcGsIcPeuZSGZkbS/lyl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YKksnY+5SP39KxqdD4l3TeoXezLl+JbsGQbS3Z133hl45513Al9++WVg+fLlgfbt2wdOPPFENzuG3HrrrYHatWsH3n777cCHH34YOOecc9wtL9OmTXMzTOR082ae8B4/+uijOb6HN7uQZiz75z//6W56fvz48e7nmTNnhr130aJFA7/4xS8CJ598srv9/PPPwfe8+OKLAw0aNHDLlShRIvDLX/4ycM011wQSLad1/89//uNeu+uuu9xnov/DokWLAr/+9a/d7Gz79+8PW/fmzZsH3n///cB7773nXi+MdU8m/W8149T06dPdbFO9e/cOVKpUKbBt27aAn9vZueeeGyhVqpRrW9o+zdCi/VGzTul/G9rODh8+HKhRo4bbb954440cZ4AJbQOlS5d2+/n9998f2LVrV9Tf0Ww3ob9zwgknBFq2bBmYOnWqm/Eq0lVXXeWW69+/f477sowdO9b9j1599dXAJ5984mZ5rVu3brZ2mGn7sl/16dMnULFiRbf/bt26NXjbt29fcJmCHifyY9OmTa79a19SmylfvrxrRxMnTgxbl1jbTKztSO2iQoUKgddffz3btk2ePNktpxnjUs3q1asDxYoVC4waNSqwcePGwIwZMwJlypQJvPDCC8FlYmmrSE2x7Hs6TurYU69ePbcv6/9ftWrVwM033xz417/+FfWc76STTnLvq5nQYm3Lked7ap/6TtfxLNqxet68eW45tdFox5pkyO0cLZOPa+lyDhbtmkT7etu2bbMdI/JzXZKTJUuWhP0tfRdrf7nhhhsCn3/+ebblvdlU9VmrfabCMReZcU6nc6jQfVXXIjq/OvvsswNDhw51M/7qWrlNmzbB93j33Xfd951mxtU+W6tWrcBll13mzjNEv6P3mjJlStR10P6rNvHxxx+HPR+6HppJWMeIDh06uPYUKdp53p0JimmkOoJlCfb73//e7WxqHAow6bEuSjw6EfjjH//oLhh0onXllVe6xpUX74AyYsSIwF//+tdst++++84t5zWKatWqBfbu3ZvrQSny4OPdOnXq5O5vu+02dwKjC5usrCzX0HRQD522+/vvvw80bNjQvabfOe+889xJUqLltO49evRwB8COHTu6A7eCJnXq1An06tUr28mI1l0nXuXKlXPbeNNNNxXKuifbE0884b7ctI/qwmDVqlUBP7ezKlWquICu/oe3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psjngHiLZd9Tcf7WrVvH/J6HDh1y50ualduj91L9stDn8jv7uerczJ8/P7icasuo8LLqRIUWj498DiiMaxLNDKwi5Cpgrjp9Hq5LkEli2adVA1OTkHn0va4aYjq38vZtzZipGSijUVF9bxKy3ERrM5qkRvX8vJmTj/c8Lx2FDyKH75x11lnWsmXLmJZt06aN68VRjYBbb701339L0W31BGkImcY3q7ZSaB0CRaLr1q3rsmSUDiqKjCuDRr04o0ePzvffBGJVoUKFYE9jLNQzr17H5s2bB/dXUe+M9te+fftm+52///3v7u8UL17c9QZp/86Nago8++yzrqezVKlSdtppp4XVHFCGwj//+U/r3r172Doo5Xny5Mku88fbLsCPbSaa3NqRejhnzpzpjlWhNTT0Nx577DE3PKFjx4752EogNrHue9p3Y20z4vXI63wttN3o7yiz+OGHH7asrLwHeuiYoIw2nXcpE7NevXphv6dzMP0NleLwynGorWpIv7JrevfunY9PAzj+axINO9Y+2K9fP5cBGZmNyXUJYG7IY+i1QadOndxt3759LttZ515TpkxxbUiZz6HLioYYSyzxAI1iUXvUdUn58uWtUaNGVrZs2bif56UTgmUZ5sEHH3QX4ipQ69VMipWG6ijFOhpd1KsuhtI7FRCIpEK2o0aNco0TSARdwNSsWdPWrl0b0/JeGr43LCZabTHVcoo8sdMJWax0AMqpzYhX0FN1B3SLFlS46aabYv57QKq1mWhya0dvv/22G1KjoIVu0daBYBkSIdZ9T0X9NXxSQahYhmJ67UaFkqNZunSpCxgcT+doaF21aOdgWgeCZShsCuZq33788cfdPqoL80hclyCTaVi9hthrMqVICuoqGKybzpmGDx9ub775pvXo0aPAf08dlLldl8TrPC+dECzLMBdccIE7KKknUz0y8eLNuKRCnZEXQRs2bHAzQ2lGGtX/ABJFvS4av79y5UpXqyUnyhpYsWKF611RmwilugAquKkTqWgzmsWLMqL1N3Qi+cc//jHb6yNHjnQHLYJlyKQ2o31evabKool2nNEMTephVe0ZIJ5i3fdUJFztRZ0Z3sQsOdHMx5pF7Pe//33UCQFuv/32YFH+4113ZWr+9a9/dVk2oVTvRrOkbd682dUxAwrT4cOHg9kz0XBdgkym72xRJlluvI4SdegkSipcG6WkZI8DRcHEOq4/tDaA55133nHPN2vWLNt77Ny5M/Dpp5+6+8jaALNnz87x71x00UVuPHU0+/fvD5QrVy5w66235mMLgfzbtGlToGzZsoGGDRsGtm3bFvX1iRMnBkaOHOn26c2bN0d9nw4dOgTq16+frdZSaK2xyPfVLbJmmWox5eTdd9917xlaXyPUqFGjAllZWYFvv/02x/cAUrXNbNmyxR1LDh48GHM72rdvX6B8+fKBm2++Oerrqteh3585c2YBthTIWX72PdX/qlGjhrtt2LAh27Lbt2937UX++te/ut9btmxZ1Pft1atXoFKlSu48SdQ21G727t2br/M91btp165d1Ne++eYbVy9z7NixeXwKQMHktI/q+/+0005zdfN27drlnuO6BJkkt+/vxYsXB0qXLh2oW7du4Oeff3bPLVq0KOr79OnTx73PnDlz8vwbandqMzoPCxWt7YXK73lepmA2TJ9TOqaGckXelCaZE0WLdYs2C5N6TjXmX/ex2rJliy1ZssTNMBONagUoYq6aGRoHDSSKalGo10P7v/bj/v3725///Gc3256mLm/YsKGbgUy98M2aNQvO9BJJ+7LqAmjmylhcdNFF7pYfWgdlAHTu3DnHdVBPTrThQECqt5nBgwe799Nsm7HSdOWqBZXTseTss892M60xkxniLT/73gknnODOkQ4cOODahIY3agiZbrfccosbTvPuu++639PyVapUcTOLRaO/t3PnTps3b557/OSTT7p2o1nKYvX++++72jI5rbtmSP/1r39Nu0GhXpOMHz/eZStr+OXAgQNzrb/KdQkypW1ohlhlUWr/03BI1Z/U8Ud1jb2aYhpefN9999nUqVNdVrD2Y2VIqjaZMpvzovMutRmdh+VHvK+N0gXBMp9TyrLSIiNvy5Yty/X3hg0bFrd10MW8Lupza8B6TQVn9WUBJJK+zD/55BM35EXDX1SM8t5777WvvvrKFWm++eab3Zd9XvtraE2xePOmM9cFVOXKlaMuo2nXVZg2UesApFqb0YmaThg7dOiQY/0bBZfnz58fLGAOxEN+9z0VO1atPxUlV80xBZkVEFAxZrUdfb/v2LHDFi1aZJdeemm2oZEedbKoLs3xthvJq32uWbPGtXOgMK5J7r//fjdphi7yYymkz3UJMqFtqENl4sSJrhSL7vWdrPN9jzor9XjWrFl2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AmWi5bOyslwm2pVXXumWadOmjQuUeZSd9vDDD9uPP/5oJ5xwQra/feDAAXcLzU6TQ4cOBW/e45yULBrI9lxuy/tJLNufzg4lcPvz854EywAAAAAAyCAKlIkyyULpsfea7qtWrRr2erFixaxy5cphy9StWzfbe3ivRQuWjRkzxoYPH57t+QULFliZMmWCjzX0Myfjzsr+3BtvvGHpJLftzwQLE7D9+/bti3lZgmUAAAAAAKBQDB482AYOHBiWWaaJAVT7TBMJKPtHgZIOHTpY8eLFc5wNPNLaYZ0sHcSy/ensUAK338tijAXBMgAAAAAAMkj16tXd/fbt291smB49btasWXCZHTt2hP3e4cOH3QyZ3u/rXr8TynvsLROpZMmS7hZJgZHQ4Ejk41AHjhSJ+vvpJLftzwTFE7D9+Xk/gmUAAAAAkCSn3Dsv2auADKShkwpmLV68OBgcU9aNapH16dPHPT7nnHNs586dbpbLFi1auOfefvttO3r0qKtt5i1z//33u2wgLxChrKB69epFHYIJ+EVWslcAQPqd8EXeAAD5s2zZMuvSpYubaaxIkSJuZrLIWcyGDh3qsgFKly7tCi5v3LgxbBn1/F933XVuSIsKNPfs2dP27NkTtswnn3xi559/vpUqVcoNgRk3blyhbB8AIPH0na+ZKXXzivrr582bN7tjS//+/e2hhx6y1157zdasWWPdu3d3x50rrrjCLd+gQQO7+OKLrVevXrZ69Wpbvny59evXzxX/13Jy7bXXuuL+OsasW7fOXnrpJXv88cfDhlkCfkSwDAAAIMXs3bvXmjZtapMnT476uoJakyZNsilTprgsgLJly7rZx/bv3x9cRoEyXbioh3/u3LkuANe7d+/g68ogUH2YOnXquKyBRx55xIYNG2bPPPNMoWwjACCxPvzwQ2vevLm7iQJY+lmdLXLPPffYbbfd5o4NZ555pguuzZ8/33WgeGbMmGH169e3iy66yC699FJr3bp12HFCM2iqML8Ccco+u/POO937hx5vAD9iGCYAAECKueSSS9wtGmWVTZw40YYMGWKXX365e+755593s48pA009/p9++qm74Pnggw+sZcuWbpknnnjCXeg8+uijLiNAF0AHDx605557zmUFNGrUyGUcjB8/noscAEgDbdu2dceMnCi7bMSIEe6WE818+eKLL+b6d8444wx79913j2tdgVRDsAwAAMBH1Hu/bds2N/QytGdf9WNWrlzpgmW619BLL1AmWj4rK8tlol155ZVumTZt2rhAmUfZaQ8//LD9+OOPUWvNHDhwwN0iZ5VSrRrdUpW3bqm8jsezHSWLBmL+Xb/+P1Jp/QEA6Y9gGQAAgI8oUCbKJAulx95ruq9atWrY68WKFXMZAqHLqMBz5Ht4r0ULlo0ZM8aGDx+e7XkNwSlTpoylOg1JTQeR2zHurLx/54033jA//z/27duX0HUBACAUwTIAAADEZPDgwWFFm5VZpokBVPtMEwmkKmUlKTDToUOHuE9Dnwrb0XjYW3n+7tphnczP/w8vixHHL9rkS1+N7ZyUdQGAVEWwDAAAwEeqV6/u7rdv3+5mw/TocbNmzYLL7NixI+z3Dh8+7GbI9H5f9/qdUN5jb5lIJUuWdLdICnj4IQjll/XM73YcOFIkpt9JNfn5f6Ti+gMA0hezYQIAgGC2QegNqUlDJxXMWrx4cVjWjWqRnXPOOe6x7nfu3OlmufS8/fbbdvToUVfbzFtGM2SG1oJStk+9evWiDsEEAADIFATLAAAAUsyePXvczJS6eUX99fPmzZvd7GX9+/e3hx56yF577TVbs2aNde/e3c1wecUVV7jlGzRoYBdffLH16tXLVq9ebcuXL7d+/fq54v9aTq699lpX3L9nz562bt06e+mll+zxxx8PG2YJAACQiQiWAYVs2LBh7kIn9Fa/fv3g6/v377e+fftalSpVrFy5ctatW7dsw2R0sdS5c2dXTFkFnO+++243vAYAkB4+/PBDa968ubuJAlj6eejQoe7xPffcY7fddpv17t3bzjzzTBdcmz9/vpUqVSr4HjNmzHDHl4suusguvfRSa926tT3zzDNhM2iqML8CcS1atLA777zTvb/eEwAAIJNRswxIgkaNGtmiRYvCZijzDBgwwObNm2ezZ892FzLKBOjatavLCpAjR464QJmG4KxYscK2bt3qMgpUy2P06NFJ2R4AQHy1bdvWAoFAjq+ro2XEiBHulhPNfPniiy/m+nfOOOMMe/fdd49rXQEAANINwTIgCRQci1Y8edeuXTZ16lR3cdOuXTv33LRp09xwmlWrVtnZZ5/tsgDWr1/vgm3VqlVzxZxHjhxpgwYNcllrGlIDAAAAAAAKhmAZkAQbN250NWM0XEYFlseMGWO1a9d2hZhVaLl9+/bBZTWERq+tXLnSBct036RJExco83Tq1Mn69Onjas54Q3YiHThwwN0ip2D3CjuHFnjOScmiOWc55CaW906m/HwG6SxRn0Omf64AAAAoOCYdQjIQLAMKmWYhmz59upttTEMohw8fbueff76tXbvWtm3b5jLDKlWqFPY7CozpNdF9aKDMe917LScKyOlvRVqyZImrfaYZ0PIy7iwrkDfeeMP8IJbPIBPE+3PYt29fXN8PAAAAABKJYBlQyC655JKwWjEKntWpU8dmzZplpUuXTtjfHTx4cNgMZ8osq1Wrll144YX2/vvvW4cOHVzds9w0HvZWgf722mGdLJUp80kBolg+g3SWqM/By2IEAAAAAD8gWAYkmbLITj/9dNu0aZMLUhw8eNB27twZll2m2TC9Gme6X716ddh7eLNlRquD5ilZsqS7RfKCIrrPK0By4EiRfG5d+N9IdbF8Bpkg3p8DnykAAP4a5vbV2M5JWxcASAVZyV4BINPt2bPHPv/8c6tRo4a1aNHCBRYWL14cfH3Dhg22efNmV9tMdL9mzRrbsWNHcBllA1WoUMEaNmyYlG0AAAAAACBdECwDCtldd91lS5cuta+++spWrFhhV155pRUtWtSuueYaq1ixovXs2dMNl1QtMRX8v+mmm1yATMX9pWPHji4odsMNN9i//vUve+utt2zIkCHWt2/fqJljAAAAmUizhBcpUiTspomTPPv373fnT1WqVLFy5cpZt27dgtn6HnVYdu7c2dV3rVq1qt199912+PDhJGwNAMDXwTIOSkDuvvnmGxcYU4H/3/3ud64trFq1yk466ST3+oQJE+yyyy5zbaNNmzZuaOWcOXOCv6/A2ty5c929gmjXX3+9de/e3UaMGJHErQIAAEg9jRo1chMqebf33nsv+NqAAQPs9ddft9mzZ7uOzC1btljXrl2Drx85csRdk6hEhjo4//KXv7hJmoYOHZqkrQEA+DqzjIMSkLOZM2e6/f7AgQMucKbHp556avD1UqVK2eTJk+2HH36wvXv3ukBZZC0yTQigGSY1y+B3331njz76qBUrRglCpA/N3nrmmWda+fLlXafJFVdc4YYkh6LzBQCQF50f6TzKu5144onu+V27dtnUqVNt/Pjx1q5dO1cKY9q0ae76Q52YsmDBAlu/fr298MIL1qxZMzdJ08iRI915mq5V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Wu+//e1v7ljz+uuv208//eS2vbDddddd7vtCwcEtW7bYgw8+6C7YrrnmmuP67vKzdD33UuegzhXUIa8Alc6dvI4X7/woUmQdIu0Xl156qesY+fe//+06F9VmVKtSw8/yoo5/ZZyK9jcFH7p27erau4413j4oOjdU+1A7zbR90A/StZ2ozpj2c+1v+v7TNYKOSWofCmKpragN6PvR065dO9dJ4wWNdP6lY4yyr2IR2q4UBNPf0HuofarNeGbPnu2uV3Rs0nHsoYcessKQ8seJQAZ54oknArVr1w6UKFHCTUm7atWqQCqaNm2amxL1gw8+yHU5LdOsWTN3/9hjj+X5HsuXLw8ULVo00KZNm8Du3bujvl+0W8mSJYPL/Pzzz4E//vGPbor1MmXKBK688srA1q1b3bSvWva7774Le8+uXbu651esWBF87osvvnDPzZkzJ3DSSScFhg0bVqDPCZnTJgpqyZIlUffpHj16uNePHj0aeOCBBwLVqlVzz5988smBDRs2hL3H999/H7jmmmsC5cqVC1SoUCFw0003BX766afg66m+7+fUrvUdkVe7DvXVV18FLrnkkkDp0qUDJ554YuDOO+8MHDp0KOHrn+ni9f8r6DEmdOp2Wb9+vXte+0JB3jOybYZOBy6TJk1yz48ePTr4nNrpKaecEhg4cKDbtrZt22abSj2/nwEyx0cffRRo1apVoGLFioFSpUoFGjRo4Pav/fv3Z9t/NX29znl+8YtfBMaOHRsYNGiQe/6ll14KLqt9r1GjRoF69eoF+vfvH/a3tB/qONGtW7ds+/ell17qvvd//PHHbOu4ffv2PLdDxy0dq0OP2Tq+tGzZ0v2tb7/9Nrjs22+/7Z7TffHixQPTp08PJMPvf//7QI0aNdz66jPV402bNgUyvd36/dwr8vte1xRnn3222565c+fmeX4U6csvv3TLPfLII2HPv/nmm+75Pn365LlOderUCXTu3DnsOe1LxYoVc9c+oftgv379AlWrVg38/e9/DxQpUiRw/fXXZ9w+6Ad+byeR9N2nfax+/fqBHTt25HmO57Wz5s2bBypXruyOTb/61a/cZxF5XMpPu3rttdfc87179w57XvEBXbsMGDAgULdu3UBh+X2KHycyKljmF/m9kGnXrp272N+3b1+u79GxY0d30Pj6669jXhednJUtWzbP5XI6ID755JPu+RkzZgSfGzlypNvhDxw44A6Ap512WszrA+TX8QQGYsG+j0xrEwqWnn766QV6z7yCZWvXrnXP9+rVK/jcu+++655bvXq1OznMysrK13EMyEtO+68u/CODt16wTJ0dOsE/cuRI8LVZs2a58yztp5H7t4JrCvQWVE7nY3fddZf7W+oQ9fTs2TPQsGFD97MC2x06dCjw3wVyay/qPDz33HPdhe7rr78ettzxBsv27Nnjntf1S0GCZaJgsgLGoRRw0MW3zsUqVaoUGDVqVJ7vDxyvW265xe3Py5Yti/r60qVL3etaLr/HpYK0q9Djwn/+8x8XONYx7P333892TMlkGVGzzK809l/T54bevv/++2zLqSaACt0prTInqrmhIWFK48yrcGA8acyxaLiMR6mdSovWmHSlWG7cuNGlWAOp0J7ihX0f6dgm9DsaCukNX4vlPePRblRjUMM1laqvkgMaYgYkmjcBQLT9XcP6Nc296u95vDpIobXQPBpiovqXGtIZT5FtRvXL/v73v7tjjOhe53/eEG4gXjQsTnXFdB6jIVyXXXZZ1OU0KVLkcSGyYHd+218sNLxfQ51Djycakq0h1GoXOhfTOZmOMUCiaUi8hv6qll40bdq0ca9Hqwsbz3YR7TxL51Qqb6E2rGGvOueiXfwfgmUpTHWUVMA29KbCfpHU6DSmX7XLQmuMhdKBQbXJotWOiTyIadaJgvLeSw1ZtWdUb0AzlXlfDDpR/Oyzz1xNEGndurUL3tEgkSrtqaDY95GObUL1XLRff/fdd24f1v6ruhcqUh7re+ZGtZT0/go6qPbSHXfc4WpmdOvWLXixo4swr92oTpsKr9NukAhesPebb75xAafhw4e7uozRggAq8K96OgqQiS7+tQ8riJZTXRZ1XKpGzLnnnmuDBg1y9S21j+eHd66mC54xY8bYK6+8YmeccYbVq1fPva5anFoXr82oBqdq3YTWNAPiQTWlFHzSd7S+l3OifTPyuBCt3pDah/ZtJQC89957wfpUOR1vIqktee1DtdNUb1Pv5RVElxdeeMFq1apl5513nnusdqI6mNEKngPxPLaoHpfqYuZG3+U6/ujcqCDHpWhC25VmEtfkfRLaLnROdfnll7tzLNHEMLNmzXKxg0yXMQX+/UgF9yOL96ngXTTKLlMRWhUhVyHLSN6sfNEKbKpQrBqiRwe9WA9MkbyTNU+jRo1cAXVv8gE1RgUQFNwTb6YmHbw0q2dO2wcUZnsqCPZ9pGObUJFz3Ty66NYseyq2Gut75ubmm28Oe6yLKLUbBSFERWiV7eZlyYh+VoaZZpRSOwPixZvsxaNefn1H55SRr8DYyJEjXeeIZr5U+1GR5tAZlEMny1AhZwW43nrrLfezJkzRPv/nP/8512BDaCZPZABagTdNTuDRsUbtx5uoQ4X9O3fu7J7v379/zJ8FkBddfKvQuIJPudEFvgpzh1IWSyQV9vYK8HvXLDo/ivWaRMHn0Pah9qiJiR5++GH3WBf+L730kgvyeRMvqXi6MkHVPkKLnQPx5AW/8ppoxXvdu24vyHEpr3altqg2oaxKUWBZkyrp2BR6njV69Gh3rNLxI5MRLEthSoP0LhjyotRNXYTrxOvWW2/NsfFppr5ImmVNvTH/+te/XM/n8fAOiLqgUiNWGqdH2Qjq2dR6aqYpT6tWrdzBUDN8aCYdINntqSDY95GObUI9jZoBVhnHGmqjkyf1UmZlZcWlnQ0dOtRlX+qiRjPUagZaTY/u0QmhZtdUL6oypEVtS0FoXdxofYB48YK96kB87rnn3OyTuc34q6wUnTcpqKv9UT39uV0MaSixZkNTe9I5l2YNnDBhggsGKLNFM17mRoEJDeURrZfaRugFk5fdpjbrtRdRFo2OUZphMD/BbCA3mm1SHSea+fLdd9/N1mkYeo2i7/e8aKZXZbsoo1lDhydNmuTOn2KlcyrN4KdAmI4ROp6EzripYJqypHWcCm0fOjfTMDQFEHI6tgHHwzsuhGaMxRpUy+9xKad2pX1b7UGdjKG/r/MsBa+VPOO1Cx1rFJSbMWMGwbJkrwDiR1Fj1STTwStyOmb1MOoCJFqtDGWkSegFSkHldkDUgU9DbRQ0iDYcQA2SgAH8in0f6UgX4l6vpqYe1z6uC3FdXHi9ksejSZMm2XpNPepZVWBAF04a8hZJw99GjRoVzBAAjldosFfDFzVcXtljGzZsiJqZX6NGDXfepU6P5cuXu4BULFQrSYEz3XQRpOFmyuoP7f2PRkHlnNqL6D1Us0zro1u0Y42G8ADxoOCugrOq06fMSbWBvLLMcqPveW//VuBZ+/u9997rjjexdMLo+JRb+/CG7//ud7+L+rqGqHnZ/0A8VaxY0R0vlMWVG72uchihmZj5PS7l1q4iaS4nBYqVtRyts2bHjh0u0SaWv5OuCJalEQW9dNKmnhH11odSxFiv6UDw7bffxrVWU6x0kFKqsyLkkdTTqh5WDSP1xksD6YJ9H+nilltucZkwQ4YMccPNEhmoUttQoEyT10QGonWSqHXQxZlOHIF404W6hqXo4vnJJ590F+3R6KLlD3/4g+ukVEA5v7yLIHWoxONYo9q00YJu6khVgJlgGeJJF/Kqm6fsEwXMlGGWV63KWN1///327LPPuu/6+fPnH9d7KRigkTQqfxFtWOftt9/u2g/BMiSKAsDan1WPL9p5i9qO6h7rPOt4j0uxUlxAtdBGjBjhMjFDaTKn3r17u/Z9/fXXW6YiWJZmVLtMQTEVGI+kAJpe0w6v3vrIKLGiy7HQCZ1SQTUURkPOYqGJB3ThozTQaAepmjVrusj2a6+95g5kQCpi30emUwbynXfeaX/84x/dhYd6OfOiNqO2o15V9a7GSkMDNCwgWmkBZc+MHTvWXdwQLEOi6JxJwYCJEye6el8amhJJ3+uacU9D0JQxlpMlS5a494sMMCszR0KHsG3evNkNd65fv37M66p10PAcBcOiHWs09PO6665zBdk1XA2IF2WW6TxG5zkakql9PbJGWUEoAK3AgUrMaJiyV1NMkyVpmGXt2rVjfi91Sipg1rdv36izEWqIpjIz1amZnyFuQKzuvvtud16jfVrf1aGzUWqSMJ3raL/Wcvk9Lul4oeOGOhZjGfIcOQRTfzPa8e2RRx5x51kEy5CSVANDB4RIKuaqC4icsst0U6Q4kg4OikLfdtttLiVTJ006EdMJlOpYqDHoRK969eq5rtfgwYNdAWbVXtJ45lgoEKBx2DkVsNWsOOqJ0joQMECy2tOHH37o6l1EOzDpgpx9H5l+jBHNpKTOF2UxxxIs00WKhplNmzYtOAtTXjRrlC641NsfjS5mOnXq5C5uVNcm1uA1kF+6iFAQYPr06VEDtwoAq6MyLzr30gWNMjK9c68VK1a4guM6nngz/4lm8dN5XKydmKKsMS2f07FGWW8KdutYQ7AM8ab9WlkzmrRF+2BoJpgmv4g2jEuZaJr4KDeaIVlBAXWOeGUslAGja5133nkn5vXTfq/ghI5v0Widtf7z5s2LS4kBIJKuvXUNoetvlaDo2bOnqzupbDJNpKQZKxV0Dq15HOtxafXq1S7bTFnFsRyPvE5HlQ5QO4wWKPPaxeOPP+6GY2qETCYiWJbCIodSenTBkduFjBpJTmnEffr0sXPOOccNo9FFxrZt29xFhhqmZofR67E00vzSQUoNUQ0yGhUd9GZr0sxnodF2oLDak3rcdYuk2c4Kmr3Cvo90O8ZouLDqlulYo4sVBZPjTRdFR48edbNe5kSv6URPQb9YZhIECkIXzjovevTRR61Xr14Ffh/9vs67lEmm7H8Fy5QZoyxNDTOLrDWbXzqG6P2aNm0a9XW9v45jCs6NHz8+LnVqgVAK+CpDRpNe6ELe2xd1bRGNOkTyCpYp+15DnTXj6+eff16gaxRd6C9atMjN8JfTzOPKjlNWjzJtCJYhUdQu1FmioZRegEzn/bpuv++++9ww+sI6LikwrElh8jrPeuyxx9w5WU6dl+muSCA/3VYAAAAAAABAGmN+XAAAAAAAAOAYgmUAAAAAAADAMQTLAAAAAAAAgGMIlgEAAAAAAADHECwDAAAAAAAAEhks+/bbb+366693U6FqivkmTZrYhx9+GHxdE3BqyvoaNWq419u3b28bN24Mew9NPXzddddZhQoV3HTXPXv2tD179iRidQEAAAAAAIDEBMt+/PFHO++886x48eL25ptv2vr16+2xxx6zE044IbjMuHHjbNKkSTZlyhR7//33rWzZstapUyfbv39/cBkFytatW2cLFy60uXPn2rJly6x3797xXl0AAAAAAAAgqEhAaV5xdO+999ry5cvt3Xffjfq6/lzNmjXtzjvvtLvuuss9t2vXLqtWrZpNnz7drr76avv000+tYcOG9sEHH1jLli3dMvPnz7dLL73UvvnmG/f7eTl69Kht2bLFypcvb0WKFInnJgLZ9umffvrJ7ZdZWf4Z2UwbQWHxaxsR2gkKi1/bCW0EhcWvbURoJygsfm0ntBGkYhspFu8//tprr7kssauuusqWLl1qv/jFL+yPf/yj9erVy73+5Zdf2rZt29zQS0/FihWtVatWtnLlShcs072GXnqBMtHy2hhlol155ZXZ/u6BAwfcLXQoqAJuQGH5+uuv7eSTTza/0AGpVq1ayV4NZBC/tRGhnaCw+a2d0EZQ2PzWRoR2gsLmt3ZCG0EqtpG4B8u++OILe/rpp23gwIF23333ueyw22+/3UqUKGE9evRwgTJRJlkoPfZe033VqlXDV7RYMatcuXJwmUhjxoyx4cOHZ3v+z3/+s5UpUyaOWwiE27dvn/3hD39wPSF+4q2v2sgVV1zhhk4jd4cOHbIFCxZYx44d+bzy8Xmdc845VrduXd+1EfHWWQdU1dDMpP0hnbcvFbdt9+7d7kLBb+0kWhtJxc83HWT65+rXNhLZTlSvOZP/j4Ut09qNX9tJbudbmSTT9tdkfDb5aSPFEpFCqYyw0aNHu8fNmze3tWvXuvpkCpYlyuDBg12ALvJDUBAg0xuc6r516NCBBpegz/fVV191P/stZdhbXwWT1UbYP2L7f/N55f/z8g5Gfmsjoeus/3m0YFk67w/pvH2pvG1+ayfR2kgqf75+xufqzzYS2U4ULOP/WHgytd34rZ3kdr6VSTJ1f03GZxNLG4l7sEwzXEYOf2zQoIH9/e9/dz9Xr17d3W/fvt0t69HjZs2aBZfZsWNH2HscPnzYzZDp/X6kkiVLulskfZDsaHwOAAAAAAAAsYh71T/NhLlhw4aw5/79739bnTp13M8aiqOA1+LFi8OywFSLTEN1RPc7d+60jz76KLjM22+/7bLWVNsMAAAAAAAASIS4Z5YNGDDAzj33XDcM83e/+52tXr3annnmGXfz0t369+9vDz30kJ122mkuePbAAw+42Qg0ZNLLRLv44ovdpAAavqmUu379+rni/7HMhAkAAAAAAACkRLDszDPPtJdfftnVEBsxYoQLhk2cONGuu+664DL33HOP7d2713r37u0yyFq3bm3z58+3UqVKBZeZMWOGC5BddNFFbhbMbt262aRJk+K9uojBKffOy/bcV2M7J2VdUHj4vwOxaTzsLTtw5H91D2gnwP9wLAHi03ZoN0A4ji/wXbBMLrvsMnfLibLLFEjTLSea+fLFF19MxOoBAAAAAAAAhVOzDAAAAAAAAPArgmVAITvllFNcdmXkrW/fvu71tm3bZnvt1ltvDXuPzZs3W+fOnd30uVWrVrW7777bzRgLAAAAAABScBgmgJx98MEHduTIkeDjtWvXWocOHeyqq64KPqfJLUKHKSso5tHvKlCmWWVXrFhhW7dute7du1vx4sXdxBoAAAAAAKDgyCwDCtlJJ53kAl3ebe7cuXbqqafaBRdcEBYcC12mQoUKwdcWLFhg69evtxdeeMGaNWtml1xyiY0cOdImT55sBw8eTNJWAQAAFK5ly5ZZly5drGbNmi4T/5VXXgl7PRAI2NChQ61GjRpWunRpa9++vW3cuDFsmR9++MFNRKZzrUqVKlnPnj1tz549Yct88skndv7557vJyGrVqmXjxo0rlO0DACQPmWVAEim4paDXwIED3Ule6Gywel6BMp0EPvDAA8HsspUrV1qTJk2sWrVqweU7depkffr0sXXr1lnz5s2j/q0DBw64m2f37t3Bnw8dOpRt+ZJFA9mei7ZcJvG2P9M/h1jxeQEAEmnv3r3WtGlTu/nmm61r167ZXldQa9KkSfaXv/zF6tat686ndM6kTkcFvkSBMmXpL1y40B2vbrrpJuvdu3dwojGdL3Xs2NEF2qZMmWJr1qxxf0+BNS0HAEhPBMuAJFIP6M6dO+3GG28MPnfttddanTp1XC+pejIHDRpkGzZssDlz5rjXt23bFhYoE++xXsvJmDFjbPjw4VFf0wlipHFnZV/ujTfeiH3j0li0zws5W7JkSbJXAQCQhpRdr1s0yiqbOHGiDRkyxC6//HL33PPPP+/OmXT+dfXVV9unn35q8+fPdyUyWrZs6ZZ54okn7NJLL7VHH33UnYupA1Odm88995yVKFHCGjVqZB9//LGNHz+eYBkApDGCZUASTZ061Z3k6WTME3ripQwyDR246KKL7PPPP3fDNQtq8ODBLoPNo55SDSUQ1UxTzbNQjYe9le091g7rZJlMPc4KlEX7vJDz53XhhRcme1UAABnmyy+/dJ2IygjzVKxY0Vq1auWy9BUs070yxLxAmWj5rKwse//99+3KK690y7Rp08YFyjzKTnv44Yftxx9/tBNOOCHmbH4dF4sVKxZT1nVkhj9Z2gWTaVnumbKdQGEgWAYkyX/+8x9btGhRMGMsJzqpk02bNrlgmYZmrl69OmyZ7du3u3u9lpOSJUu6WzQK/EQGfw4cKRJ1OUT/vJAzPisg/5QNrOPDZ5995motnXvuue7ivF69esFl9u/fb3feeafNnDnTXZjrAv6pp54Kyz7W7Mkapq8Mz3LlylmPHj3ce3sX7PLOO++4zhQN5VcnijJxQjOeAT/ysu2jZeN7r+les4qHUtuoXLly2DIawhn5Ht5r0YJlOWXzq+6sV1Yjryz1yAx/svuPT6aMCti3b1+yVwFIGwTLgCSZNm2aO0HTzJa5Uaq/KMNMzjnnHBs1apTt2LEjeIKnEwAVpm3YsGEhrDkAINGWLl1qffv2tTPPPNMOHz5s9913n6ubpFpLZcuWdcsMGDDA5s2bZ7Nnz3YZM/369XN1m5YvXx7z7MnKvtEyt956qxtutnjxYvvDH/7gjjkKvgGIXza/2rCC35FZ6tGy+SNlenZ/QWXaqIDQmsQAjg/BMiAJjh496oJl6uEP7d3XUEsVlFWtjCpVqriaZboYUvr/GWec4ZbRiZaCYjfccIMrXKteTWUB6KIqp8wxAIC/qI5SqOnTp7sOko8++sgdE3bt2uWG8uuY0a5dO7eMjisNGjSwVatW2dlnnx2cPVlZzMqE0QzKmj1ZtTCHDRvmhpWpYLmyZh577DH3Hvr99957zyZMmECwDL7mZdsr+97rcPQeqy14y6jzMZSC05oh0/t93XsZ/KHvEfo3Ys3mD81MD/05WjZ/tN9FwWXKqIBM2EagsBAsQ5hT7p1XoOW+Gpt7dhTC6cJFQ2M0m1IoXbjoNRWk1QxP6oXs1q2bC4Z5ihYtanPnznXDapRlpgwDBd1GjBiRhC0BABQGBcdEw8NEQTNlTITWY6pfv77Vrl3b1VhSsCyW2ZO1TOh7eMv0798/6nrkVospsjaQ7plZOX4yrfZSpPxut4LACmYpW9ILjml/VS0ytQHReZQmWlJ7atGihXvu7bffdp2aXhkMLXP//fe7v+8FIpSppCHR0YZgAgDSA8EyIAmUHaZZmiIpOKahN3nRbJnUrgCAzKALdwWvzjvvPGvcuLF7TlnF6mBRcfLc6jHlNXtyTssoqPDzzz+7IWP5rcXkUUCBmZXjL1NqL8VSi2nPnj2upqtHw4pVvkJBZQWO1W4eeughO+2001zw7IEHHnCTKl1xxRXBTMqLL77YevXq5bIsFRDTcGYV//cmX9Is5drne/bs6bIy165da48//rjLvgQApC+CZQAAAClMw+x1ga7hkalci0m1MyNrBDUf9Xa296D2UsFkWu2lWGoxffjhh2EzLnv7pjLuNXT5nnvucZn6mmlcGWStW7d2Q5xLlSoV/B3V6lOATDOPaxZMZfRPmjQp+LrqASoYrHao7LMTTzzRhg4dGjZ7OQAg/RAsAwAASFG6iNfQ+2XLltnJJ58cfF7Dyw4ePOgCAKHZZaqlFFprKa/Zk3Oqx6TAV2RWWay1mEKfY2bl+MuU2kuRom1z27Zto2bqe4oUKeLKVORWqkJZaKr9lxvVjX333XfzucYAAD/LSvYKAAAAIJwCAAqUvfzyy66GkoaQhVKGi4IHqsfk2bBhg6uHqRpLovs1a9aEFTCPnD1Zy4S+h7eM9x4AAACZiMyyDC/eT2F+AABSj4Z8Kdvl1VdftfLlywdrjGlImDK+dK8aShp2pswYBcBuu+02F+RScf9YZ0++9dZb7cknn3TD1TTpjAJzs2bNsnnzYpvwBwAAIB0RLMtwsc5+CQAACs/TTz8dHGYWatq0aXbjjTe6n1Vg3KuxpBkqNYvlU089la/Zk5WxpsDYgAEDXNFyDfX885//7N4LAAAgUxEsAwAASDG51WHyqEj55MmT3e14Zk9WQO6f//xngdYTAAAgHREsAwAAAIAURjkVAChcFPgHAAAAAAAAjiFYBgAAAAAAABxDsAwAAAAAAAA4hmAZAAAAAAAAcAzBMgAAAAAAAOAYZsMEAAAAAAC+mQ0WSDQyywAAAAAAAIBjCJYBAAAAAJBmli1bZl26dLGaNWtakSJF7JVXXgl7PRAI2NChQ61GjRpWunRpa9++vW3cuDFsmR9++MGuu+46q1ChglWqVMl69uxpe/bsCVvmk08+sfPPP99KlSpltWrVsnHjxhXK9gGJRLAMAAAAAIA0s3fvXmvatKlNnjw56usKak2aNMmmTJli77//vpUtW9Y6depk+/fvDy6jQNm6dets4cKFNnfuXBeA6927d/D13bt3W8eOHa1OnTr20Ucf2SOPPGLDhg2zZ555plC2EUgUapYBSHhNga/Gdk7KugAAAACZ6pJLLnG3aJRVNnHiRBsyZIhdfvnl7rnnn3/eqlWr5jLQrr76avv0009t/vz59sEHH1jLli3dMk888YRdeuml9uijj7qMtRkzZtjBgwftueeesxIlSlijRo3s448/tvHjx4cF1QC/IViW5gGLkkUDNu4ss8bD3jKzIsleLQAAAABAkn355Ze2bds2N/TSU7FiRWvVqpWtXLnSBct0r6GXXqBMtHxWVpbLRLvyyivdMm3atHGBMo+y0x5++GH78ccf7YQTTsj2tw8cOOBuodlpcujQIXeLpGvaWET7XT/x1t/v25HKn01+fp9gGQCgUI0ZM8bmzJljn332mauPce6557oTqnr16gWXUfr/nXfeaTNnznQnUzrpeuqpp1xvp2fz5s3Wp08fW7JkiZUrV8569Ojh3rtYsf8d2t555x0bOHCgGz6gGhrqPb3xxhsLfZsBAABSiQJlEnpu5T32XtN91apVw17XeVblypXDlqlbt2629/BeixYs0/na8OHDsz2/YMECK1OmTLbnlfwRizfeeMPSgYa8IjGfzb59+2JelmAZAKBQLV261Pr27WtnnnmmHT582O677z5X62L9+vWuVoYMGDDA5s2bZ7Nnz3a9nP369bOuXbva8uXL3etHjhyxzp07W/Xq1W3FihW2detW6969uxUvXtxGjx4d7DHVMrfeeqsbIrB48WL7wx/+4IrYKvgGAACAwjd48GDXmRmaWaZOTZ0PaiKBSP83Sipva4f5+/xOWU8KBnXo0MGd0yL+n42XxZgSwbKxY8e6xnDHHXe4MdHxzBhA6qBOFYBYqfZFqOnTp7teSxWFVRr/rl27bOrUqfbiiy9au3bt3DLTpk2zBg0a2KpVq+zss892PY8Kri1atMgdO5o1a2YjR460QYMGuaKyGgqgYrXq6Xzsscfce+j333vvPZswYQLBMgAAkNHU4Sjbt293HYkePdZ5lbfMjh07wn5PHZ2aIdP7fd3rd0J5j71lIpUsWdLdIikIEi0QcuBIbOWE0iXAlNPnADvuzyY/v5vQyJMKAf7pT3+yM844I+z5eGQMAADSg4JjopR+UdBMvUehNTTq169vtWvXdnUxFCzTfZMmTcI6WRQAUyeLhlw2b97cLRP6Ht4y/fv3z3Fd8lNDw3tcMiu8jka61JlI57oZqbhtqbQuAID0pw5FXW8r894Ljum8R7XIdD4l55xzju3cudOdm7Vo0cI99/bbb9vRo0ddbTNvmfvvv98dx7xAhDKAVF4j2hBMwC8SFizbs2ePm2b22WeftYceeij4fLwyBgAA/qeTLQWvzjvvPGvcuHGwvoW+51VQNrcaGtFqbHiv5baMTgR//vlnVy/teGtoyMiWR9OyXkYm1M1IpW3LTw0NAABivSbftGlT8LFKVGimSnVQqhNS52C6Vj/ttNNc8OyBBx5wM1xeccUVbnldo1988cXWq1cvl7GvgJgSXVT8X8vJtdde686devbs6a7X165da48//rjL5Af8LGHBMtWjUXaYevVDg2Xxyhg43hk10p03Y4iX8RCZ+VAY6t0/N+3GkUfKxH0LiPexQidVGh7ptxoaXu2EBz7MsgNHi6Td91w6181IxW3LTw0NAABi8eGHH9qFF14YfOyd46jEkcpg3HPPPbZ3717r3bu3yyBr3bq1K5dRqlSp4O+o7qsCZBdddJGbBbNbt242adKk4OsaKaZORZ3TKfvsxBNPtKFDh7r3BPwsIcEy1SL7xz/+4YZhRopXxkA8sgHSWeSMIZGZD8mSbhkXAApOJ15z5861ZcuW2cknnxx8XkMCDh486E7aQo8Vqn8RWh9j9erVudbHyKmGhoJe0bLKClJDQxQoC62lkSrBl3hJ57oZqbRtqbIeAID00bZtWwsEck6aKFKkiI0YMcLdcqIsNI0Ky43KLr377rvHta5A2gfLvv76a1fMXz22oRHpVJtRI915M4Yoo0yBssjMh2RJl4yL0OyEV199NdmrAfiKTtpuu+02e/nll+2dd97JNt24eiUVOFANDfVeyoYNG9zEL6qLIbofNWqUKzrrTWmu446+7xs2bBhcJjJAr2W89wAAAACAQgmWaZilLl5+/etfB59TwX5lDjz55JP21ltvxSVjIB7ZAOkscsaQyMyHZMnE/wWAcErTVw+lAs3ly5cPZgwrjV8ZX7pX3Qt1gKg3UwEwBdcU5NJQfVFHiIJiN9xwg40bN869x5AhQ9x7e8eCW2+91R13NMTg5ptvdgVpZ82a5SaYAQAAAICcZFmcaSzzmjVrXOFA79ayZUtX7N/72csY8ETLGNB7hE5TG5kxAADwp6efftpN9qKhAZqq3Lu99NJLwWVUFPayyy5zmWVt2rRxHSVz5swJvl60aFE3hFP3OmZcf/31btbk0GEEylhTYEzHj6ZNm9pjjz1mf/7zn10NTAAAAAAotMwyZQl4M5p5ypYta1WqVAk+H4+MAcCvNKNrZH09Ta382WefuZ/3799vd955p6v9p0krdGH/1FNPhdXxU3BZE14sWbLEypUr54p0qm5fsWIJm7MDiJvcamd4NIx/8uTJ7paTOnXq5FkHUQG5f/7znwVaTwAAAACZKSlX1soY8GbSCA0GRGYMKBigIJqCbQoG5FZ4EPCTRo0a2aJFi4KPQ4NcAwYMcNkws2fPdsPRVAS9a9eutnz58uCwZs00q0ybFStW2NatW11GjTI2R48enZTtAQAAAAAgXRRKsEwFnBORMQD4lYJj0ervaWja1KlTXT2ndu3aueemTZtmDRo0sFWrVrnsS83wun79ehdsU7ZZs2bNbOTIkTZo0CCXtabZZgEAAAAAQMEwZgtIgo0bN1rNmjVd4FjZkxpCWbt2bTdBhmbYbN++fXDZ+vXru9dWrlzpgmW6b9KkSdiwTGVnKhNz3bp11rx586h/U1mcuoXOGOvR34xUsmj2oXLRlovX7/mBtx3psj2JxucFAEDhOuXe8ElsvhrbOWnrAgB+RrAMKGStWrWy6dOnuzplGkKp+mXnn3++rV271tXnU2ZY6EyxosCYN2Og7kMDZd7r3ms5UUAuslaaRwXQI407K/tysWR7FvT3/CTa54WcqbYeAAAAAPgFwTKgkF1yySXBn8844wwXPNOw41mzZlnp0qUT9ncHDx7sJtYIzSyrVauW+7lDhw6u5lmoxsPeyvYea4flPYtgQX/PD5QhpUBZtM8LOX9eF154YbJXBQAAAABiRrAMSDJlkZ1++um2adMmF4Q5ePCg7dy5Myy7bPv27cEaZ7pfvXp12Hvode+1nGgm2Zxmk1XgJzL4c+BIkWzLnfbAgmzPRab3R/u9dAssRfu8kDM+KwAAAAB+kpXsFQAy3Z49e+zzzz+3GjVqWIsWLVxgYfHixcHXN2zYYJs3b3a1zUT3a9assR07dgSXUfZOhQoVrGHDhknZBgAAAAAA0gWZZUAhu+uuu6xLly5u6OWWLVvswQcftKJFi9o111xjFStWtJ49e7rhkpUrV3YBsNtuu80FyFTcXzp27OiCYjfccIONGzfO1SkbMmSI9e3bN8fMMQAAAAAAEBuCZUAh++abb1xg7Pvvv7eTTjrJWrdubatWrXI/y4QJEywrK8u6devmZq/UTJdPPfVU8PcVWJs7d66b/VJBtLJly1qPHj1sxIgRSdwqAAAAAADSA8Ey4P+zdydgTlTp+/dPN/uOgIAo4C67IJu4MCqbgIwI464gw4AyiAKKiLIJKoiKCKK4IMgIorxuIyi7gLII6jiAKOIyI8rmqICA7Hmv+/yt/JJ0ujvdnaWq8v1cVwhdqU4q6To5VU895zlJNnv27BwfL168uJk8ebK9ZUdZaX6bYRIAAAAAADcgWAYAeaQZPyMnMoic6AAAAAAA4E0U+AcAAAAAAAD+QLAMAAAAAAAA+APBMgAAAAAAAOAP1CwDkHCn3jsvyzJqfAEAAAAA3IhgGQAAAAD44GIkkM4i2wQX51EQDMMEAAAAAAAA/kCwDAAAAAAAAPgDwTIAAAAAAADgDwTLAAAAAAAAgD8QLAMAAADgOyNHjjQZGRlht1q1agUfP3jwoOnbt6+pWLGiKV26tOnatavZuXNn2HN8//33pmPHjqZkyZKmcuXKZtCgQebo0aMpeDcAgGRiNkwAAAAAvlS3bl2zePHi4M+FC//f6c+AAQPMvHnzzJw5c0y5cuXM7bffbrp06WJWrlxpHz927JgNlFWtWtWsWrXKbN++3XTr1s0UKVLEPPzwwyl5PwCA5CCzDAAAwGVWrFhhOnXqZKpVq2azYd56662wxwOBgBk+fLg56aSTTIkSJUzr1q3Nli1bwtb55ZdfzI033mjKli1rypcvb3r27Gn27dsXts769evNxRdfbIoXL26qV69uxo0bl5T3BySLgmMKdjm3SpUq2eV79uwxU6dONePHjzeXXXaZady4sZk2bZoNiq1Zs8aus3DhQrNp0ybz8ssvm4YNG5r27dub0aNHm8mTJ5vDhw+n+J0BABKJzDIAAACX2b9/vzn33HPNX//6V5vpEklBrYkTJ5qXXnrJnHbaaWbYsGGmXbt29sRegS9RoEyZMIsWLTJHjhwxPXr0ML179zazZs2yj+/du9e0bdvWBtqmTJliNmzYYF9PgTWtB/iBgsgKOqtdtGjRwowZM8bUqFHDfPLJJ7ZdaP93aIimHlu9erU5//zz7X39+vVNlSpVguuonfXp08d8/vnnplGjRlFf89ChQ/bmUFsTvZ6T2ab/O4oVCiTkvUe+Tjpy3n+6fA7p8j6BZCBYBgAA4DLKYNEtGmWVTZgwwQwdOtRceeWVdtmMGTPsCb0y0K677jrzxRdfmPnz55t169aZJk2a2HUmTZpkOnToYB577DEbPJg5c6bNjnnxxRdN0aJF7XC1zz77zGbaECyDHzRv3txMnz7dnHPOOTZw/MADD9hMyo0bN5odO3bY/V7B4VBqR3pMdB8aKHMedx7LjgJyeq1IylRT7TNRENsxrplJmHfffTdxT+4hoZ+3nx04cCDVmwD4BsEyAIiDU++dF/bzf8Z2TNm2APC37777zp6oh2bEqN6SAgPKhFGwTPcKAjiBMtH6mZmZ5qOPPjJXXXWVXadly5Y2YBCaNfPII4+YX3/91Zxwwgl5ypiJzODQfbSMGTIf8ifdMmQi5ed9hwacGzRoYNtIzZo1zWuvvWaHLyfKkCFDzMCBA8PaiYY5K5NTr6vATZs2bWztM6k3ckHCtmXjyHYmnWm/ify8/cz5TgZQcATLkNKAghBUAAAgdk5GS7SMl9CMGM3cF0rDvypUqBC2joZwRj6H81i0YFksGTMOnaBGy5gh06Vg0iVDJhEZMwogn3322ebrr7+2wRNlVu7evTssu0yzYaq2meh+7dq1Yc/hzJbprBNNsWLF7C2SgjVOwCb0/4eOZZhESYcAUSxCP28/S4f3CCQLwTIAAAAUOGNGEwlEZnI0emhpludI90yX/Eq3DJlEZMxogotvvvnG3Hzzzbagvz7HJUuWmK5du9rHN2/ebL7//ntb20x0/9BDD5ldu3YFg8/6G2hfr1OnToG3BwDgXgTLAAAAPMTJaFGGi2bDdOhnzdjnrKMT/FBHjx61M2SGZs04WTKhzxH6GvnJmAldFi1jJh0DPfGULhkykfLznu+++247q6yGXm7bts2MGDHCFCpUyFx//fV26LJmiFXwVxmXCoD169fPBshU3F8UBFZQTME1TaqhjEvVCuzbt2/UdgAA8I/MVG8AAAAAYqehkwpmKSMmNOtGtchCM2I0vEwz/jmWLl1qjh8/bus2OeusWLEirBaUsmZUDD3aEEzAa3744QcbGNM+fc0115iKFSuaNWvWmBNPPNE+/sQTT5grrrjCZpapfp/a1RtvvBH8fQXW5s6da+/VXm666SbTrVs3M2rUqBS+KwBAMpBZBgAA4DIaLqa6SqFF/TVTpTJgatSoYfr3728efPBBc9ZZZ9ng2bBhw+wMl507d7br165d21x++eWmV69eZsqUKTYgdvvtt9vi/1pPbrjhBlt/TNk1gwcPtjMEPvnkkzaAAPjB7Nmzc3y8ePHiZvLkyfaWHWWlUWcPANIPmWUAAAAu8/HHH5tGjRrZm2iomP4/fPhw+/M999xjh4z17t3bNG3a1AbX5s+fb0/+HTNnzjS1atUyrVq1Mh06dDAXXXSRee6554KPaxiaCvMrEKf6TXfddZd9fj0nAMD/Ro4caTIyMsJu6jccBw8etMOOlZVZunRpm4UZOXxfdf46duxoJ3lRbb9BgwbZYf+A15FZBgAA4DKXXHKJCQQC2T6uExoNBctpOJiy0GbNmpXj6zRo0MB88MEHBdpWAIB31a1b1yxevDhs5mTHgAEDzLx588ycOXPsBRZlKHfp0sWsXLnSPn7s2DEbKNMQ5lWrVpnt27fbocqqMfjwww+n5P0A8UJmGQAg6VQnSUWXNRxMJ/1vvfVW2OMKEijDRcXLS5QoYVq3bm22bNkSto4Kld944422KHP58uXtUDJl14Rav369ufjii222jWbsU4FmAAAA/F9wTMEu51apUiW7fM+ePWbq1Klm/Pjx5rLLLrMZyNOmTbNBMdX+E2Unb9q0ybz88st2gpn27dub0aNH26HNhw8fTvE7A1wWLBszZowdDlCmTBmbhqnaGZqGORTpnIB/nHrvvLAbEIv9+/ebc889N9s6MQpqTZw40dZaUtHyUqVKmXbt2tn+w6FA2eeff24LkqsAswJwocPHVPBcM5mp3oyKnD/66KN2uEHoMDQAAIB0pouRunh5+umn22MrnYeLjp1U71IXLB0aoqm6matXr7Y/675+/fqmSpUqwXV0vKZjMB2jAV4W92GYy5cvt4EwBcwU3LrvvvvsyYoizjrZEdI5ASC96cqjbtEoq2zChAlm6NCh5sorr7TLZsyYYQ/ElIGmAuVffPGFrc+0bt0606RJE7vOpEmTbF2mxx57zB70qV6Trmq++OKLpmjRonaYgQqk6wopNZkAAEC60+zI06dPtzPG6pxbk74oI18TvuzYscMePyl7P5SOx/SY6D40UOY87jyWnUOHDtmbQ8E1UXAudIZmR7FC2ZclyEm053IzZ3u9tt1e+mzy8vtxD5bp5CWUGp8ywxSZ1pTMTjqnamgonVOUzqlZm5TOef755wfTOTV2Wo1NKZ1K59RMTcoKUKMFAPiTio3rACv0SqYurOiATlcwFSzTvQ7enECZaP3MzEybiXbVVVfZddTvhPYZutr5yCOPmF9//dWccMIJBTp4c34ulhl+AOeXAxw/H7C58b25aVsAAOkh9MKlaljqWEsZ+a+99potg5EoGo2mwFwkxQE0sizSuGb5ex2vzmSrURNIzGdz4MAB9xT4V3DMKTIbSzqngmXZpXP26dPHpnM6M0MBAPzHuRIZ7Upl6JVMXYiJrLmhviZ0ndNOOy3LcziPRQuW5fXgTUY3Oe6LA7N0PGBz03vLy8FbOog2rP8/YzumZFsAIF3oQuTZZ59tvv76a9OmTRubob979+6w7DKVT9IIMNH92rVrw57DKa/krBPNkCFD7CzPoRcnVVtWI9JUizZSvZEL8vV+No5sZ7xEcRIdm+iz16g6xP+zcS6EpzxYdvz4cdO/f39z4YUXmnr16tlliUrnzGsqp985qapOxkNk5oObePnvk59t18n4G2+8Yb788kt7xeaCCy6wmS5Kfw6dBU1DmkPdeuuttn6TQ/UEFEB+//33be2/7t272+cOncEGQN7k5eDN6bSHfZxpDh3P8OyBWToesLnxveXl4A0AgETQREnffPONufnmm21Bf/WRS5YssTXGRbXIdQ7SokUL+7PuH3roIbNr167gRUz1rzpmqlOnTravU6xYMXuLpNeL1i8fOvZ/x1l54ZY+Pq+y+xxgCvzZ5OV3E3pWrdplGu/84YcfmkTLTzaAn0WmqkZmPriJ37Iw4lHXT3r16mVGjRoV/Dl0P6auH/zMuRKpK5OaDdOhnzUs31lHB2ah1J40Q2bo1c7IyWNyu9qZ14M3UaAs9CDObwc3fj5gc9N7c8t2AADSx913321nJ9fQy23btpkRI0aYQoUKmeuvv96WwNBM47qIqMx9BcD69etnA2QaDSY6h1FQTME1Tc6kxBbVnNW5TrTjKcBLEhYsU9F+Z3ayU045JbhcJyiJSOfMayqn32SXmqqMMgXKIjMf3MTLWRjKTnj77bfjWtcvNDiW3f5OXT/4mYZOat/XlUwnOKbvdNUiUzal6EBN/Yjaja58ytKlS21Gs+ptOOvcf//9tp06gQhd7VQWZ7QhmIkaPsbQMQAA4EY//PCDDYz9/PPP5sQTTzQXXXSRrSOu/8sTTzxh68Eqs0yjuFQa6emnnw7+vgJrOufX8ZmOu3ThX6NdQi/4A14V92CZZjFTxPnNN980y5Yty1IvJlHpnPnJBvCT3FJTIzMf3CQd/j55qevn0Ex+L7/8sg0a6IrPsGHDgtll1PWDH9L8VQ8jtKi/ZqpUO1ANSw3hf/DBB81ZZ51l+xHt/5rhsnPnznZ9TQpz+eWX2wxMDU9WQEwXaVT8X+vJDTfcYDOOdVVUgWRlOj/55JP2wA8AACDdzZ49O8fHixcvbiZPnmxv2VFWWrqNFEJ6iHuwTCmXmulS2TZlypQJ1hhTGqfqM5HOCeRc1885yVfHo5P+9evX2xN9BZVV6yzedf0knlM0x+qc++d6Lsswu9kPc1o3neU04+DHH39sLr300uDPTmawrkYq2/Kee+4x+/fvN71797YZZLrSqaxMHbSFBpQVIGvVqlXwqufEiRODj6u/URam+g5dqKlUqZIZPny4fU4AAAAASFqw7JlnngkWKA81bdo0c8stt9j/k84J5FzXL/RkXhlkqtukgIAKbp5xxhlxreuX3Yxw+Z2iuSC8clUqlhqAXnkvyaBJKCKpj1AmcnYyMjLsd35O3/u64KKLMznRNOgffPBBHrcYAAAAQDpLyDDM3JDOCWRf1y8apwaThq0pWBbPun4SbUa4/E7RHE+xZppFbmuiMtSym/0wGrdnySWD83mFZpABAAAAgNsldDbMdBVZ3Fko8IxY6/pFo1pO4swMGM+6ftnV9nNDjbtY69lFbmui6+DFUgMw3WvxheKzAAAAgFtx/o5oCJYBSZZbXT8NtdTjHTp0MBUrVrQ1ywYMGGBnytSQMqGuHwAAAAAAiUGwzCeRb3hHbnX9ihYtahYvXmwmTJhgC5xrqKTq+ykY5qCun/txhQoAAAAAvIlgGZBkudX1U3Bs+fLluT4Pdf2SH/TSDKGpmPgAAPyEiwkAAMDtCJYB8B1OxAAAAAAA+ZWZ798EAAAAAAAAfIbMMpejPhkAAAAAAEDykFkGAAAAAAAA/IFgGQAAAAAAAPAHhmEmCQXHAQAAAAAA3I9gWR4R9AIAAAAAAPAvgmUAAAAAAAB5QCKNvxEsiwNmrAQAAAAAAPAHCvwDAAAAAAAAfyCzDAAAAAAAIM6jzhiW6V0Ey5ByfKEAAAAAAAC3IFgGIC1QgBMAAAAAEAtqlgEAAAAAAAB/ILPMRZhVEwAAAAAAILUIlgGAizBcFAAAAABSi2AZAAAAAABAnHEh3LsIlsET+JIBAACROD4AAGSHPgIFQbAMrkPtNuSE/QMAkBecLAEAgLwiWAYAAAAA8EXwO3SdYoUCZlyzpGwafI4L9umHYBkApBAdL7LbF8h8AcLxfQkAAJKFYFkKcdAHpBfaPFKFYWgAgFShDwISh/aVOATLAACAxdAVAIDXLjJyMRJAIhAsg2cxZAkA8o+TCwBAOoulH+T8AkhfBMsAII3Sq0nV9h8uHACJwfclEI42ASQ2UOtk9dcbucBsfuiKmH8PiUGwDAD+QAeERODkAkju9y/f5UDe20Oy+yX6RgBuR7AMvuHWgwHA7chMSr5EnswTKAAS1044wQe8SZk6h45lpHoz4ALpcJwUy7E9/VnuCJYh7RAYAOAF6XAwBwCAH3B+AfiPq4NlkydPNo8++qjZsWOHOffcc82kSZNMs2ZMzQWEop3kH8GI9EAbAXJHO8k/TpLTA20kPeU3+yZdR7z4qZ1wnmASnn3m9uw21wbLXn31VTNw4EAzZcoU07x5czNhwgTTrl07s3nzZlO5cuWEvCYHO/CaVLSTZKKTcs9n5fbOLF3bCBAPtJP0xbFvbGgjqRvm7EbJrrHolXZJO/E+N5QJOTWfkx+kVbBs/PjxplevXqZHjx72ZzW6efPmmRdffNHce++9qd48+IhXgwBCO0lfbuzM3NhuaCPxr/Pixr8zCoZ2El9uzSjxSiDCjdKhjfg9wIXES4d2kkxeblunenjbXR8sO3z4sPnkk0/MkCFDgssyMzNN69atzerVq5O2HX75I8OfATS3tBPArWgjqft+jGewIL99cazf2X66qp8ftJPUye++F61Qebz2US8c/yQbbQTIHe3E3fw24/SpSTp2c2Ww7H//+585duyYqVKlSthy/fzll19G/Z1Dhw7Zm2PPnj32/pdffjFHjhzJsn7zMUu88WEUUOHjAXPgwHFT+EimOXacGWAK4ueff86yTPvWgQMH7P8DgYCr20l2bUTbr/dWpEiRsPULH92fsG33KtpT3tqI0z70PeyFNpLXvsR5f37dH/Kyv59592vhvxvja0T+XtTtiPG58vLcxTIDZmij46bh/W+YwjH87aI910dDWuV6XBFN5O85fvvtN0+0k1jaiNM29J1AX1Iwofues99Ga5OpakuJ4PU2kls7KV68eJZjL9pJ4vjh2C2WPshr7SSv5+7p0kb8sL+65bOJdu6e1zbim/jQmDFjzAMPPJBl+WmnnWbS3Q2p3gCfqPR4zo+r4ZUrV854rY387W9/S8n2eBXtyb9tROhL0md/vyHB+7tf2wltJLX83Cb90kaEduIufmw3Xm8ntJH02l9T8dnEo424MlhWqVIlU6hQIbNz586w5fq5atWqUX9HKZ8qKOg4fvy4jUxXrFjRZGSkb1R27969pnr16mbr1q2mbNmyqd4c336+mzZtMtWqVXN1O4nWRv773/+ahg0bsn/EiPaUv8/r+++/t9/Dbm8jee1L/L4/+Pn9ufG96QqnDtzc3k5iaSNu/Hz9IN0/V6+0kdzaid5DOv8dky3d2o1X2gnn7tGl2/6ais8mL23ElcGyokWLmsaNG5slS5aYzp07BxuQfr799tuj/k6xYsXsLVT58uWTsr1eoB2KBpc4J598sh2X7+Z2Eq2NONvM/pE3fF55o6s2qfi8ktWX+H1/8PP7c9t7S0UWQDz6kuzaiNs+X79I58/VC20kt3biBALS+e+YCun0eXuhnXDunrN02l9T8dnE2kZcGSwTRZq7d+9umjRpYpo1a2annt2/f39wdg0AtBMgN7QRIHe0EyBntBEgd7QT+I1rg2XXXnut+emnn8zw4cPNjh077FCx+fPnZykaCKQz2gmQM9oIkDvaCZAz2giQO9oJ/Ma1wTJRymZ26c2IjdJbR4wYkSXNFf75fAvSTtyw/V7C5+XNzytRfYlb3l+i+Pn9+fm9uaGd8PkmBp+rP9oIf8fk4vNOLs7fC4b91V2fTUYg2fPKAgAAAAAAAC6V3IrkAAAAAAAAgIsRLAMAAAAAAAD+QLAMAAAAAAAA+APBMgAAAAAAAOAPBMt8YsWKFaZTp06mWrVqJiMjw7z11lthj2seB03je9JJJ5kSJUqY1q1bmy1btqRse71mzJgxpmnTpqZMmTKmcuXKpnPnzmbz5s1h6xw8eND07dvXVKxY0ZQuXdp07drV7Ny507jZ5MmTzamnnmqKFy9umjdvbtauXWvSUTzazy+//GJuvPFGU7ZsWVO+fHnTs2dPs2/fPuM38WoL33//venYsaMpWbKkfZ5BgwaZo0ePGq/wS9sZOXKk3edDb7Vq1fLs9xpt2R380j68vI+uX7/eXHzxxfZvUL16dTNu3LikvD/kjvbhjr7L68ch8A6OnWM3duxY25779+/vis+GYJlP7N+/35x77rm2A45GB0kTJ040U6ZMMR999JEpVaqUadeund35kLvly5fbRrpmzRqzaNEic+TIEdO2bVv7uTsGDBhg3nnnHTNnzhy7/rZt20yXLl2MW7366qtm4MCBdgreTz/91O4/2id27dpl0k082o9OXD7//HO7f8ydO9eeEPXu3dv4TTzawrFjx2yHdvjwYbNq1Srz0ksvmenTp9sTRC/wW9upW7eu2b59e/D24YcfevZ7jbacen5rH17cR/fu3Wu/l2vWrGk++eQT8+ijj9rgwnPPPZeU94js0T7c0Xd5/TgE3sKxc2zWrVtnnn32WdOgQYOw5Sn9bALwHf1Z33zzzeDPx48fD1StWjXw6KOPBpft3r07UKxYscArr7ySoq30tl27dtnPefny5cHPs0iRIoE5c+YE1/niiy/sOqtXrw64UbNmzQJ9+/YN/nzs2LFAtWrVAmPGjAmks/y0n02bNtnfW7duXXCd9957L5CRkRH48ccfA36Wn7bw7rvvBjIzMwM7duwIrvPMM88EypYtGzh06FDA7fzUdkaMGBE499xzoz7mxe+1ULTl1PBT+/DqPvr0008HTjjhhLDv08GDBwfOOeecJL0zZIf24Y6+y+vHIfC2dDx2zs1vv/0WOOusswKLFi0K/OlPfwrceeedrvhsyCxLA999953ZsWOHTeV3lCtXzqZ+r169OqXb5lV79uyx9xUqVLD3unKrqwShn7HSwWvUqOHKz1iRd21z6PZmZmban924vW5vP7rXUJgmTZoE19H6+kyVGeBn+WkLuq9fv76pUqVKcB1dWVc2hLIl3MyPbUdDvDQk7PTTT7cZK0pl9+L3Wm5oy4nnx/bhxX1U67Rs2dIULVo07DtWw35+/fXXpL4n/B/ah3v6Li8fh8D70u3YORbKvFN2WOhn4IbPhmBZGtCBl4TuQM7PzmOI3fHjx+046gsvvNDUq1fPLtPnqINSHcB64TP+3//+Z1NW2Sfi0350r/HxoQoXLmw7QT9/nvltC7qP9nk6j7mZ39qOTsKVqj5//nzzzDPP2JN11Tn67bffPPe9lhvacuL5rX0kW7z2US9/x/oZ7cM9fRdtBKmSjsfOuZk9e7Ydlq7abpFS/dkULtBvA2lIke+NGzeG1UYA0hFtwfvat28f/L9qROgERHWOXnvtNVtcHAAAt6Hvgldx7Bxu69at5s4777S13DTpiduQWZYGqlatau8jZ43Qz85jiM3tt99ui+m+//775pRTTgku1+eo9Prdu3d74jOuVKmSKVSoEPtEnNqP7iOL82oGFs1Y5tfPsyBtQffRPk/nMTfze9vRlbuzzz7bfP311577XssNbTnx/N4+vLKPevk71s9oH+7pu2gjSIV0PXbOiYZZqk8777zzbJa0birir4lu9H9liKXysyFY5mFKP9bUqh9//HHUx//zn//Yx8844wz7s3ZCpenraszixYttbYsWLVrk+Bqa2jp0Wmal/ivN+c0334y6frNmzex6Son2E9Xh1Rec3vfSpUvNaaedFvZ448aNTZEiRcySJUuCy1QbRPUTcvuMU0HprNrm0O1VWrB+duP25rdt6Bbtyo3+ntWrV7ePX3HFFVke/+c//2mvUqpWTJ06dezBra4EffXVV/ZxjYEPbT+615e4ZnBxXlf7g4ZbKNW6W7du5ttvv83yOl988YVdV1dSIjsBP7cF3W/YsCHshE9XlMqWLWs/bzfzU9uJ1k727dtnvvnmG3PSSSfZPkNOOOGEYDtx/pYrV67M8+tpNr7Q/kTTe+vvPXToUNumIj399NN2PbXFeNC+qoOm0L9ddm1ZB28O7ef6G8drO/zMD+1D9U1uuukmc/LJJ5tixYrZmkjO7JPZtR/ddFCv37nlllvMjz/+mO3z57Rf57SP6sRBv9ezZ0+7j5544ol2NrVly5Zl2Ud1r35M67/33nvB79hzzjnHtmekhh/aRyzy0jYuueSS4FC0nOh3Q59TxwuaSfTxxx83hw4dCuu79BmrFpz29WuvvdZ3xyHwXhvQcb4CutOmTbPZj/quDz2Pj3bsrLYRuc/++9//Dnte1e7Svv7222+bAwcO5Gu7FGTWcX1ksEneffddu576QX1XJUKrVq1sW/zss8+CN9XkVL/r/D+l5xUFmh4AKTVt2rTgjEiaQeJf//qXvWnZ+PHjA/PmzbP/v/766wPXXnttoGTJkoG//OUvgTJlytgZI04++eTA77//nuNr1KxZM9CwYcPAP/7xD3t75JFHAqeffrp9Xs0yEeqrr76yy0899dTAhRdeGPCTPn36BMqVKxdYtmxZYPv27cHbgQMHguvcdtttgRo1agSWLl0a+PjjjwMtWrSwN7eaPXu2nWFr+vTpdnat3r17B8qXLx82k4jX20bx4sXt3y7S+++/bx/X++/YsWOw/ehvp+W6tWzZ0s629MILL9j/a6axwoULB9avXx+48sorA6eddlpY+7n88ssDZ555pv1dtbMqVaoEmjdvHrj99tsDRYsWDVSoUCHLbHr33XefnflM2/H8888H0qUtHD16NFCvXr1A27ZtA5999llg/vz5gRNPPDEwZMiQgBf4pe047UT750033RRYuXJloHXr1oFKlSrZmZqcdqLb+eefH/xb6ufQ2dxipfbk9B3qT3R/1VVX2WV6Xs0EGOqCCy6w/Yke37JlS0yvEa0v1P//+9//2sfHjh1r/1Zvv/12jm25UaNGgY8++ijw4Ycf2tmZ1I/C/+3j9ddft+1B38v333+//f4fOnRo4KSTTrLL33jjjSztZ9SoUXZ/1nd4z549A4UKFQqcccYZ2R5fqV/Q7IdO24p1H9W6bdq0sa9Vv359u43qV9Q36flC91HNsKn1S5UqZfs4/U10DPjss88m4VOEX9tHrPLSNjTrXd26dXN9zu7du9vPzTkfueyyy+z5iV6nVatWYX2X+hLt+3o9/Y5mHPTbcQi81Qa0n2tGR51/6/j4m2++CUyYMCFsZuPIY2d9L2j/Dd1ntX7FihUDDz30UGDQoEGB0qVLB+rUqRM898hP21Tb0napn9m/f3/Y+jfccEPwOEyzVCZL6GyYqT6vIFjmk2BZ6ElN5E1TkKvjGDZsmD2BV2N1gmi5UbBMB1qhdGKsTujss88OWz58+PBA5cqV7cGmDt6+++67gF9k99nqb+BQ5//3v//dTteug1KdBOqzcrNJkybZLx+dBGg68zVr1gT81Da6dOliD56OHDkS9nivXr0CjRs3Du7f2bUfdSCi9qMvXP1d1XHpwGzz5s1hz/nzzz/bgzf9XokSJQI9evSwJ+4yceJEu/zhhx8Orq/nVAc0cOBAu69ccsklgXRqC//5z38C7du3t5+V/kZ33XVXlr+Tm/mh7YQGlXWvE25dWPn666+D7eS8886zF1jUbzh/y4IGy3766aew5WqnWr5q1argsm+//dYuU3BCBzwjR46M6TViactOX5hTW1b/qINQTTse2pbh3/ah/V77eK1atewJdyjts1quYx+d5EQeg4UaPHiwXf7qq69meQ1nv87PPhra7px9VN+fTtsN3Ue7desWqF27dvDipoJ9CsLBHbzYPvIiL20jL8EytT+H+ioFjHW+oef885//HOy7nAufCjQ7F4T8eBwC77SB7L73Q9eJPHZWH3DKKaeEPa/W13dH5D6rQJkCXrklwWTXNnUuouWzZs0KLtu3b59tczqH0QXEW265JZCqYFkqzysIlnlYdju8Q8EqJ1gWSju/liv6mp9gmTRp0sSePIVSVo125EOHDtlouKLeQCrbxpw5c+yB1Lvvvht8TPunvmwff/zxsP1bB6v6HQUI8ss5Udfrhtq4cWOW5/7ggw/ssrVr19oDR3VyW7duzfdrA8loJxLvYNlTTz1ll8+cOTO4bPTo0fb1tR3KZlR2F5BIt956q90PV6xYEfVxZafoca2X0zHY3Llzs1wcicd+nV2700lB6PMoy1cB7nHjxtmTCfUtoW0LSLS8tI38Bsscd999t31OZUY7lMWmbBvRybMyMgE3tQGdI+d2Hq/jLh1/xdIPaBSLMilzCw7Fsl0OZZ5lZmbafkQjy3TxMLdgnB9RsywNqZaZ5LduxZEjR+zMFRUrVgwuUz0NFdW8/vrrbU2GLl26mJkzZ8Ztm4H8UM09jWN/5ZVXgstUv2XPnj3muuuuC1tX9V3k5ptvjvt2qI6GhLYZtQ/VE2zatKnp1KmTrd8Uup2AG9tJImTXPtSPqD9Rv7Jlyxazbt26hG8L0tc777xj24LqskbTsmVL+/i8efPyfYwV7/36119/tbfQtqO+TPWb1HZV/0x1bzgegx/OP2LpP1S/7PXXX7ftS3Svmn47duyI22sC8TzeyauDBw+a//3vf/b23//+18yaNcu89NJL5oYbbrD1AeO1Xeo3Lr30UtuPqD/57bffbD+ZbgiWpQEV/FODUuE+FXHu0aOHXf6Xv/wl5uCY0yjXr19vi5Xrua6++urgOi+//LItmH7hhRfan9WoNm3aZAvzAamkzuOtt94yv//+e/DL/09/+pMtVhlZbF/q169f4NdUh6L2sn37dlscU1Miq0Bm165dg21qzpw5wUCEpjn/85//zAkNXN9O4kGz9ql96MTpueeeswXPNduRE6RQcf0vv/wy2D4uuugiO2sU7QOJosDwtm3bbMHwnDRo0MD88MMP9js+9He1P2u5TtIfeOABOzFA5OQx8divnZOkn376yaxdu9Yeh2kimcjjsQsuuMAek4leb+HChfZ3gGSKtW3khXM+opP7MWPG2H5L7VKTV4hmGtQEGE4769y5sy0OPnv27Li9LyA/beDVV181o0aNssf8BWkDU6dOtRO86KYLOCqEryL5zz//fNy2S4XyNRngdX+0oxo1atiLqml5HJbq1DYkfhhm5E11WDS0JhZK/4z8faV53nzzzcGC3kr5VE0ZpUKHFtpT/bLQZUAq2oZqz6gw/2uvvRbYu3evHcvuFNMPHV6mujD6He27+ZVdvSS1jxkzZgTXU+FmLdfwTMc777yTZRngtnYSj2GYkTcNwVHBVseAAQNsrY7QtqjaE5HLgHjREHjti5roIic33nijXe+HH34Itp/Im2pRLliwIMvvFnS/jvZaqjeoWjPHjh2z6/zvf/+zJTI0tNmh+maRy4BEykvbyMswzGjPqYlgnDqColpGKhUTqmvXrlmWAaloAzqeUvH50HXyOgxTtfhUbF83nU+oprL6AtV/jZwoKT/bJU8++aSt9ffLL7+E1VqMXJYO8perB0/p3bu3veqoK5JKRdb047oSGStNQf7ggw/azBgNFatdu7ad/tbhXLFs1qyZHYrpUOqmhvU88sgjdlpbIBV05aV169Y2TVlZltr3o2VVanphUcZA6P6dH8OHD7dZMoUKFTKVKlWybSY0NVpX/jVttK6wOm1GQzLVvnTV5uGHHy7Q6wOJaifxoAwDtTdd7VdmjfZ9h15XGQDqP7777ruwfujxxx+3U4e3bds2IduF9FWmTBl7H5oxFo3zuLO+TJ482Zx99tn2Sv2LL75oVqxYYb/bQ8Vrv77yyivN7bffbo/HtA1169Y1pUqVCj6uDAFlLjdq1CjseEyvo76lb9++MX0eQDzE0jbyonjx4sFhYHoeHUepD3Eoo0zZ/Gojofu/Rr2o3/nqq6/s9gDJbgM6B1AGvTIg83JOrO/6SNrndbzm0MgUDZ+8++67bWalSrsUdLt0nqLz+p9//tneRP3K4cOH7cgYxRbSBcGyNHDWWWcFG5XSK3UCf++999qDtiZNmuT6+zrZD22UkZyUzGuuuSbq48uXL7evBaRyiFmvXr1szYr27dtHDYbVqlXL3m/YsCHbmjWx0lDO7NrM3r177cGegtdqm5EUrHjooYeidpBAqttJPKj2k/qVaHRBR8OXFViINmxG/Q3BMsRbuXLlzEknnWRLTeREj5988snBiyuiEwrnWEpDvjS8Um1p8+bNpnTp0nHdryNPkqI9jzglMSJ9++235vTTT8/1dYB4iKVt5IXOX3La/3USr5plCkDrFq19aCgokIo2EC34K075i0i6cOmskxsNwxQFpGMJluW0XaG1NM+Kcp6idkSwDL52//3323HNQ4cONfPnzy/Qc+3fv9+8/fbb5tprr42ahXDHHXcECwQCqXLVVVeZW2+91axZs8ZeeY9GnYvqX+hqSkGDZTl54403bKDsmWeeyRIw0AGk2uXKlSvtQSXgtnaSaOovKleubK96Rms7b775ppkyZYqtrQHEky4m6thItV2jff9+8MEHts6e2khOJ/PqR3TM89RTT9kLk8nar5WxtmrVKptVo3qDoY4fP24nr9HFGPUxQLJl1zbiSe2sXr16ZsSIEVkee/bZZ+3+T7AMblGzZs3gsX+08w5lQmp/jsXRo0ftvSZ3iUc7Uub/P/7xD9tuQ6l/1Ai177//3tYxSwcEy9KQsgV0sDdu3DhbgL9hw4Z2uQrPahhYXnZ+HeApYKbU/mgNXUM0daVHB4gFSb0GCkJXMBWc0olOdldcVLjy8ssvNy+88ILNqtFV0FBKPb7vvvvMY489Zn/WsAJlCigbQVkJsVIwTlf2b7vttiyP6Yro2LFjbUdFsAxubCexUttQG9EQSx10xUJXVxU4UNmAaBdfNNmAhvZrtj9doAHiadCgQfb7WcdHujofOiuYJqXQd7aOkbReTjT7pK7aT5gwwfTv31+1gfO0X2sYpYqXO9lusXKyyu65555gcf9Q6tu0DsEypEpk28gua0Yn4sqqcTL+Y7F161bbbhUMi9bOdAynQugfffSRHZYMpFrjxo3tRRR9N+tiRuh5siau+PHHH3PtbxzO8OTQSWqcyTB0Xq++K1bqJ3ROH+04q0WLFjZYpj5r8ODBMT+nlxEs8wHVAYiWIabaFtnR7HzqrHRi7gwJUF0lXY1ctmxZnhqUDig181I0GketK7Waal3TpQOp0r1791zXmTFjhh0Ko31VwQKlNasejFKS1U4UAHCCZQoUa2bZadOmmVtuuSWmbdBsa++//77NuIxGHWW7du1sgFmdUaxBBiCZ7UQ+/vhjW8sy2smQAr1DhgyxU5kr20WzNcVCwQLVhFK/Ec35559va6up3yFYhnjTcBPtszqh1lD6nj172ppICh5r9jGddOgEIbTGXnZ0gqPg2PTp080JJ5yQp/1aJ0g6HlNb1O/HSr+vi5/RAmWi1+/Xr5/59NNPzXnnnRfz8wLxFNo2ol00lG7dutkSLv+vnnlslDWm9bNrZx06dLD1mdROCJbBDYoWLWrPKfRd37RpU/v9r3Pqf/3rX/bcXrO8RhvuqIwzXdgRBZU1GkB915lnnmmDbg5lcCp4rPMOHZvFQsFk1ftThnI0J598su0/1I4IlsEzlAkQTU4NQ1cyVTdAKZa6ghnLwV8kZ1rZ66+/PkuapkPBBkWz1agJlsHtdMKiYSxPP/20HYamIcu6GqlUaR2AKchcEAq4aThMTlk7ekyFaN97771sD/qAVNMBlW6RRo8ene+sSB18KdOgTZs2UR9X8dmOHTva9VRwNjTzB4gHncQrm0XDxZwAmfYzDR1TZnGsQ2J0vKPjKp0IKfCVl/06PxQA0+iAYcOG5di3KFim4zGCZUiV0LahGpnxovajDJrQzJrIUTXqm3RsN378+LBJl4BUUXBL5x4a7aWbMuxVm1IX1fV9Hm1o/qJFi+xNdP6tDOS//e1v9vgrdMKX/HAylHM7Txk5cqSt4amAnt9laErMVG8EAAAAAAAA4Aaxz10KAAAAAAAA+BzBMgAAAAAAAOAPBMsAAAAAAACAPxAsAwAAAAAAAP5AsAwAAAAAAAD4A8EyAAAAAAAA4A+FjU8dP37cbNu2zZQpU8ZkZGSkenPgY4FAwPz222+mWrVqJjPTO/Fn2giSxattRGgnSBavthPaCJLFq21EaCdIFq+2E9oI3NhGfBssU2OrXr16qjcDaWTr1q3mlFNOMV5BG0Gyea2NCO0Eyea1dkIbQbJ5rY0I7QTJ5rV2QhuBG9uIb4Nliko7H0LZsmVTvTmucOTIEbNw4ULTtm1bU6RIkVRvjm8+o71799ovd2ef82obYf9IHb9/9l5tI17rS/yyH6Xr+/BqO3G297vvvjOrV6/2/N/Nr/ujH96XV9uI1/qSZPDi/ueVz8Sr7cTLbSQd9+cjHn7PeWkjvg2WOembamxea3CJ3KlLlixpPw+v7dRe+Iy8ljIc2UbYP1InXT57r7URr/UlftmP0v19eK2dONurg04//N38uj/66X15rY14rS9JBi/vf175TLzWTrzcRtJxfz7ig/ccSxvxzkBmAAAAAAAAIMEIlgEAAAAAAAB/IFgGAAAAAAAA+L1mWTyceu+8LMv+M7ZjSrYFcAPaBJD3dkIbAXJHuwGSh+M5pAv2dRQEmWUAAAAAAADAHwiWAQAAAAAAAH8gWAYAAAAAQBr68ccfzU033WQqVqxoSpQoYerXr28+/vjj4OOBQMAMHz7cnHTSSfbx1q1bmy1btoQ9xy+//GJuvPFGU7ZsWVO+fHnTs2dPs2/fvhS8GyB+CJYBAAAAAJBmfv31V3PhhReaIkWKmPfee89s2rTJPP744+aEE04IrjNu3DgzceJEM2XKFPPRRx+ZUqVKmXbt2pmDBw8G11Gg7PPPPzeLFi0yc+fONStWrDC9e/dO0bsC4oMC/wAAAAAApJlHHnnEVK9e3UybNi247LTTTgvLKpswYYIZOnSoufLKK+2yGTNmmCpVqpi33nrLXHfddeaLL74w8+fPN+vWrTNNmjSx60yaNMl06NDBPPbYY6ZatWopeGdAwREsAwAAAAAgzfzzn/+0WWJXX321Wb58uTn55JPN3//+d9OrVy/7+HfffWd27Nhhh146ypUrZ5o3b25Wr15tg2W619BLJ1AmWj8zM9Nmol111VVZXvfQoUP25ti7d6+9P3LkiL3FS7FCgSzL4vn8oc8X7+d1syMefs952eaEB8vGjh1rhgwZYu68804blRalbN51111m9uzZtpGogT799NM2Qu34/vvvTZ8+fcz7779vSpcubbp3727GjBljChcmvgcAAPxNxzxvvPGG+fLLL22NmAsuuMBmAJxzzjnBdeJ1PLVs2TIzcOBAO4RGGQbKILjllluS/p4BAMn17bffmmeeecb2Affdd5/NDrvjjjtM0aJFbX+hQJmE9ivOz85juq9cuXLY4+pjKlSoEFwnkvqhBx54IMvyhQsXmpIlS8bt/Y1rlnXZu+++axJBQ1DTzSIPvucDBw7EvG5CI09qbM8++6xp0KBB2PIBAwaYefPmmTlz5tjI9O233266dOliVq5caR8/duyY6dixo6latapZtWqV2b59u+nWrZsdS/3www8ncpMBAABSTlf4+/bta5o2bWqOHj1qT2Latm1r68moXky8jqeUNaB1brvtNjNz5kyzZMkS87e//c0WclbwDQDgX8ePH7cZYU6f0KhRI7Nx40Zbn0zBskRRMo0CdKGZZbpYo35OkwTES72RC7Is2ziyXdwzlRQ0atOmje1f08ERD79nJ4sxpcEyzX6hQn/PP/+8efDBB4PL9+zZY6ZOnWpmzZplLrvsMrtMY6Rr165t1qxZY84//3wbUdbB4OLFi23UumHDhmb06NFm8ODBZuTIkTbSDQAA4Feq/xJq+vTp9sr9J598Ylq2bBm34ymdEKk+jQo6i37/ww8/NE888QTBMgDwOV0YqVOnTtgy9QOvv/66/b8utsjOnTvtug79rD7FWWfXrl1hz6GLPJoh0/n9SMWKFbO3SAq8xDP4cuhYRtTXSIR4b7sXFPHge87L9iYsWKarobpSqfHKocEyHeQpEhk67rlWrVqmRo0adryzDu50rylrQ9M9dcCmYQQaIqCINwAAQLpQcEw0rCWex1NaJ/Q5nHX69+8fdTtyqjMTel/QujJuqYPi5bosfntfXtpWwCs0E+bmzZvDln311VemZs2a9v+6mKKAl7KOneCYvvdVi0x9ibRo0cLs3r3b9kuNGze2y5YuXWqz1lTbDPCqhATLVDvj008/tcMwI2ncsq5kqghgTuOeo42Ldh6LJhFFApNREDCZvHhg5IXPiM8T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WyQzM9M0JWPN89RTT5lgjBWE0aCMts+cXXtl2dV48a3pYL33V7slmgM++UFtmsIBzxsb7C/fsWOHCQRozxgxMTGmJw3fXjcmTJhgotfaPpM2EKg9A3rSSLV2UauBAq2KpsEDzb4BIsE333xjAmN6Avn9738v5cuXl71798oNN9xgps+aNUvuu+8+k1mmjWXqSeydd95xf14Da6tXrzavenL64x//KH379pXJkyeHcasAAAAA2IneQ2vPlDpYjfrr/7XWit6rjxgxQqZOnSrvv/++HD582NxT6H18jx49zPx16tSRLl26yKBBg0wzMLt27ZJhw4aZxv91PvXwww+bxv31nv3o0aPy1ltvyQsvvOCVOQY4UdAzyy5evCgNGzaURx55RHr27JllumbCzJkzR5YsWWKi2ePHjze9ZRw7dkwSEhLMPBoo014CNSKtEeoBAwaYbmeXLVsW7NUFQm758uU5TtdyMHfuXDNkR7PSqKcPAACASK0e+tWMbmFbl0hx4MABueeee9zvrQBWv379ZPHixfL444+b+3e919YMsrvuukvWrVvnvi9XS5cuNQGy9u3bm14w9YG+3s9btGaMtjWmtVw0+6xChQomOUaXCThZoYLo6c+ztz/frLLZs2ebKmPdu3c349544w3TW4ZmoGmE+tNPPzUFdP/+/e4ual988UW599575bnnnnNHsAEAAAAgWtoVA3Krbdu25h48O5pdprVTcqqhok3DXC9ppUGDBvLhhx/ma10Buwlpm2Wa9qntK2nVS89ItNZ33rNnjwmW6atWvbQCZUrn1yi21p9+4IEHQrnKAAAAsGnwgMwTAADg+GCZBsqUZpJ50vfWNH21evizFCpUyES0rXn8SU9PN4NvLwdajVMHX/FxWSPs1ny+r07H9hQsu6wHAAAAAADIv4jpDXP69OkyadKkLOO1/nSxYsWyjE9qnnUZvm1AaZtpkYTtKRhpaWnhXgUAQJRJTEzMct2jHcd89tln5v+XLl2Sv/71r6adTH2YqO3Dzps3z+uBpTbwrD2ebd26VUqUKGHasNHrKX1ICQAAEM1CejWkvfqpM2fOmN4wLfre6q5W50lNTfX63NWrV00Pmdbn/Rk7dqxXjxuaWVa9enXp1KmT6VXTV73E9VnGHUns7M4U0kBMx44dI6JbVbanYFlZjAAAhNLtt98umzZtcr/3DHKN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WVJ++9vfhnS92rVrZ16PHz/uHrd06VIpW7asdOvWTf7nf/7HvAfsQo/Z8ePHy9dffy1vvvmmGTdp0iSJiYkxx6qWI1/aQ9KUKVNMg6N5/U7fcqJthfzyyy/yu9/9zvTs+s4778ilS5fyvF1AqM4nf/zjH+XcuXOyZs2aLNOWL19u2rnQ9l4CFRsbK23btjX//+qrr9zjtTxqW1333HOPdOjQgXMJCsRdd90l//znP83vsWXXrl1y++23m94y9+7da45pz2l6vmjdunWuvkeP83Hjxsknn3xifv+DRdujqVOnjtf5xSrHeg123333SenSpc17AAAQOIJlDqI3H9o7hXZp7kl7q1i/fr088MAD1+3qPC0tTb7//vssgy43L7QhXFW+fHn3OL2h0RsxbaDxoYceks8//1z279+fp+UDBaFPnz7mdcOGDaZMaEOWerPu2RtUMGVXTjQIoDc6Giz7+eefZdWqVQXy/UAwzyf6+64BZH833zquZs2auQ4k+JaR9PR0+cc//mHOIUpftZyePn06V8sFAgmWXblyxTR47BkQu/POO82ggeEjR454Tatdu7bX73mgHn74Ybnllltk8uTJppH1YNB1P3HihNf66LZoj55abvRaTMsswWYAAHKHYJmDaHaK9tDke4OyYsUKc7EUyJP8iRMnyg033JBlOHDgQEDroDdSGlzTp/+vvPKKzJs3z3SrfPfdd5vp2pPGZ599Zm7+rYtQDUBwkQY70WNSn7TrDbreUGjQoF69etke79ag3YcHQm+udH7tofWtt94yN0YaeNAn/EqzeTZt2uQuJzVq1DC90VBO4ITzifbOeP/995vMMu1VybOHsI8//tgEBDTzJidWmdIyOH36dHn33XelQYMGctttt5npq1evNr0zWWWkR48epkcyzVwDgkmvU9TOnTvNq54PNNikAd9f/epX5hrHmqYPNbTnPOszuaXZyZpd9q9//csc83mh5dMqP5ql1rdvXzlz5ozJUrZo1nT16tXdQWstR8eOHTO9+wEAgMAQLHMQvcjSC549e/Z4VVXRmx29mNPuj69n8ODBpit63yHQbun1RkaDa9oV7f/3//1/8utf/9rcMBUrVsxM15t9XRfNmFF6w/SHP/zB3OBkZGTkeduBYCtRooS58bFu9vW9r5tvvtkrqPz+++8HtGytMqbz682Kllldtla7ufHG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O+nevbscPXrUtuvsBG+99ZaMGjXKdPn+8ccfm2Naj9PU1FSJNrfffrucOnXKPezcudM9LZqOr2D8tmmgTMum/sasXr3aBOAGDx4cwq1AJPzu58f+/fvl5ZdfNg9ZPEXadkb7casGDRrk9dutv1F2EynnFy1Xntuhfxf1u9/9zlF/DwAAAuZCvuguXLlypft9Zmamq3Llyq5nn33WPe7s2bOu+Ph419///neXnaSmppr13759u3s9Cxcu7FqxYoV7nk8//dTMs2fPHpedlC1b1vXaa685ap3tpnnz5q6hQ4e632dkZLiqVq3qmj59uiuaTJw40dWwYUO/06L5+MrLb9uxY8fM5/bv3++e54MPPnDFxMS4vv322xBvASLtdz8QP//8s+uWW25xbdy40fWb3/zG9dhjj0Xkdkb7cas8/752FcnnF933v/rVr8y5wSl/DwAAcoPMsiA7fvy4nD592lRPspQuXdpUcduzZ4/Yyblz58xruXLlzKtmbunTW8911+oCNWrUsM26Z2RkyPLly83TZa2O6YR1tqPLly+bfee532JjY837aNxvWpVQqx7efPPNJjMqJSXFjOf4yt1vm75q1cumTZu659H59djSTDSEnxN/93NDs5G6devmtT2RuJ3Rftxali5dKhUqVJB69erJ2LFjJS0tTewmEs8veg3x5ptvyiOPPGKqWzrp7wEAQKAKBTwnAqI3k6pSpUpe4/W9Nc0OMjMzTVsurVu3Nhc1StevSJEi5mbXbut++PBhExzT6l7arsfKlSulbt26cujQIduus519//33JvDo7zj97LPPJJposGfx4sVy2223mWojkyZNkrvvvluOHDli6zJhx982fdX2hTwVKlTI3OBG2/6yI6f97ueWPkjRKuVaXcxXJG1ntPF33KqHH35YatasaQJRn3zyiYwZM8a0a/bOO++IXUTq+UXbszx79qz079/fUX8PAAByg2BZlNKn73qx5tl2hp3phaYGxvTp8v/93/9Jv379TPseQH517drV/X9t40hvbvSC/+233zaN2AORwmm/+7lx4sQJeeyxx0w7StphCSL/uPVsC7F+/fqm45H27dvLl19+Kb/61a/EDiL1/LJw4UKzbRoYc9LfAwCA3KAaZpBVrlzZvPr2ZqTvrWnhNmzYMNPw9tatW03j+RZdP02t16eFdlt3ffr661//Wpo0aWJ6ydJGyF944QVbr7OdaTWJuLg4Wx+n4aJP+W+99Vb54osvOL5y+dumr74dRFy9etX0kBlt+8tunPi7nxtapU2PvTvuuMNkM+qgD1S0Qwr9v2brRMJ2Rpvsjlt/NBCl9LfbriLh/PL111/Lpk2b5E9/+pPj/x4AAOSEYFmQ1apVy1zkbN682T3u/Pnzpr0erUYYTtpmt154ahXGLVu2mHX1pIGowoULe627ptBr+xrhXnd/1TLS09Mdtc52osFH3Xee+033qb6P9v124cIF8yRcn4pzfOXut01f9cZPAxcW/a3RY8u6cUJoRdLvfk40g0Wr62sGsjVo23naRpT1/0jYzmhxvePWH/07K/3ttqtIOL8sWrTIVLfXtgGd/vcAACBHueoOAO7etv75z3+aQXfhzJkzzf+//vprM33GjBmuMmXKuN577z3XJ5984urevburVq1arl9++SWs6z1kyBBX6dKlXdu2bXOdOnXKPaSlpbnnefTRR101atRwbdmyxXXgwAFXq1atzBBOTzzxhOkB6/jx42Z/6nvtXW/Dhg22XWcnWL58uenJcPHixaYXw8GDB5vj9vTp065o8te//tWUCT2+du3a5erQoYOrQoUKpve1aDu+gvHb1qVLF1fjxo1dH330kWvnzp2mZ8KHHnoojFsV3Zz6ux8Mvr3zRep2RuNx+8UXX7gmT55s/o76262/STfffLOrTZs2LjuJtPOL9pqt6ztmzBiv8U75ewAAkBsEy/Jg69at5kbSd+jXr5+Zrt1ojx8/3lWpUiUTjGjfvr0rOTk53Kvtd511WLRokXseven985//7CpbtqyrWLFirgceeMBcoIbTI4884qpZs6arSJEirhtuuMHsTytQZtd1dooXX3zRXPjqvm3evLlr7969rmjzhz/8wVWlShWzD2688UbzXi/8o/H4CsZv2w8//GCCYyVKlHCVKlXKNWDAABOEQ3g49Xe/IIJlkbqd0XjcpqSkmEBMuXLlzG/Rr3/9a9fo0aNd586dc9lJpJ1f1q9fb/4Ovr/7Tvl7AACQGzH6T865ZwAAAAAAAEB0oM0yAAAAAAAA4BqCZQAAAAAAAMA1BMsAAAAAAACAawiWAQAAAAAAANcQLAMAAAAAAACuIVgGAAAAAAAAXEOwDAAAAAAAALiGYBkAAAAAAABwDcEyAAAAAAAA4BqCZQAAAAAAAMA1BMsAAAAAAACAawiWAQAAAAAAAPJf/z+XAb/wlN8lawAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# from scipy.special import softmax\n", + "\n", + "# take csv from www course :we suppose it is available locally\n", + "data = pd.read_csv(\n", + " \"https://turinici.com/wp-content/uploads/cours/common/close_cac40_historical.csv\",\n", + " sep=\";\",\n", + " index_col=\"Date\",\n", + ")\n", + "data.head()\n", + "# order by increasing date, keep variable 'data'\n", + "data.sort_index(ascending=True, inplace=True)\n", + "# data.sort(by='Date',inplace=True)\n", + "data.head()\n", + "data.tail()\n", + "\n", + "# plot histogram of prices\n", + "_ = data.hist(bins=30, figsize=(15, 15))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f1d15e71", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test pval= 2.0507269291153243e-147 res= not normal\n", + "Test pval= 1.2341507304168457e-145 res= not normal\n", + "Test pval= 1.5109663099066784e-82 res= not normal\n", + "Test pval= 5.193407329538019e-261 res= not normal\n", + "Test pval= 9.263758145504221e-171 res= not normal\n", + "Test pval= 1.5679377988996054e-95 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 3.431480107389548e-229 res= not normal\n", + "Test pval= 7.209347413730216e-130 res= not normal\n", + "Test pval= 5.208576684311371e-248 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 6.226583000372112e-32 res= not normal\n", + "Test pval= 2.8139918420327365e-122 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 3.2023586082752444e-62 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 2.3734732069569748e-122 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 3.658142667687734e-131 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 9.297487741263689e-210 res= not normal\n", + "Test pval= 4.5583316571649815e-156 res= not normal\n", + "Test pval= 7.965502395433165e-197 res= not normal\n", + "Test pval= 4.631868468721008e-226 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "Test pval= 5.162726389052399e-169 res= not normal\n", + "Test pval= 2.1068459098663725e-95 res= not normal\n", + "Test pval= 1.724502624699572e-235 res= not normal\n", + "Test pval= 6.864779304946272e-62 res= not normal\n", + "Test pval= 1.701124981576563e-154 res= not normal\n", + "Test pval= 4.3391395462980045e-304 res= not normal\n", + "Test pval= 0.0 res= not normal\n", + "no. of normal = 0\n", + "no. of not normal = 40\n" + ] + }, + { + "data": { + "text/plain": [ + "(0, 40)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def normality_test(data, kolmogorov_smirnov=False, level=0.01, print_results=True):\n", + " \"\"\"\n", + " Tests normality of each column of dataframe \"data\".\n", + " Inputs:\n", + " kolmogorov_smirnov= false: use \"normaltest\", otherswise use kstest, both from scipy.stats\n", + " level = p-value threshold level for the conclusions\n", + "\n", + " Outputs: the number of yes/no in the results\n", + " \"\"\"\n", + "\n", + " pvalues = []\n", + " for cols in data.keys():\n", + " # normality test\n", + " if kolmogorov_smirnov:\n", + " # put in pv the p-value of the Kolmogorov-Smirnov test\n", + " pv = kstest(data[cols].dropna(), \"norm\").pvalue\n", + " else:\n", + " # put in pv the p-value of the default scipy.stats normality test\n", + " pv = normaltest(data[cols].dropna()).pvalue\n", + "\n", + " pvalues.append(pv)\n", + " if pv < level:\n", + " res = \"not normal\"\n", + " else:\n", + " res = \"normal\"\n", + " print(\"Test pval=\", pv, \"res=\", res)\n", + " normalok = sum([1 for pv in pvalues if pv >= level])\n", + " normalnotok = sum([1 for pv in pvalues if pv < level])\n", + " if print_results:\n", + " print(\"no. of normal = \", normalok)\n", + " print(\"no. of not normal = \", normalnotok)\n", + " return normalok, normalnotok\n", + "\n", + "\n", + "normality_test(data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fba88600", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/arthurdanjou/Workspace/studies/.venv/lib/python3.13/site-packages/pandas/core/internals/blocks.py:393: RuntimeWarning: invalid value encountered in log\n", + " result = func(self.values, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test pval= 0.025428757930302828 res= normal\n", + "Test pval= 0.01412845580561908 res= normal\n", + "Test pval= 0.2844927942646553 res= normal\n", + "Test pval= 0.2807546954064213 res= normal\n", + "Test pval= 0.009428521835360353 res= not normal\n", + "Test pval= 0.14982216104037197 res= normal\n", + "Test pval= 0.07490385366598394 res= normal\n", + "Test pval= 0.1693491210857498 res= normal\n", + "Test pval= 0.00622835412057237 res= not normal\n", + "Test pval= 0.0038601712111598595 res= not normal\n", + "Test pval= 0.00014234445964435524 res= not normal\n", + "Test pval= 0.1559244997516793 res= normal\n", + "Test pval= 5.4492134141853295e-12 res= not normal\n", + "Test pval= 0.027428045061480538 res= normal\n", + "Test pval= 0.00011538203750856845 res= not normal\n", + "Test pval= 0.07350032657006557 res= normal\n", + "Test pval= 0.10474460687572516 res= normal\n", + "Test pval= 0.0015506993297124128 res= not normal\n", + "Test pval= 0.36679129167153646 res= normal\n", + "Test pval= 0.011263558096640853 res= normal\n", + "Test pval= 1.4403372640862255e-05 res= not normal\n", + "Test pval= 0.017985610179734428 res= normal\n", + "Test pval= 0.008018485213850552 res= not normal\n", + "Test pval= 0.06774855935762493 res= normal\n", + "Test pval= 0.057097963780292554 res= normal\n", + "Test pval= 0.019022081578872616 res= normal\n", + "Test pval= 0.021072819215708735 res= normal\n", + "Test pval= 0.5847583599406958 res= normal\n", + "Test pval= 0.34703248983489265 res= normal\n", + "Test pval= 0.005743759434418153 res= not normal\n", + "Test pval= 0.05305732031736986 res= normal\n", + "Test pval= 0.0009839608073665932 res= not normal\n", + "Test pval= 0.07283923280212494 res= normal\n", + "Test pval= 2.232637543452161e-06 res= not normal\n", + "Test pval= 0.012943908206025189 res= normal\n", + "Test pval= 0.05971194449910225 res= normal\n", + "Test pval= 0.002870485543548689 res= not normal\n", + "Test pval= 0.042672987739536226 res= normal\n", + "Test pval= 0.029170249033746622 res= normal\n", + "Test pval= 0.002812593222739167 res= not normal\n", + "no. of normal = 26\n", + "no. of not normal = 14\n" + ] + }, + { + "data": { + "text/plain": [ + "(26, 14)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABNMAAATFCAYAAACKHpDOAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Qu8TPX+//Hv3u73WyG55HRDiCjp4sg1qV/inE4lJIeTUCg5Sq65pEKdSEnUqY5yogtCFMqdjnIpRXUot45CyHXP//H+9l/TzOyZvWfvPdc1r+fjMY/Zs2btmbVm1ne+a33Wd30+aR6Px2MAAAAAAAAAZCs9+1kAAAAAAAAACME0AAAAAAAAIEwE0wAAAAAAAIAwEUwDAAAAAAAAwkQwDQAAAAAAAAgTwTQAAAAAAAAgTATTAAAAAAAAgDARTAMAAAAAAADCRDANAAAAAAAACBPBNAAAAAAAACBMBNNcZPLkySYtLc00atQo6PN6rnfv3tm+znnnnWfndW7ly5c31157rZkzZ07Q+a+44go733PPPZfndQDi1R6+++47v+0+PT3dlC1b1rRp08asWrUqrPek7SCV+ootW7aYO++805x77rmmUKFCplKlSqZjx452ejiaNm3q117U3i6//HLz0ksvmYyMjEzz33rrrXa+gQMHhvX6QCTMmDHDu41+8sknmZ73eDymSpUq9vkbb7zR3HXXXX7bdaib5svKQw89ZOf7y1/+EnKeH3/80dx///2mRo0apkiRIrbPUb+iNnLkyJGIrD+QEzt27DB/+9vfzB/+8AdTuHBhU7JkSXP11Vebp59+2vz66692npMnT9rH9evXt8+XLl3aXHLJJaZHjx7myy+/zPL1A/fV8uXLZ6pWrWpuueUWs3HjxkzzHzx40C6H5v3iiy+itt5AVn2H73HBddddZ95//32/eZ3nn3rqqZCvs379eu+0YcOG+b1u0aJFTa1atczgwYPN4cOHgy4P+1zRkT9Kr4s4eO211+zB/Nq1a8327dvNBRdckOvXqlevnnnggQfs37t37zbPP/+8ad++vT3ov+eee7zzff3112bdunX2ffX+PXv2jMi6APFqD7fffru54YYbzJkzZ8xXX31lAw/q+LSd16lTJ9v/p+0gFfqK2bNn27ainbFu3bqZ6tWr24OcadOmmX//+99m5syZ9uAmO5UrVzZjxozxBgZeeeUV+3pqe2PHjvXOp53D9957zy73v/71L/ucdvKAWNEB+euvv26uueYav+nLli0z33//vQ0oiwIJLVq08D7/7bffmiFDhthAgU6uOM4///yQ76UAnbZzbe/a7n/55RdTokQJv3l++ukn07BhQ9s27r77bhtQO3DggPn8889tf6M+pXjx4hH8BICszZs3z/z5z3+2baFz586mdu3aNnCmIPSAAQPsiZYXXnjBdOjQwQYT1Id0797dnDp1ygbR5s6da6666iq7LedkX01BMm3zes3Vq1fb/TDHrFmzbF9RsWJF2/c99thjUf4UAH8jRoyw+0j6Xd+3b58Njmnb1W+7TsD4euKJJ+xvt4Jj4dB2r995nTxZtGiRGTVqlPnwww/NihUrgu4jsc8VBR64wjfffOPR1zl79mzP2Wef7Rk2bFimefR8r169sn2tatWqedq2bes3bc+ePZ5ixYp5LrroIr/pQ4YM8ZQvX97z1ltvedLS0jzffvttBNYGiH170LaraU888YTffO+//76d3rNnz2zfl7aDVOgrtm/f7ilatKinRo0anv379/s99+OPP9rp2uZ37NiR5bL88Y9/9FxyySV+044ePeqpXLmy/f+TJ096p7/00kueAgUKeD788EO7fEuXLs3BWgO5N336dLvNtW/f3nPWWWd5Tp065fd89+7dPQ0aNAj6+y/r1q2z/6/XCZeznete2/2MGTMyzTNu3Dg7z4oVKzI9d+jQIc+vv/4a9vsBkehbihcvbn//d+/enen5r7/+2jNx4kTP2rVr7XY7atSoTPOcPn3a87///S/L9wm1r/buu+/a6T169PCb3qRJE9t2+/Xr56levXqu1w/Ibd+hPsDXTz/9ZH/X77jjDu80zVevXj17/9RTT2X7OkOHDrXTtM/lS9u6pq9cuTLT8rDPFR1c5ukSOttSpkwZ07ZtW/OnP/3JPo4kndGpWbOmPcPqS2dp9X6KrJcqVco+BtzUHpyRBLp0ITdoO3Bb29CZ02PHjtkRBmeffbbfc2eddZYdjXn06FEzbty4HL+2zsZeeeWV9v911tR3uVu2bGlHiao9RbqPA8IZCaORXx988IF3mkbdaCTmHXfcEdH30vatS3a0vWuUW7DtXX2SLnFTewmkS+c0kg6IFf3ea3SMRiefc845mZ7XCGhdkuzsS+nSz0DansuVK5er92/WrJm9993X2rlzp/n444/NbbfdZm96buXKlbl6fSBSdFmzLsvPn9//AkG1CW3HakvOJdGRaAdZYZ8r7wimuYQ2cl1KVrBgQbvD51xCFikagr1r1y6/Tm7NmjX2EiG9n95X709jg9vagy5dEwUgcoO2A7e1DWfov+8la76aNGlin9clP7nxzTff2IMq7XA6l0t/9NFHdnlF9wpgKJABxIq26caNG9tLXhy6rOzQoUP2QD1STpw4Yd566y2/7V2X7ezdu9dvvmrVqtlL3P75z39G7L2B3FK/oDxpukwzK9punb7o9OnTEXt/J0jnu6+ltlqsWDF70lK5BHVpNftaiDX1Ef/73/9ssEqXOusyTgWelXM2kHKh6VLQ3OZSDtYOssM+V94QTHOBDRs22FwDzs6c8nnomui8dBgKAKjh66b8G8p9oMatXAiOV1991Sbddc4u6f23bt0aNAEokCztQSNutN1re1eej65du9rpGsUTDtoO3NxXaKdQO1qXXnpplvPVrVvX5pFSrqesKBjgtBctm0YufPrppzafiJMzRAdEysFz880328da/p9//tnMnz8/7OUGIkEj0N5++23vqAG1nT/+8Y+2+EakKG+UkqY77bRdu3amQIECNg+hL+VJ08hQFTLQyAEdoKmtqI0CsaT8Sj/88ENYeWU1CkZtZurUqbb/UZtSblqNIssJ33015S10Cnr47mupfarf0CggUTGPN998M6JBPCA7Gl2s32oVH1AeQeVMU9J/jfwKpJOUGg2mKwDCGZ2m3JlqBzrxr6sF1JYqVKgQ8mQn+1xREKXLRxFDygNQoUIFm2vA8cADD2SalpOcaZrX95YvXz5Pp06dPMeOHbPzKGeI8u08+OCD3v/TeykHlO80IFnag5OHI/CmHCCB+QtCoe3A7X3Frl277PN33nlnlu/VsWNHO9/3338fch7l7whsL8ofqLxTvnlA6tev7/nTn/7k97/KURU4DYgG33w1yhGYP39+z5tvvuk5fPiwp0iRIp6pU6fa+SKVM+2WW27xNGzY0G9ahw4dMk0T5aa65557bBt22lDBggU9I0aM8GRkZOR6nYGcCLdfcBw/ftzz2GOP2fxqvr//t956q+fnn3/O8n9D7auVLFnS8/jjj3vn++yzz+z0uXPneqdt2rQp0zQg2n3HpEmTPB988IG9vfrqq57rr7/e9iPK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2rX9phUrVsyUK1fOO71bt252FFnZsmVtgKxPnz42gKbiA6Kh3AqaderUyYwbN87mSRs8eLAtahAsYAYAAAAA4SCYBgBIShMmTLBVeDQyTUUDVKlz8uTJ3ufz5ctn5s6da6t3KsimYFyXLl3MiBEj4rrcAAAAAJIbwTQAQFJYunSp32MVJpg0aZK9hVKtWjUzf/78GCwdAAAAgFSRHu8FQOI67+/zTO1hC+O9GACAJEK/AeRunwsIF7+zABB/BNMAAAAAAACAMBFMAwAAEcfICQAAALgVwTQAAAAAAAAgTATTAABARHI+kfcJyD1Gc+bN2LFjTVpamunbt6932vHjx02vXr1MuXLlTPHixW3153379vn9386dO03btm1N0aJFTfny5c2AAQPM6dOnMxXAueyyy0yhQoXMBRdcYGbMmBGz9QIAJCaCaQAAAACS1rp168zzzz9v6tat6ze9X79+5r333jOzZs0yy5YtM7t37zbt27f3Pn/mzBkbSDt58qRZuXKlefnll22gbMiQId55vv32WzvPddddZzZu3GiDdX/961/NwoUEPwEglRFMAwAASDLPPfecDRyULFnS3ho3bmzef//9iI/IQXxGqDHSM3xHjhwxHTt2NFOnTjVlypTxTj906JCZNm2aGT9+vGnWrJlp0KCBmT59ug2arV692s6zaNEis3XrVvPqq6+aevXqmTZt2piRI0eaSZMm2QCbTJkyxVSvXt089dRTpmbNmqZ3797mT3/6k5kwYULc1hkAEH8E0wAAAJJM5cqV7WVtGzZsMOvXr7fBgptvvtls2bIlYiNygGSgoLG25RYtWvhNV9s4deqU3/QaNWqYqlWrmlWrVtnHuq9Tp46pUKGCd57WrVubw4cPe9uS5gl8bc3jvAYAIDXlj/cCAAAAIGduuukmv8ejRo2yo9U04kaBNo3Ief31122QTTQiR6Nq9PyVV17pHZGzePFiG0jQqByNyBk4cKAZNmyYKViwYJzWDAjfzJkzzaeffmov8wy0d+9eux2XLl3ab7q2dz3nzOMbSHOed57Lah4F3H799VdTpEiRTO994sQJe3NoXlFwT7e8KpTu8b5eqnM+Az4LPgMg1gimAQAAJDGNMtMItKNHj9rLPbMbkaNgWqgROT179rQjcurXrx/0vfISJOCgN7RC+TzeAIlzL3xWJuRnsWvXLnP//feb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XC0nkOi+/vprU6lSJdteFFTWMXfVqlXNhg0bbB62Fi1aeOetUaOGfW7VqlU2mKb7OnXq+B3H69hex/Fbtmwx9evXD/qe2VW8pUpr1grl8/hV9nXuhc8sM9/tKZKfT8QjU8uWLbNDoy+//HJz+vRp8/DDD9sh1IpY62yPMFwUAAAAAID4adSokZkxY4Yd+KJjbuVPu/baa211XF32rJFlvgU8RIEz57Jq3fsG0pznnefyWvGWKq3BjbvC/7EKkjiyOzmQyj744ANz7NixxA2mLViwwO+xGqcSeiqy3aRJE4aLAgAAAAAQZ23atPH+XbduXRtc02hN5QUMVa02ErKreEuV1qzVHrbQOyLNqezrFCbZPIxL0AP5bk+//vqriZSoXzOp4Jko8adEc7goAAAAAADIOY1Cu+iii8z27dtt4OHkyZPm4MGDfqPT9u3b582xpvu1a9f6vYaed57La8VbqrQGd+JMmv/jjDTvND6v0PTZ6OrJpAimZWRkmL59+5qrr77a1K5d206L1nDR7K67zi23X6+tqHahfKGfD3YddjBu/HzC/e7duO4AAAAAUsuRI0fMjh07bIXbBg0a2ODDkiVLbBEP2bZtm81trtxqovtRo0aZ/fv326vRRCOANLpMlXIBN4tqME2503S99SeffGKiLdzrrnPLrddrB15vHYrvddjBuPna7Oy++0hedw0AAAAAsfDggw+am266yV7auXv3bjN06FBb5fb222+3uc27detmL8fUVWYKkPXp08cG0HQ1meiyTAXNFHwbN26cHfgyePBgGwcINvIMeUNl6BQJpqmogEpNL1++3JaQdmi4ZzSGi2Z33XVuuf16bed661CCXYcdjBuvzQ73u3dGQQLB0OkBAAAgEX3//fc2cHbgwAFz9tlnm2uuucbmMdffMmHCBJOenm5HpukqMKVemjx5svf/FXjTMb/SMSnIpoKDXbp0MSNGjIjjWgFJGkxTmWpFrOfMmWOWLl1qqlev7vd8tIaLhnvddW659XrtwOutQ87ncx12MG78bML97t287gAQzSDzd2PbxntRAABIWTNnzszy+cKFC5tJkybZWyga1ebmq5SAmAXTNKRTlTrfeecdU6JECW+OMw0TVUUQhosCAAAAuUdAGgAAlwXTnnvuOXvftGlTv+nTp083d911l/2b4aIAACQnLl0GcoY2AwCA+6RH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2lYL0XNuctZZZ5l8+fKZffv2+U3X41Drquk5md9N647Eam+//PKLuf76623lIv34FShQwCSCVGhXeWk/Tz75pO20Fi9ebOrWrWvczI39TrJv3/z2R0Yq/8anatuJNvqV8PAbhqz07t3bzJ0711Y6rVy5skkE9Be5R7+R+P1HyoxMO/vss22J2KxuBQsWNI0bNzYHDx601906PvzwQztkViVW3UTr26BBA7NkyRLvNK2nHutzCEbTfeeXDz74IOT8blp3JE5709mnVq1a2dd49913E+osdCq0q9y2n3Hjxtnh9wsWLPDLieFWbux3kn375rc/MlL5Nz5V20600a+Eh98wBKMaDAqkKZCk39jq1aubREF/kXv0G0nQf+SoXEGKUFne+vXre9asWeP55JNPbIld37K8Kpl68cUX2+cde/bssaVVp06daiuRLF++3D4+cOBAVJZR5Y/1PqFuq1atsvM5j5988smQr6FyuTNmzLBVVHr06GHLyO7du9fO06lTJ7vuga9ftmxZz//93/957rvvvkzldp1qLIUKFUroqqYqoatlzGrd//73v3vnP3HihP1OdTvnnHM8Dz74oP3766+/juNapF57O3TokK1KU6dOHVsGW23PuakSi2i6vs/q1avb71jVWa666irPxIkTPceOHfN7f/2Pvk9tsyqzHszQoUP9tv8iRYp4atasaUuya3mCbVuqPuT7P3qsct/Tpk3z3HnnnX7blspYO/N369bNvl+il7HOafsZO3asra7073//2+87++WXX+K4Fokj3v1OTtrM66+/7t2up0yZku13r+07f/78npYtW/q1icKFC2fZjlSyXPOpQlMk8duf/L/x0RbOtqft5YEHHrDLrj6haNGinssuu8wzcuTIkPs+559/vn3dzp07h7Xtqe2kp6dn2gdTVVlVLXP+z9e8efPsPNpWVc0smdCvROZzirVgxyRnn322p2nTppn2q8I5LvGt5phVBWvnpv5F9w0bNvS89957nv/+979+8yfLcUle9OzZ01OqVCnP0qVL/dpCYP+d6JKxv8hJ29A2qN/mVq1aeZ5++mnP4cOHM/3Pxx9/bD8HVaLU/OXKlbP9gKpxaltu1qyZfa1x48YF/V1s166dfb5///6eL774wntMEXhMouXQfpnaU6Bwjo0Szcw49R8E04LQgYgabvHixT0lS5b0dO3a1e+D/fbbb+3G5bvxBR5sOzc1omg2zhEjRnj++c9/Zrr9+OOPdj5nOSpUqOA5evRo0NcYMGCAp2rVqnaD0o7j6tWrvfP88Y9/9LRu3drOp8CZXls/2No4NS1fvnyeV155xe91H374YU/FihXtBq2DvET2j3/8I8t179KlS6bvPfCm+RC79ha4E+V707xz5861BzbaRrXNvvDCC55nn33Wc9ttt9nOpHv37n7vv2jRIvu/5513nqdjx45Bl9Fp388995xtA7q/5ZZb7LTGjRt7MjIyMv3PBRdcYNuHbn/4wx88999/v6devXr2f6pUqeK3bWlnQMvm7BDWqlXLHhAlupy0Hx38BfvO9Nkivv1ObtuMtm3t4GX33Tul6nUSxjnIVxAiu3akYJ7apZ6PdOCK3/7k/Y2Phey2vbVr13rOOussGxD+61//ardl3XQypFixYvYAJdBXX33lPRmp/aNwtj259957ve3t3HPPtW1U86jtKfgduG93xx13eJf9gw8+8CQb+pW8f06xFnhMouOCJ554wnPJJZfY6QpwOcI5Lgk3mNa+ffug3/+f//znpD0uya1Qv5nROg6NlmTsL3LSNl566SXP6NGjbTBNAS39hn322Wd++0qaroDi448/bvfHBg0aZI8jfPuNK6+80hso8v1dVJBRfYMGvFx00UV2frVD5ySL+ianjQ4fPty2Q71fYMAsnGOjRPSPOPQfBNOSVLgdjuZxDuCfeuqpXL2G80M1a9Ysv+nPPPOMna4fBYcOhtTwFA3XQZLOSgGx8s0339gOuEaNGp7du3dnel4HRRpp40sjBDSaQGeIdBB05MiRTP/nBC2cILXD2ZFbuXJlpv/Rj7Y6MF/acaxcubJ9n5MnT3qnq3NV0OLDDz+0r6czi0Ayt5lgctKOtFyaNnv2bDvCYdiwYbleRyAnstv2NLJFQS0dhOisfyAd3Gh0WqAhQ4Z4ypcv73nrrbfswUu4B3qh9tW0n6XpGinqUFtUm9T+mQ7G7rrrrhysOZA7obbRn376ye7bKMDr4LgEqSSrbXrJkiX2RKaCOs4IQp1M17GDRsQH2rdvn/dv9R8aDe07ak+jydS2tL0HBqpFy6ERzb4+//xzO13BvUjs56WilMmZlspUGrlZs2b2uuBff/01Yq+r15Rvv/3WO23FihXmu+++M7fddpu9KQHm999/H7H3BLKibfzIkSNm2rRp5pxzzsn0/AUXXGDuv/9+72O1B+WX0LZ666232sfvvPNOntpAVooWLWquvPJKc/ToUfPjjz96p7/22mumZcuW5rrrrjM1a9a0jwE3tplw25HaQJkyZWxlrj/96U+0CcRMdtve888/b3744Qczfvx4m+snUIUKFczgwYMzTX/99dft6914442mVKlS9nGk243aptrkn//8Z9tGZ8+ebY4fP56n9wFyq3Tp0qZIkSImf37/encclwC/ba+PPvqo+e9//2teffVVO23Hjh3m8ssvtznAApUvX97793nnnWcrlv7rX/+y+dDkmWeeMRs3bjTPPfecPd4IR506dWzyft82E439PDcjmJbkDh06ZP73v//53Q4cOJBpPjU4VbRQA4sUNXgpV66cd5p2Os8//3z7Q3DTTTfZxqyGDsTCe++9ZysCXXXVVWHNr0SlCiSow1C1l6ZNm+booD1YG8jON998YyvOaCdTdu/ebT766CNz++2328e6//e//21OnjwZ9msCydJmctKXtG/f3u5Qqk18/fXXZt26dXl6HyAc2W17agMKECgwFq41a9aY7du329fT6+r1o9VudFJGbVNtVBXu1MaBWB6T6GThli1bTM+ePW1/ceedd2aal+MSwJhOnTrZ+0WLFtn7atWq2aT54QR8+/XrZy699FLbztS/DBkyxP7uq6ppuH7++Wd7820z0djPczOCaUmuRYsWtkqK7+3cc8/NNN+1115rd7CeeOKJXJ8F0k6ZOsk9e/aY+fPn29EKaWlppkOHDvb5U6dOmVmzZtnGJ9rZ/L//+z8aIGJC1Xw0WkBnWcKlM0EKIlSpUsU+1rarDs131JgvledWG9BZzhdeeMFMnjzZjkJQ+wrmzJkz3iD3l19+advMp59+am644QbvWSPt1BUqVMjcfPPN3mVQx6Y2BiR7m8lNO1IlL7UXpy+55pprTOXKlelLEHXhbHtffPGFueiii4KOHMiq3ajNaESO6PW3bt1qRxHkNFChg6w33njDjBgxwu5naaSb7N+/3yxevNi77FWrVrVVzGg3iPUxiUbQ1K5d28yYMcO89NJLduR9II5LAGP7F41UdgLBAwcONLt27bIBYI1cU4Dsk08+sZUpA2nEp/ahNKpM1U71eOLEiVm+n0YqOwHvtWvX2lHMOlbRfST381JKvK8zRd6uwVbFKSWY9b0p71Kw66OXLVtmH48fPz5PVXOcm3KJ+BYfeOedd+z0zZs3e6cp6WjgNCAadu3aZbc1VcoMx//+9z+by0OJ1n0TnwZOyyrRu/IarF+/PujrK2da4PzKk9O2bVu/nFHKa/OnP/3J738bNGiQaRqQTG0mmHDbUb9+/Ww+Kt9KXCpYEDgNiLRwtj0VArjmmmvCfs1Tp07Z/SVVgXXotZQ/zXdaTqu3K8/OggULvPMpt42SLitPlW8y5sBpQCyOSV599VVbkVCFlZQn0MFxCVJJONu0cnCqaJlDv+vKYeZbgVMFCFTdORinSI2K4GQlWJtRER3lE3QqP+d1Py8V+V/EjqRzxRVXmIYNG4Y1b5MmTexZIOUouOeee3L8XoqO60ySLlHT9dXK7eSbB0GR7OrVq9tRNhpuKoqsawSOzgKNHj06x+8JhKtkyZLeM5Xh0Jl9nbWsX7++d3sVnd3R9tqrV69M//PWW2/Z9ylQoIA9m6TtOyvKaTB16lR7prRw4cLmwgsv9Mt5oBEO//nPf0znzp39lkFDqidNmmRHDjnrBSRjmwkmq3akM6QzZ860fZVvDg+9x1NPPWUvf2jVqlUO1hIIT7jbnrbdcNuMOGf0tb/m2270PhqZ/Pjjj5v09OwvFFGfoBFx2u/SSM6LL77Y7/+0D6b3UKoPJ92H2qpSBmh0To8ePXLwaQB5PybRZc3aBnv37m1HUAaO5uS4BDD2kkrfY4PWrVvb27Fjx+xoae17TZkyxbYhjZz2nVd0CbOEEw/QVTBqjzouKVGihLnkkktMsWLFIr6fl0oIpqWYoUOH2gN1JdB1cjaFS5cCaQh3MDroV14ODR9VwCCQEu2OGjXKNl4gGnSAU6lSJbN58+aw5neG+TuX3QTLbaZcUoE7ftphC5c6qFBtRpyEo8p7oFuwoEPXrl3Dfj8g0dpMMFm1ow8//NBesqOghm7BloFgGqIh3G1PRQd0eaaCVOFc6um0GyVyDmbZsmU2oJCXk6e+ed2C7YNpGQimIdYU7NW2/fTTT9ttVAfugTguQSrTZfu6hF/FngIp6KtgsW7aZxo+fLh5//33TZcuXXL9fjqBmdVxSaT281IJwbQU88c//tF2WjoTqjM6keJUjFIi0cCDpG3bttnKVqqoo/wjQLTorI3yB6xatcrmiglFow5Wrlxpz86oTfhSXgIlBNWOVrCKbJGiEdd6D+1o3nvvvZmeHzlypO3UCKYhldqMtnmdddUonGD9jCpM6Qytct8AkRTutqck5movOtnhFI4JRZWbVQXtL3/5S9CCBffdd5+3aEBel10jPf/5z3/aUTq+lG9HVd527txp86gBsXT69Gnv6JtgOC5BKtNvtmgkWlacEyk64RMtiXBslJTifZ0pcifcvAK+uQkcS5cutdPr1auX6TUOHjzo+eKLL+x9YG6CWbNmhXyf5s2b2+u5gzl+/LinePHinnvuuScHawjk3Pbt2z3FihXz1KpVy7N3796gz0+cONEzcuRIu03v3Lkz6Ou0bNnSU6NGjUy5nnxznQW+rm6BOdOUCyqUjz/+2L6mb34PX6NGjfKkp6d7fvjhh5CvASRqm9m9e7ftS06ePBl2Ozp27JinRIkSnrvvvjvo88oXov+fOXNmLtYUCC0n257yj51zzjn2tm3btkzz7tu3z7YX+ec//2n/b/ny5UFft3v37p7SpUvb/SRR21C7OXr0aI7295Rvp1mzZkGf+/77722+zrFjx2bzKQC5E2ob1e//hRdeaPP2HTp0yE7juASpJKvf7yVLlniKFCniqV69uufXX3+10xYvXhz0dXr27GlfZ/bs2dm+h9qd2oz2w3wFa3u+crqfh99QzTPJabinLhULvGkYZiiKNusWrIqUzrwq54Duw7V7927z0Ucf2Qo5wShXgSLuytmh67CBaFEuDJ010fav7bhv377mxRdftNUCVZq9Vq1atoKazuLXq1fPW6kmkLZl5SVQ5c1wNG/e3N5yQsugEQRt27YNuQw6ExTsciMg0dvMoEGD7OupWmi4VI5duahC9SVXXnmlrRRHJTZEWk62vTJlyth9pBMnTtg2ocsndYmabn/729/s5Toff/yx/T/NX65cOVsZLRi938GDB828efPs42effda2G1VZC9eaNWtsbptQy64K75dddhntBjE9Jhk/frwd7azLO/v3759l/leOS5AqbUMVbjUKU9ufLrdU/kv1P8qr7OQ00+XLDz/8sJk2bZodVaztWCMslRtNI6Ozo/0utRnth+VEpI+NUgXBtCSnIdEadhl4W758eZb/N2zYsIgtgw72ddCfVQPXc0qIqx8TIJr0Y//555/bS2p0eY2SZf7973833333nU0ifffdd9vOILvt1TenWaQ55dp1gFW2bNmg86isvBLnRmsZ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NABAwtm1a5e5//77bbDCN+dmtA0aNMiv2I1GplWpUsW0atXKlCxZMurvr9FJWueWLVsmdaXg2sMWev/WiDQF0h5dn25OZKTZaZuHtTbJLBrfkzMKEgAAAImPYBoAIOHoMs79+/ebyy67zDtNBQWWL19unn32WbNw4UJz8uRJW+jGd3Saqnmq4IDoXlWjfTnVPp15AhUqVMjeAilgEsvgVqzfL9JOnEnLPC0jzTs9mdctWt+TWz4TAAAQ31HSSrPhe3UAoiM9Sq8LAECuqdrzpk2bzMaNG723hg0b2mIEzt8KPixZssT7P9u2bTM7d+40jRs3to91r9dQUM6h0UQaYVarVq24rBcAAACA5MfINABAwilRooSpXbu237RixYqZcuXKead369bNXpKpCtEKkPXp08cG0FR8QHRppoJmnTp1MuPGjbN50gYPHmyLGgQbfQYAAAAA4SCYBgBIShMmTDDp6emmQ4cOtgKnKnVOnjzZ+3y+fPnM3LlzbfVOBdkUjOvSpYsZMWJEXJcbAAAAQHIjmAYASApLly71e6zCBJMmTbK3UKpVq+aaypEAAAAAEgM502CTFPpWXgMAAMll7NixJi0tzfTt29c77fjx4/ayZl0eXbx4cTuK0ynC4VCewbZt25qiRYua8uXLmwEDBpjTp0/HYQ0AAACSB8E0AACAJLZu3Trz/PPPm7p16/pN79evn3nvvffMrFmzzLJly8zu3btN+/bt/SrkKpCmyrgrV640L7/8spkxY4YZMmRIHNYCAABEY+AMooNgGgAAQJI6cuSIrXI7depUU6ZMGe/0Q4cOmWnTppnx48ebZs2amQYNGpjp06fboNnq1avtPIsWLTJbt241r776qqlXr55p06aNGTlypL10WgE2AAAABEfONAAAgCSlyzg1uqxFixbmscce807fsGGDOXXqlJ3uqFGjhqlatapZtWqVrXqr+zp16pgKFSp451EhDxXt2LJli6lfv36m91OxD90chw8ftvd6L9/7VFQon+f3v9M9fvep/LlEattI5c8QAJB4CKYBAAAkoZkzZ5pPP/3UXuYZaO/evaZgwYKmdOnSftMVONNzzjy+gTTneee5YMaMGWOGDx+eafpHH31k86598MEHJlWNuyLztJENM+w9hVBMnreNY8eORWxZAADIK4JpAAAgYsjNERu7du0y999/vw1QqLJt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iBcgOO+882xlhMBbr1697PNNmzbN9Nw999zj9xo7d+40bdu2tZfUKCfOgAED7IgDwA0ef/xxO9JFZ0WvuOIKu+OmUS/nn39+0EqGdevWtZUMd+/ebSsZilPJ8MUXX7SBg2uuucZWMpw5c6adD0h0R44csZU1dXOKDuhv/f6rX+jbt6957LHHzLvvvms2bdpkOnfubCt0tmvXzs5fs2ZNc/3115vu3bubtWvXmhUrVpjevXvbSp+aT+644w5bfKBbt25my5Yt5o033rAjCXxHngEA3It9LgBA0oxMW7dunTlz5oz38ebNm+3lDH/+85+903TwM2LECO9j3zw0+l8F0jQqYeXKlfYskA6idMZ29OjRkV5cIOYUHNAZT7WJZcuWmXPPPdfce++9tl2EU8lQwYLsKhnecsstcU+s7ry2770bsE65f31f69evtyMFHE6Aq0uXLmbGjBnmoYceMkePHrVn/jUCTQcvOphxRgnIa6+9ZgNozZs39152o9EFvu1Guc50Mkej18466ywzZMgQ+5oAAPdLlX2uZN43KZTuSdplT8TPPZGWBXC7iAfTNHza19ixY+3Znz/+8Y9+wbNQ+Wp04KNh1YsXL7ZV13SJz8iRI22ug2HDhtlRBkAy++abb2wuDgUPHn74YRuAvu++++y2rUBCpCoZJkpidbcmGWedwhcssbpGKWtEQCganaaTLr4nXgJpe8/uEhuNMvj4449zuMQAADdItX2uZNw3GdkweZfdkUjLTjEbwCU5006ePGleffVV24HpwMh3NIGmK6B200032dwETseisz916tTx69R0Rkl5cnSZTv369YO+V1ZngNThOX/DSfz825kgPpO8n1nK6f8op5PObjojLbVNawTnlClT7I5dtMQ6sbpbk6s76/To+nSb92nzsNYm2UX7eyKxOgAgHlJlnyuZ97eSuSBNIn7u7HMBLgmmKdeALs+56667vNOUw6ZatWo2p83nn39uR5xt27bNzJ492z6vMzzBzg45z4USzhmgRDprkAhngNRxzZ8/P96Lk1Bys43k9AyQqhPWqlXLb5ryP7311lsRrWSYKInVY/UesXDe3+eZQvk8tuqUAmmqpuOG9Yr29+SmzwgAkDxSbZ8rGfe33FCQJpGWPVGWA0gFUQ2mTZs2zbRp08abDFp8c9VoBJo6LuW72bFjhzcZaKTPABUpUiTh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5t133036fTSERt0/S5cubbzi4MGDZs2aNXZ/Hdpvfa3PJR4tj1xflC1OtL7XFOcziZchP3TokKlRo0Yat9T7UhV72eLH+EnF8Y/UCUL75Mc4SgZtTXDaDb8c47QP3uWVuPFqrBAb3uCVOPBrnCTD77Hky2Tatm3bTK1ataKW6YJDJ6d6LRn/+c9/zNixYwvtJuo22u4jR46Y2rVrRy3X14n2XcuLsr7XFOcziTV06FBTt27dfH+0kPrYyyY/xk8qjn+kThDaJz/GUTJoa4LTbvjlGKd98C6vxI1XY4XY8AavxIFf4yQZfo8lTyXT7rjjDluErqDHv//97xL/nN27d5vu3bubxo0bm1GjRqVk2+FdGq89c+ZMM3v2bFs0MYgyFXuAV9E+oaT81tbQbgBFR9wAxAG8w33jQwpw2223meuvv77AdVSsToXqYgvaHT582M72UVgRu59++skWJKxSpYo9oS1TpozxkqOPPtqUKlXKbN++PWq5vk6071pelPW9pjifiUMFv3WB88Ybb5hmzZqZoMpE7LmBH+OnJMc/kkf75O84SgZtTXDaDb8c47QP7uO3uPFqrBAb2eW3OPBrnCTD97EU8nExwvfffz+8bMGCBYUWI9y1a1fonHPOCf3iF78I7d27N+R206ZNy1d00Snyd9NNN4W++uor+7rz0P4fddRRoQsvvDC0YsWKqAKGF198cdR7tG3b1hYwVNG/yPc45phjQueff37opZdeirtNZ599tl3vkUceCbmJ85lEFj487rjjCix8eO+994aqVq0aWrlyZYa2Mrixl+pCoE5s6PH222/nez0vLy90/PHH29dji3e2atXKHuM6ZvT7L1euXKhUqVL2b8PGjRvzvVdk/Djb7zxKly4dOvHEE0O9evUKffHFFwk/L/2MdBY/Lc7x75XCn17jpvapuHGiryMLySZ7zKmwfmR8VKhQIdSoUaPQn//859Dll1+erx1S7Gg9vZdX0NZ4t91wrFu3LnTttdfa4sia5OPYY48NXXPNNXZ5vOPTeaidyM3NDZ111lmhb775JmFbMWXKlPBx7ZxrJSP2fE7b1blzZ7v/8Say0Ota97XXXivwfWkfvMltcZOobXEelSpVCvXp08fGRuQxpjbtjDPOiPr+eNcluv6IfD+1J82aNQvdd999of379+fbhiFDhtj19F7FRWy4n1vjIDYG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M6ZevXrmvPPOs18r6DZs2GA+/PDDNO0VkBw1Li+//LL5+eefw43DL37xC1O3bt2o9T755BP73LRp0xL/TDU4ipetW7ea1157zdxyyy12Gu+ePXuGY2rWrFnhREWFChXMr371Ky544Po4SQXNsqX40IXVE088YR555BFTu3btcBJjzZo1dsp7Jz7OP/98c/zxxxMfSBsljrds2WLOPPPMAtfTTKvffPON/Rsf+b06nrVcF/GjR4825cqVMxdffHHU96biuHYuor777juzevVqex525MiRfOdj5557rj0nE/28hQsX2u8BMinZ2CgK53pEF//jx4+37Zbi8vTTT7evz5071+zcuTMcZ5dddpmd+XrmzJkp2y+gODHw/PPPmzFjxthz/pLEwNSpU80xxxxjH7rBc+2115qOHTuaJ598MmXbpRlSNbu4E0f169e3N105D8uPZFoAjBw50gacMsu6WFHS4P777086maaTMCdodaKpJIB679x7773hKYgViFdddZVNGEiHDh1MrVq1CDpk3ZVXXmkTBDrB0gWQnpU4iLV79277XKVKlRL/zN/+9rc2XpSI6N69u9m7d6+9a9SqVatwr5/vv/8+fOdU9P+PPvrIrF+/vsQ/H0hXnKSCLnoUHyeeeKL5/e9/b0455RTb20e9M0XthpJruiMqalfUvuhiSIkDINWc5Fhhf/+d1532Qjp16mSPZyWvdF5VqVIl2ztMibJIqTiunYsonV+1adPGLF++3AwePNjceuut9nW1KwsWLIhqW3QTRz/rhRdeSPrzAFIh2dhIls6lnOsRtRt33nmnvcCfPXt2VJzpXEuvOzGr8zCuR5DtGFBiqnLlyvZ4Pe6444r9npdeeqlZtGiRfbzyyitm2LBhZv78+fac7b8jQUu+XWqXcnNzw50ARO2Krl/UGxr/U7y+gPCUG2+80d611B1NdXV+8MEHi3RBohO2u+++256M6WKnUaNGpnr16uHXnTuerVu3tkM9HTph1LAhJd0UkEA2qLFQo6Fu0OqlqWM/XiK5atWq4YuqyOO7OEaMGGET16VKlTJHH320jZnIrtfqOaBEgu7QOjGjIZ+KL53w3XPPPSX6+UC64iQV1ENB8abeArqo0rHv0M/VSZzaj6+++iqqHdJNoMWLF5suXbqkZbsQXE6SLLLHWbJJtylTppjTTjvN3ul/6qmnzLJly+zf9kipOq51EXXTTTfZ8zFtwxlnnGETFA7d2FTP5xYtWkSdj+nnqG0ZMGBAUp8HkArJxEZRlC9fPjzMTO+j86jIxJx6pGk0gGIk8vjXqBm1O59++qndHiDTMaBrAN1M0c3EolwTO51UIumY1/maQyNbNDzz9ttvtzdCVTqmpNul6xRd1+sGjR6iduXgwYO2U41yC/gvkmkBcOqpp4aDTt03dYF/xx132JM6p6dMQZQMiAzaWM7dHvVsiGfp0qXhO7FANuhuzQ033GBrZnTr1i1usqxhw4b2ee3atQlr5iRLQ0UTxYx6NOhkUMltxWYsJTPGjRsXtwEFsh0nqaDaU2pX4tENHw2PVuIh3rActTck05Bq1apVM8cee6wtZVEQva47987NF9EFh3MupSFlGr6pWNq4caO925/K4zr2Iire+4hTciPWl19+aU466aRCfw6QCsnERlHo+qWg418X+aqZpgS1HvHiQ0NNgWzEQLzksDjlNWLpxqazTmE0zFOUsE4mmVbQdkXW8ox3naI4Ipn2PyTTAujPf/6zHVc9fPhw2y20JNTlWl1MNVQhXi+Gm2++OVzAEMiWyy+/3A4nW7Vqlb1zH48aH9Xf0N2YkibTCvLSSy/ZRNqjjz6aL6GgE0zFpYbu6KQTcFucpJvaCw1h013TeLGjYQiPPfaYre0BpJJuNurcSLVl4/39ffvtt22dP8VIQRf7akd0zvPwww/bG5eZOq7V423FihW2V47qHUbKy8uz5Tl0s0ZtDJBpiWIjlRRnTZo0seVtYj3++OP2+CeZBrdo0KBB+Nw/3nWHelLqeE6GSi6JJp9JRRxp5MDf//53G7eR1D5qhNumTZtsHTWQTAsk9TbQyeDEiRPtBAHNmze3y1UYV8PMihIcOgFUQk1DB+L9IdAQUN0p0glkSbp2AyWhO6BKXulCKNEdG9XduPDCC83f/vY32ytHd1EjqWuz6nPcd9999msNW1BPA/VmUK+GZClZp54Bf/jDH/K9pjuqEyZMsA0ZyTS4MU6SpdhQjGgIp07KkqG7s0osqCxBvJszqkGo0gGquaMbOEAqDRkyxP591vmR7u5HzmqmSTP0N1vnSFqvIJo9U3f9J0+ebGuZqYZNUY5rDdNUcXWnt1yynF5pf/rTn8KTD0RS26Z1SKYhW2JjI1GvG12oq1eOM2IgGZs3b7Zxq2RZvDjTOZwKtb/77rt22DOQbS1btrQ3WfS3WTc7Iq+TNbHGt99+W2h743CGP0dOouNM1qHreqcmbTLUTuiaPt55lq6VlExTmzV06NCk39PPSKb5gOoQxOthptoaiWh2QTVmunB3hhyorpPuZi5ZsqRIAacTTs0cFY/GcetOr4pLazp4IFv69OlT6DpPP/20HWqjY1XJBHWbVj0adXlWnChB4CTTlEjWzLjTpk0z119/fVLboNni3nrrLdtjMx41pF27drUJaDVWySYhgEzGibz//vu2lma8iyUlglUQV5NuqLeMZptKhpIJqkmldiOec845x9Z2U7tDMg2ppuEsOmZ1wa2h+v369bM1mZRcVuF/XZToAiKyxl8iugBS8mz69OnmqKOOKtJxrQsonY8pFvX9ydL36+ZovESa6OcPHDjQfPDBB+ass85K+n2BVIqMjXg3FaV37962REyyxdRFvc60fqI4u+iii2x9KMUJyTS4QdmyZe01hf7Wn3322fbvv66p//Wvf9lre81SG284pXqs6caPKOms0QRquzTphpJyDvUAVXJZ1x06N0uGks2qN6gezvGozIHaD8URybT/IpnmA+pJEE9BgaM7oapboC6cugOazMlhLGfaXM3uEdsN1KFkhLLhCnqSaXA7XdBomMwjjzxih7lpSLTuZqortk7QlIQuCSXkNNymoF4/ek2FcjVjTqKTQiDbdMKlR6yxY8cWu1elTs7UU6Fz585xX1dxXGdWNhXEjew5BKSCLvLVG0bD0ZwEmo4zDU1Tz+Rkh9zofEfnVbpQUmKsKMd1cShBptEFd911V4Fti5JpOh8jmYZsiYwN1ehMFcWPeuBE9syJHZWjtknndg888EDUpFBAtij5pWsPjRbTQz30VRtTN9319zze0H9nJk/R9bd6MP/ud7+z51+RE9IUh9PDubDrlFGjRtkaos2aNTNBlxMqStofAAAAAAAACLDk52YFAAAAAAAAAo5kGgAAAAAAAJAkkmkAAAAAAABAkkimAQAAAAAAAEkimQYAAAAAAAAkiWQaAAAAAAAAkKTSxqfy8vLMli1bTJUqVUxOTk62Nwc+FgqFzE8//WTq1q1rcnO9k58mRpApXo0RIU6QKV6NE2IEmeLVGBHiBJni1TghRuDFGPFtMk3BWK9evWxvBgJk8+bN5vjjjzdeQYwg07wWI0KcINO8FifECDLN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3HLLLbYmgaig52233WZmzpxpu0Cr+/UjjzwSdVdo06ZNpn///uatt94ylStXtg2e7vLoThAAAAAAFEQzdDZu3DhqWaNGjcyLL75o/1+nTh37vH37druuQ183b948vM6OHTui3uPw4cN2hk/n+2OVK1fOPmIpEeKl5JTXtjfWgbyc8LOX96Movw8/7CfgFWmdzVNdqR9//HHTrFmzqOWDBg0yc+bMMbNmzbL1C7Zs2WJ69OgRfv3IkSOme/fu5uDBg2bFihVmxowZZvr06XbaagAAAAAojGby3LhxY9SyTz/91DRo0CA8GYESYosXL47q2aNaaG3btrVf63nnzp1mzZo14XXefPNN2+tNtdUAAMGUtmTanj177DTSTz75ZNT007t27TJTp041DzzwgOnQoYNp2bKlnWFHSbNVq1aF6wlo6upnnnnG3hXq1q2bGTt2rJkyZYpNsAF+ot6bOTk55tZbbw0vU+/NAQMGmJo1a9qemT179rR3SSOp96aSzqq9oVoeQ4YMsXdKAQAA8N8b+Lq+0DDPzz//3Dz33HPmiSeesOdY4px/3X333XaygrVr15revXvbGTovu+yycE+2Cy+80E5asHr1arN8+XJz00032ckJmMkTAIIrbck0NVK60I+cHUd0V0fjviOXN2zY0NSvX9/OliN6btq0adSwTw0F1Z2i9evXp2uTgYyj9yYAAEB6nH322Wb27NnmH//4h2nSpIm9Oa+yM7rh7/jTn/5kBg4caG688Ua7vjoEzJ8/35QvXz68zrPPPmuvVzp27Gguuugic/7559ukHAAguNJSgEy10D744AObKIilWW80g46mmC5o1px4s+o4r8XjximovTatdLlSofAU0nr2ynZn+3Mu7s+N7L2pO6KxvTd191S9N0W9N3VnVHdXzznnnHDvzTfeeMPGhnpw6gRx6NChZtSoUTbGAD+h/iYAoDguvvhi+0hEvdPGjBljH4lo5k6dlwEA4Ej51cTmzZvtxY5mHIm8o5Nubp6C2ivTMU9s/b//a+ab1157zXhJtj7n4k5BHdl7MzKZVljvTSXTEvXeVNJAvTc1W1U2E87ZTnAWR5NRC+xzuVL//Toysezw0v646fdQ0p9fUA/OefPm2R6c1apVs8Nu1INTQ3Aie3CqHo56cG7dutUO31FxXmdmNwAAAADIejJNiQDNeHPWWWeFl+mC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HSrRIxXv4fdHuVIhUy43FOjPCkBm0DMNSLG9e/eaM8880/z2t781PXr0yPe6M5xgxowZ9u7oXXfdZYcTaOiBEmOiRNrWrVvtcAI1in379rXDCZ577jn7uk7KunTpYk/mNCxh7dq19ufpZI9hBwAAZAfDO93lyy+/NI8++qgZPHiwufPOO23vsptvvtmULVvW9OnTxybSRD3RIulr5zU9KxEXqXTp0qZGjRrhdWKNHz/ejB49Ot/yhQsXmooVK5Zon3RuiMQmtg72Z7Vv375sbwIQGCTTgBTr1q2bfcSTquEEzz77rDl48KB56qmn7AnhGWecYT788EPzwAMPkEwDAMB1kzPlZHszAikvL8+eS91zzz32a/VMW7dunb0RqWRaugwbNswm8By6CapRBLoRqlEHxaGbq0oOde7c2daAQ+J4U8+0sa3yAvlZOb0gAaQfyTQggwobTqBkWmHDCS6//HK7Trt27WwizaHebaoNomK7kYV1AQAAgkglNRo3bhy1rFGjRubFF1+0/69Tp4593r59u13Xoa+bN28eXmfHjh1R73H48GFbksP5/ljlypWzj1hK7JQ0uZOK9/CzA0f+l7huMe5Ns3HcxSZIODaAzCGZBmRQqoYT6DmygG7ke+q1eMk01e/QwxFbv8PtnG30wraWVGStDz/wy34AALxFM3lu3Lgxatmnn35qGjRoYP+vcyklxBYvXhxOnun8SDcv+/fvb79u27at2blzp1mzZo1p2bKlXfbmm2/aXm+6GQoACCaSaUBApLN+RyYFof7F2Fb+2lfqdwAAsmHQoEHm3HPPtcM8r7zySrN69WrzxBNP2Idooqhbb73V3H333ebUU08N17JVSY3LLrss3JPtwgsvNDfccIMdHqobRDfddJMdTcBMngAQXCTTgAxK1XACPet7IjlfJxpykI76HZkUpFohLcfM91WtD+p3AACy4eyzzzazZ8+250BjxoyxyTLVrtVET44//elPdvIo1ZxVD7Tzzz/f1q51JoUS1apVAq1jx4627EbPnj3tZFIAkMl6gJETbCD7SKYBGZSq4QRa589//rNNMDnJFiWaTj/99IT10tJZvyOTvLa9xXEgL8dX++qHfQAAeNPFF19sH4mod5oSbXokolIbzozqAABILh8DkFp79uyxM2vq4Uw6oP9v2rQpajjBq6++atauXWt69+6dcDiB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I0aMiFq/QoUKoUaNGoX+/Oc/28/CaUscmhVQ69WqVSulnw2CHR/O9cZ3330X9/UzzjgjfK0Re8xrm3XupBkqI2cW3bp1q3393HPPzfd+N998s31Ns5HGtilaprajsP2bN2+efQ+dY0Wer0U6cOBAaPLkyaHmzZvbNk/b2LhxYzsD5yeffBLKVNty7733hqpWrRpauXJlyE0C3TMtWY0aNbLZ6xtuuME89thjtuDdTTfdZH7zm9/Y8bry7bffmo4dO5qnn37aFjlX19EuXbrYAnnPPPOM/VoPOeaYY2xGNp4VK1aYX/7yl6Z+/fr25ylDu3nzZrNq1Srz17/+1bz00kvmlFNOCa+/Z88e079/f3P55ZebHj16hJfHjkNO1qxZs2z3Wf3cZ5991tx99912+eDBg02fPn1skUft3+TJk83evXtN37597etvv/223afp06fbrz/44AO7zu23324WL15sv+f99983TzzxhC3+/o9//MOccMIJZs6cOfbugO4MILhKEmPfffedjRHdidL6qp+wc+dOs3r1anPPPfeY3//+9/a5bNmyZu3atea5556z719QzKjmgmJXx+eVV14Zta2KC3Ur3r9/f9L717RpU/PJJ5/YeFFvuKlTp5qff/7Zxrn07t3bHHfccaZDhw5m69attrfZe++9Z+6//37bBV3dmZ34EcXorbfeauPz1FNPNSeeeKIdzqrP6rLLLivx7wP+aVMi/f3vf4/6Wu+tWoKxy7V9Oj7l6quvNhdddFG+99Kw6UjHH3+8GT9+vP2/YlLv3a9fP/Ppp5/au4ix7YjomP/xxx/Nvffea+NX36/277XXXjPdunUzt9xyi/nFL35h6xwqLlRoeOPGjbadQjCOe1ENFT0+//xz+7X+juucQX8/s118WMe9hhvNmDHDbq9KCOju+ty5c83FF19siyrruFWboeNZcfPxxx8n/Nse6eabbzZnn322/Zx0TqV15s2bZ/ff+bxEfw90zqZY+uc//2l+97vfpWz/Cjv3c9ouJ/ZVWHrDhg3h/+v3+eGHH5rKlStHnbvC3W1FKtoR1USK/FmpbG9ij0vFm6gt0efy8MMP23gYN26cefPNN21ctm/fPhx3TpukXk36u8Kx6U1ujI+ico55xYvOl3St/+KLL9rze9V51t9ctSO63o/9m7t8+XK7vTqGY9sUXdMobipWrFjgz9c1ja7Hv/76axsr8WqQaTtef/11u636rPU5q91T3J177rmmYcOGaW9bFNsjRoyw13DaXqe2mtoWPbIq29k8r/j+++9DV199tb3LqKxo3759Qz/99FP4dSfD7NxVj72zGPnQuolcdNFFoWOOOSbu3cXt27fnW6bst95T2fB4itozrV27dqEePXqEBg0aZO+ERnrooYdszx9NH6yM8qpVq8Kv1a5d22bAI82cOTPcy+20006z2W9588037TI9lylTJjR9+vSktw/+lY4YUy8t3UlxegeceeaZtjdXMjHTpUsX29stlu726K5RUXqmafrnyPhp0qSJXa6fIbpTpZ/bu3fv0FlnnWV7MCh2TjnlFLu+7mY58eNQ77S77rrLxp7W7dixY2jjxo1F/NTh9zalIDouE50GOD8/mWNcx6+O0Ui6G3r88cfbWDp48GB4uRMHTq+AyHZEPUwj48KZsl6fj+7aqjdm+fLlQ3v27CnW/sJ7x70k6l2sXmPZ7pmmY1939J2/7Tp/0/o6ziP/tsvDDz9sX1MPTJ0TJfrb7sT6rFmzoparp7WW33PPPVHtwAknnBAaPHhw6PLLLw+1b98+5Z9BQed+kfsniXoYOb0x4M22orjtSDram3jHpXqDRvYIco5LXc9o+YoVK2xborjTdYeWqdea4nXUqFFF2Fu4jZviozg902KP+ddff90u1/44f3PVq7JUqVJ2v5xjW+dBuu6+5ppr7HmRrk2cNuXvf/+7fQ9dyxdE76FzNLUtLVq0CF1//fX51lm9erV9r3HjxuV7TaMG/vOf/4Qy0baop3O831mia7lMIpnmMqeffnqRToZSmUz7v//7P3vBogbn3Xffte+7fPnypL430c+5/fbb871Pv379bPdQ6datmz2xBNwWM0ryxg6bcRqVF198scjJtFga5hnZNVtDStV9euLEibZbd25ubujZZ59Ner8ANyXTREPa9B7xhlsQF/CCZJJpzrG/efNme8HToUOHhO/3y1/+0l4Aad1EEiXT1q1bZ5draI3j7bfftsvUNj3//PM2Pgp6b8AvybRkkhhOAjuyzRg7dqwdTqeha/379883RA7IZjJNCa7Ym4oqmaFlixYtCi9bvHixXfbBBx/kG+qqtsO5VimIkm5qM3Ru5Qyh/Pnnn6PWUacEvdeSJUuK+GkER6Bn83SjBg0amDVr1ph169Zl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L7837H/7299cM2fOLPcpVWnfqzdqOl3LqeXChQsmYLFo0SLzFG306NFXscVA+M4nmqVWp04dv5lk+tRXgxAPPfSQ38/Wix097j1pVmbXrl3N92hww6IZQVZmkAbm9IkkEGz6oMM3i37jxo3mwYvelPmWE6t8rF271rzWc0l6enqZ36HHvZ539GZGM958H0BWJJjm+136tF3LlH62J82A04dB//3f/222xc43hgAAOBFtpjlE9erVZejQoaZ+sG/jimrlypWm0cR//Md/DOt69e3b14w/++wz97QVK1bINddcY3pE+ad/+ifzGrALPWZnzZol//d//yevvPKKmTZ37lzTG5Aeq1qOfGn7CVrvXhvArOx3+pYTbeD0b3/7m/zzP/+z3HfffaZH2kuXLlV6u4BwnU9+/vOfS15enqxfv77EPO0xSduyeOCBBwJen/j4eOndu7f5/+eff+6eruVRe9Xq06eP6c6ccwlCoWfPnvLnP//Z/B5bdu7cKe3atZO77rpL9uzZY45pz3l6vrj99tsr9D16nM+cOVM++ugj8/sfLNoAc5s2bbzOL1Y51muwn/zkJ1KnTh3zGgAABA/BNAfRmxPtlWT16tVe07WXkrffflvuvfdec5NUlosXL8q3335bYtDPrYzjx4+bcf369d3T9IZHb9S0wcD7779fPv30U3n//fcr9flAKIwYMcKMN23aZMqENlCqN/NNmzYNyfeVVk40SKA3QhpM056E3nrrrZB8PxDM84n+vmuA2d/NuU5r3rx5hQMNvmWkoKBA/vu//9ucQ5SOtZyeOnWqQp8LBBJMKywslL1793oFzG677TYzaOD40KFDXvO0wWvP3/NADR8+XG666SbJzMzUmiFBWX9d9y+++MJrfXRbtHdzLTd6LaZllmA0AADBRTDNQTS7RXur9L2BWbNmjbmYCiQTYM6cOaZXFN9h//79Aa2D3mhp8E2zB/74xz/K4sWLpVGjRnLHHXeY+dqDyieffGKCA9ZFqgYouIiDnegxqU/q9QZebzg0qNC+fftSj3druHz5ckCfrzdfuvyXX34pr776qrlx0sCEZggozQbSbpqtctKsWTPTIw3lBE44nyQnJ8vgwYNNZpr2gmU5evSofPDBByZgoJk7ZbHKlJbBefPmyRtvvGG6LW/VqpWZv27dOtMrl1VGhgwZYrqq18w3IJj0OkXt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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# use 'data' to compute returns\n", + "# returns= data.pct_change() #actuarial\n", + "returns = np.log(data / data.shift(1))\n", + "\n", + "nr_days = 252\n", + "\n", + "# print('annualize returns')\n", + "# returns *= nr_days\n", + "\n", + "_ = returns.hist(bins=int(np.sqrt(returns.shape[0])), figsize=(15, 15))\n", + "\n", + "normality_test(returns.tail(25 * 3)) # test last 3 months" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5b14395c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "normality tests for increments, not returns!!\n", + "Test pval= 0.08683895238128052 res= normal\n", + "Test pval= 0.021035773553864635 res= normal\n", + "Test pval= 0.38286247315996325 res= normal\n", + "Test pval= 0.3710853667901102 res= normal\n", + "Test pval= 0.0395519075986371 res= normal\n", + "Test pval= 0.26910192261508514 res= normal\n", + "Test pval= 0.11094121314729449 res= normal\n", + "Test pval= 0.3180825721276856 res= normal\n", + "Test pval= 0.011858172793204136 res= normal\n", + "Test pval= 0.008952882580561775 res= not normal\n", + "Test pval= 0.0008467555154087856 res= not normal\n", + "Test pval= 0.2098816393496899 res= normal\n", + "Test pval= 5.524153122423706e-14 res= not normal\n", + "Test pval= 0.15309417383852073 res= normal\n", + "Test pval= 0.0010024995182926846 res= not normal\n", + "Test pval= 0.3549281579113689 res= normal\n", + "Test pval= 0.3129404747848908 res= normal\n", + "Test pval= 0.008997473704571489 res= not normal\n", + "Test pval= 0.6147399643675131 res= normal\n", + "Test pval= 0.09700094185831638 res= normal\n", + "Test pval= 0.00118024612616608 res= not normal\n", + "Test pval= 0.010093733928468086 res= normal\n", + "Test pval= 0.03923585485509744 res= normal\n", + "Test pval= 0.15164264770844182 res= normal\n", + "Test pval= 0.2480354891922463 res= normal\n", + "Test pval= 0.0183314268046639 res= normal\n", + "Test pval= 0.011137481909481228 res= normal\n", + "Test pval= 0.4300901492943915 res= normal\n", + "Test pval= 0.5892009761977898 res= normal\n", + "Test pval= 0.0008843165602394642 res= not normal\n", + "Test pval= 0.20729225915186456 res= normal\n", + "Test pval= 0.016863594683601053 res= normal\n", + "Test pval= 0.14688927380791153 res= normal\n", + "Test pval= 2.380301465340281e-05 res= not normal\n", + "Test pval= 0.029281292837861225 res= normal\n", + "Test pval= 0.20712701484300206 res= normal\n", + "Test pval= 0.015888165155116662 res= normal\n", + "Test pval= 0.096035363594102 res= normal\n", + "Test pval= 0.07771383799032755 res= normal\n", + "Test pval= 0.004196457641565341 res= not normal\n", + "no. of normal = 31\n", + "no. of not normal = 9\n" + ] + }, + { + "data": { + "text/plain": [ + "(31, 9)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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rM8//9xr3blz57az7TRt2tSVN29e18yZM13ffPONq3fv3q7ixYu7VqxYYZfT7HlHjx4Ny/4jfkSj7OzatcsejzpOdRwWKVLE9etf/9o1YcIE1+nTp72W1eeXL1/eHrOamTOjmVc8y4CO+5SUFFeHDh1c69evdx/7njN6/uY3v/F6T4kSJVwNGzZ0TZs2zc5U4+v3v/+9Xe6JJ55whZu+e+f/oM8cN26c/Vv/K3nhhRfs/nz44YeuzZs3uzp27Gi/y59//jns2xbvVq9ebWdd0rG8e/du19tvv22P527durliWSjLzJw5c+w6fM8Njz32mFeZKFCggKt69equZ555xnX8+PF065k8ebJdTjM9xSvt87Jly1x79uxxrVq1ytWqVStX6dKl7exliN2yF8ixp997/X+rVq1qj+WCBQu6rrvuOtfw4cMzrPtcf/31dr1TpkzJtKx4nkt863ta/pprrrGzn3ku55g/f75dTmXU37kmVDi2o+v77793XX311a6WLVvav/fv3+++RZq/axKVvebNm6c7R+T0ukRlJk+ePOk+r1KlSq577rnHln1fKluJdF3y4IMP2tnlVf48/+++52pEv07m7/dbv8265pk4caLrxIkT6d6zcuVKV5s2beyMllq+YsWKrttuu801a9Ys+7pmpte6pk6d6vc8onqVXl+yZInXej23Q9cw2o7WrVvb63xfgVwbRUukzz0EywLUvXt3v0EpzwPsu+++c7Vt29ZWmvRP0z/z/PnzYS18w4YNc/31r39Nd/vPf/5jl3O2s2zZsq5Tp07lKFj2l7/8xa57+vTprj59+tiAgSqHKsz6W5XKtWvXup5++mlXuXLlbMF9/fXXw7L/iB+RLjvz5s2z69EFh47Z1157zfXyyy+77rjjDlvB6tWrl9fyixcvtttzxRVXuLp27ZppsOyVV16xZUD3derUcZ9wdAGkY9+TgmWXX365u0wqIFWvXj37nieffNJrWQUK8ufPb7dBJ8W0tDRXOPkGwJ2b/leiz3/22Wft74bKsSrjO3bsCOs2JYpNmza5GjVqZCuy+p+q0vL888+7zpw544pV4SgzL730kr148Tw3+CtHt99+u32ucePG6Y57Bev0GXp9586drnj0xz/+0VY49T386le/so8VmERsl72sjj01kuhcpc+5//777bGsW8+ePV2FChWyFyC+/vWvf7nLzU033ZRpWcmsvqd6lX6rU1NTbXDbt2531113ubf9008/dYULx3Z0ZdZoHq1tcY7Rt956yzVmzBhXzZo17fMff/yxe9lQXJfoPKXlVAauvPJK18CBA93XJSVLlnT98MMPXssn2nVJRv93fX+IrTqZb9nQNbQ+X8EyXT9UrlzZ9c9//tO9/Lvvvmufr1+/vmvUqFG2PqbOAzpnKPjsUDDNs2HFOY+oQ4s+z1/dTM/r3OSUUXViUDnU5/kGxAKp50VLpM89BMviVKAnFC3jXKC/+OKL2VqHc2E9d+5cr+cnTZpkn1ehd+hiRwWrX79+9iLIs2AD4fbvf//b9l6rVq2a68cff0z3ui561FPGk1qX1BtALTy6yDl58mS69zkX+U4Q2tG5c2f7vFqufClYpoqiJ1UMFUDT55w7d879vE6eCkosXbrUrk8tJkA8lxl/gilH2i49995779lW4CFDhmR7H4FgZHXsqWeKKui6yNi+fXu69+viRb3LfA0aNMhVpkwZ1z/+8Q97caJW8UBkVFdTPUvPz5492/2cyqLKpOpnutjq0aNHEHsOZE9Gx+iRI0ds3UYBXAfXJUgmmR3T6vmlhkoFzJxegTVq1LDXDmfPnk23/MGDB91/6/yhDit33nmnV28wlS0d776BaNF2qEeyJ40e0fMK3oWinpeIEntwOyxNJ9yiRQszevRo8/PPP4dsvVqn7Nmzx/3cqlWrbMLEO+64w96UdPL7778P2WcCmdExrrHr06ZN80pO77j66qvNI4884n6s8qCcDzpW//CHP9jHH374YY7KQGYKFixobrzxRnPq1Cnzn//8x/38rFmzTOvWrW3ukerVq9vHQCKWmUDLkcpAiRIlTPv27c3vfvc7ygQiJqtj79VXX7W5osaNG2eqVauW7v1ly5Y1AwcOTPf87Nmz7fpuu+02U6xYMfs41OVGZVNlUjOFqYy+99575syZMzn6HCAnibcLFChgcuf2TpHNdQnwy/H67LPPmv/7v/8zb7/9tn1Oubeuv/56m4vMl2eOtSuuuMIMGTLE/O1vf7N5nmXSpEk2H9srr7xirzcCUbt2bTtJgGeZCUc9L54RLItzx48fN//973+9bocPH063nAqUZsZQAQoVFWgpVaqU+zlVKq+66ipb0Dt06GALqwoyEAkff/yxnf1Gs0IF4qOPPrKBAp0QlNReU0sHc1Hurwxk5d///reduUaVSGcmq88//9zceeed9rHu//73v5tz584FvE4gXspMMOeSzp072wqjysTOnTvNhg0bcvQ5QCCyOvZUBhQAUOArUJogRTN1aX1ar9YfrnKjRheVTZXRn376yZZxIJLXJGoM3LZtm50USOeLu+++O92yXJcAxp2UfvHixfa+cuXKNjl/IAHdRx991NStW9eWM51fBg0aZH/327RpE/DnHz161N48y0w46nnxjGBZnGvVqpV7RhDn9qtf/Srdck2bNrUVqDFjxmS7FUeVLp0E9+/fbxYsWGB7G6SkpJguXbrY18+fP2/mzp1rC5eoMvnb3/42qQsYIkczNqq1X60kgVJLjoIEFStWtI917OqE5dnry9ORI0dsGVArpaZonzJliu1FoPLlz8WLF91B7G+//daWmS+//NK0a9fO3eqjSlu+fPlMx44d3dugE5fKGBDvZSY75WjTpk22vDjnkiZNmpjLL7+ccwnCLpBjb/v27Xaaen8t/5mVG5UZ9agRrf+bb76xvQCCDUToIuqdd94xw4YNs/Us9VQTzSj92Wefube9UqVKdrZpyg0ifU2iHjC1atUyM2fONNOnT7c9531xXQIYe35RT2Mn0Pvkk0+affv22QCvep4pAPbFF1/YGS59qcem6lDqFdaoUSP7eMKECZl+nnoaOwHt9evX217IulbRfSjreQkl2uNAkbMx0JqxSQlcPW/Ke+RvfPLy5cvdM9/lZDZMz5lulCDQoZnz9PzWrVvdzympp+9zQDjs27fPHmt33313QMv/97//tbk0lMjccfjw4XTP+ZsN07kpr8DGjRv9rt93NkxnMoD27dt75WxSXpnf/e53Xu9t0KBBuueAeCoz/gRajh599FGbD0r5Nxya9MP3OSDUAjn2cuXK5WrSpEnA69RkNaovPf744+7ntC7lL/N8LthE7spzo9mjHcoto4THyhPlUNJn3+eASFyTaNZBJSFXwnHl6XNwXYJkEsgxrRyYmtnWod915RDznPVVE1lo5kd//vznP7snT8qMvzKjSQ+Uz8+ZOTmn9bxE5D2IHHHnhhtuMA0bNgxo2WbNmtlWHOUIeOCBB4L+LEW31RKkIWQa36zcSp55CBSJrlKliu0lo+6gosi4etCoFef5558P+jOBQBUtWtTd0hgItcyr1bF+/fru41XUOqPj9aGHHkr3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Gb7yyitN6dKlza5du2ywTLnMDh065LXMhQsX7AyZTp4z3R88eNBrGedxRrnQBgwYYPr165fuh6JTp05Bn5T03WrygdatWyf8McW+5pyONQXL4rFbve+5BMl7TonUdxVv5cRfGeEYCQ7fV3DirYxE61ySrMdVsu+3EwCIt3KSjPWtZD1WY2XfAykjCRssA+LF999/bw4fPmzKly9vH6tF6NixY3aWywYNGtjnli5dasfyN2rUyL3MM888Y39onB8YBTmqVq2aYb4yTSqgmy+9P7s/Ujl5b7xhX3O2PgAAAACIF/GT9Q+IEydPnrQzU+ome/bssX/v3bvXvta/f3+zdu1a891335klS5aYjh07mquvvtom6Jfq1avbvGa9evUy69evN6tWrTJ9+vSxwzeViFDuuusum9y/Z8+eZtu2beadd94xEydO9Oo5BgAAAAAAgkewDAixjRs3mvr169ubKIClvwcNGmQT+G/evNn89re/Nddee60Ndqn32MqVK716fc2aNctUq1bNDsts166dadKkiXnttdfcrxcrVsyO81YgTu9/7LHH7Pp79+4dlX0GAAAAACBRMAwzwV3x1HyTL5fLjL4h2luSPJo3b26npM3IokWLslyHZr6cPXt2pstoYgAF2RBetYYsovwAHigTQOhQTwNCi3MU4vGY3THitmhvBvygZxkAAAAAAABwCcEyAAAAAAAA4BKCZQAAAAAAAMAlBMsAAAAAAACASwiWAQAAAAAAAJcQLAMAAAAAIMGsWLHCdOjQwVSoUMGkpKSYDz74wOt1l8tlBg0aZMqXL28KFChgWrVqZXbu3Om1zJEjR0zXrl1N0aJFTfHixU3Pnj3NyZMnvZbZvHmzadq0qcmfP7+pWLGiGT16dET2DwgngmUAAAAAACSYU6dOmbp165rJkyf7fV1BrUmTJpmpU6eadevWmUKFCplbb73VnDlzxr2MAmXbtm0zn376qZk3b54NwPXu3dv9+okTJ8wtt9xiKleubDZt2mTGjBljhgwZYl577bWI7CMQLrnDtmYAAAAAABAVbdu2tTd/1KtswoQJZuDAgaZjx472ubfeesuULVvW9kC74447zPbt283ChQvNhg0bTMOGDe0yL730kmnXrp0ZO3as7bE2a9Ysc+7cOTN9+nSTN29eU7NmTfP111+bcePGeQXVgHhDsAwAAAAAgCSy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/EH2cVInV5BdhjP3SZ29x8yXGPKfFAzv/+qrr9K1rpT4zGOHxjwR7tUgIiIiIjL/MEyyFmakERERERERERH9D4NlREREREREREREdzFYRkREREQUYszuJyIiMi8Gy4iIiIiIiIiIiO5isIz0zCbPbhIREREREREFFvva1sRgGRERERERERER0V0MlhERpRLPDhERUaBVjF3D/QsREZFJMFhGRERERERERER0F4NlREREREREREREdzFYRkTkgUNgiIiIiIiInC063CtA6cOOPREREREREZG9+vjH32gR7lVxNGaWERERUYrwBA0REREROQGDZURERERERERERHcxWEZElMYMG2bZEBEREYVXUsdjPF4jorRisMzCAv3Dzx0JERERERERUfoxWGttDJYRERERERERERHdxWCZBTFCTURERERERGRf7POHV3SYX59MhtPUklNxZ0RERGbAYzEiIqLwY7CMiIiI0oSdeqLU48kZIiIi8+MwTCKidGCnh4iIiMjceLxGRKnFzDKL4Q89kfkwu4bsjvseIiIiotAfM7GfET7MLCMix2MggIiIiMhaOOkZOQm39dBjsIz8YmMkpxxgBXJb50EbERElJTX7CO5PiIiIwsfUwbLp06dLiRIlJFOmTFKrVi3ZtWuXOBU74ZQYthPzYVs1F7aR4OM2b31sJ0RJYxuxPvango/tJLi4DYeWaYNlS5YskX79+smIESPk22+/lSpVqkiTJk3k3Llz4jThahBsjObHdkKUNLaR9EvpfoD7DOtiOzEvtitzYBsxV1tIb7tgmwoOtpPQbVvchh0eLJs4caJ069ZNunTpIuXLl5dZs2ZJlixZZM6cOeIUZjlACsZwNQoMtpO0bceh2JbZZsyBbST02zC3e+thOwk+du6tjW3EPALVFti/CTwntxNuS/Zkytkwb968KXv27JEhQ4a474uMjJSGDRvK9u3bxc7M3sj8rR9n5ggPJ7cTK7WlxNaD7Sb42EbC2wkBbufmx3YSPJwRzR7YRkLLczsPR5YO21fa2Lmd+NsmQ7l9Jgfrwe3WQcGyX3/9Ve7cuSMFCxb0uh+3f/zxR79/ExcXpxfDpUuX9Pr8+fNy69YtvVy/fl1+++03yZAhg9Qat152DmkQtPeA5zf4ex3Px4P9hUTHu+T69XiJvhUpd+IjAv78DwxY6ve9JvUZGI8F8zvw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Wb1ObAi0MUQaF194f4EKcAXyucwuLj7Cfe2U95zW79qJnw8RERGRWTFYRhRm9913n+TLl087+QiWoSN/7tw5r2Vu376tM2QanXxcGx3/lAYCQhEEsBOndu7TIrltKD2f49y5czXTEjNbJgU1+wAZZlC7dm0ZM2aMtiUjUxOBPQSGy5cvn+b1ISIiIiIi++NsmOSlxCsrNfWSQufkyZPy22+/eXXyUZ8Js1waNmzYIPHx8e7sGSyDGTI9a0EhEFCmTBm/QzCJrAjbPIJlnTt31qHIBgy1xMyWaCPHjx+Xzz//XDp16qR1/JCpCciYRFCsY8eO8v3338uaNWtk6NCh0rNnT79BYyIiIiIip8YAKCEGy4gC7OrVq5rlYmS6HDt2TP9/4sQJfWzgwIGyY8cO7eSvX79eWrVqJQ888IAW6Idy5cppXbNu3brpMLKtW7dKr169dPimUbMJxc1R3L9r1646s9+SJUtkypQpXsMsiawOwy/Rbl544QWv+7Ht4zEExMqWLSv9+/eXdu3ayfLly93LoP7fihUr9BrB5eeee04DaqNGjQrDOyEiIiIiIivhMEyiANu9e7c89thj7ttGAAvZMTNnztSZ++bPn6/ZYwh+ocOPLBnPbJeFCxdqgAzDMjELJgIBU6dOdT+eM2dOLcyPLJnq1avrMM7hw4d7FT2ntEFm5fia4V4LArQNl8uV4H7U2tu8eXOyf4/ZMjlJAxERERERpRaDZUQBVr9+fb8dfAOGgyUHM18uWrQoyWUw3Oyrr75K0zoSERERERERkX8chklERERERERERHQXg2VERERERERERER3MVhGREREREREpq8rS0QUKgyWERERERERERER3cVgGRERERERERER0V0MlhEREREREREREd3FYBkREREREREREdFdDJYRERERERERERHdFW38h8jfjDNxdyLk+Bstwr0qRERERETkICVeWanXMVHhXhMiciJmlhEREREREREREd3FYBkRERGFLEOAUmbcuHHy0EMPSfbs2aVAgQLSunVrOXTokNcyN27ckJ49e0revHklW7Zs0q5dOzl79qzXMidOnJAWLVpIlixZ9HkGDhwot2/f9lpm06ZN8uCDD0pMTIw88MADMm/evJC8RyIiIiKzYrCMiIiIyGQ2b6Z4YKEAAPEXSURBVN6sgbAdO3bIunXr5NatW9K4cWO5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vHlzeeuttzRjbeHChTqN85w5cyRjxoxSoUIFnbFm4sSJXkE1IiIiIiIiIkodZpYRhdCxY8d0hhgMvTTkzJlTatWqJdu3b9fbuMbQSyNQBlgehTWRiWYsU69ePQ2UGZCdhqmcL1y4ENL3RERERERERGQnzCwjCiEEygCZZJ5w23gM1wUKFPB6PDo6Wqdr9lymZMmSCZ7DeCx37twJXhuz1+DiOZQTbt26pRezMdbJjOuWmJgol8REuiy33sH+rK30WRARERERETFYRuQQ48aNk5EjRya4f+3atZIlSxYxK9Rts4rxNa253sFe5+vXrwfleYmInA71/o6/0SLcq0FERGQ7DJZRirD4cmAUKlRIr8+ePauzYRpwu2rVqu5lzp075/V3t2/f1hkyjb/HNf7Gk3HbWMbXkCFDpF+/fl6ZZZhFExMFYNZNs0E2EoI3jRo1kgwZMogVVIxdo5llo2vEW2q9g/1ZG1mMREREREREVsBgGVEIYegkglnr1693B8cQSEAtsh49eujt2rVry8WLF3WWy+rVq+t9GzZskPj4eK1tZizz2muvaZDDCG4g2FGmTBm/QzAhJiZGL77w92YO6ph9/TzF3Ymw5HoHe52t9jlQ+vEECxERERFZGQv8EwXY1atXdWZKXIyi/vj/iRMnJCIiQvr06SOvv/66fP7557J3717p1KmTznDZunVrXb5cuXLStGlT6datm+zatUu2bt0qvXr10pkysRx06NBBi/t37dpV9u/fL0uWLJEpU6Z4ZY4RERERERERUeoxs4wowHbv3i2PPfaY+7YRwOrcubPMmzdPBg0aJNeuXZPu3btrBlmdOnVk9erVkilTJvffLFy4UANkDRo00Fkw27VrJ1OnTvWaQRO1xnr27KnZZ/ny5ZPhw4frcxIRERERERFR2jFYRhRg9evXF5frjxkR/UF22ahRo/SSGMx8uWjRoiRfp3LlyvLVV1+la12JiIiIiIiIyBuHYRIREREREREREd3FYBkRERGFHScFICIiIiKzYLCMiIiIiIiIiIjoLgbLiIiIiIjCiJmVRESUFtx/BA+DZURERERERERERHcxWEZERERERLYTGxurs5B7XsqWLet+/MaNG9KzZ0/JmzevZMuWTdq1aydnz571eo4TJ05IixYtJEuWLFKgQAEZOHCg3L59OwzvhoiIQik6pK9GREREREQU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sRqWw281juHsgsdmqTsOgnfffVcL/Ps77g71fiSQ+5uxY8cm2O49+R7nZc6c2VWuXDnXa6+9pscxvqZPn67LYb9kJjwus+axle92+Msvv/h9HPsKo6/hu83jOAi/d02bNnVt27bN/Tdo33i8YMGCCfoY2LfgseHDhyd4LewvoqOjXdeuXUtynVeuXKnPgWMs43jNV1xcnGvy5MmuqlWrat8Iv0fly5d3devWzXXw4EGX3fcRzCwzGYy9RmopCjg+/fTTcs8998g333wjK1askGzZsmkxOxT0NFy9elWnlW7Tpo20bdvWfb/vuOaUWrZsmaa6IlK9cOFCef311xNdFmmwnTt3lho1asilS5c06h0TE6PTHOM3/5///KcMGDBA13/x4sXuv8NjH330kZQoUUKWL18uV65cCWk9CqxTy5YtpXjx4nLq1Cmdhhfr3r59+5CtAyUNBRvPnz+v1xin/9133+n9DzzwgLaDxo0bS/ny5aVjx47SoUMH6datm8THx+vYddz3008/yY4dO2TKlCny8ccf69+lps1ER0fL9evXdft86qmnvNYN7SJTpkwJpu32bA81a9aUyZMn65Tg0KhRI+nUqZNu+yjYOmPGDHn88cdl5cqVmlZs2LBhg47DR9vA63g+Fgh4755nYLAu+GxR96FYsWLSp08fbfOlSpWSkiVLyrBhw7SQZuvWrQO6Hk6AoquY5v2xxx7T3zfc7tu3rzz33HOSO3fusKzT3//+d6/bCxYskHXr1iW4v1y5cvL777/r//G72Lx58wTPhaK6nu69914ZN26c/v+XX37R5+7atav8+9//1kK8vu3DaGdoJzly5AhruyDrMls7w29+ixYtZPPmzfLEE09opgQKMa9evVr+9re/6f4I23fWrFlTVJcH+793331XMypwHIXhJjjO6tKli3u5Dz/8UI/ZLly4IP/4xz/kxRdfFCvisVnaj4Nw3I0aVkOHDpWePXvqNhLu/QjWGd9fWvY3OH7Ddv/CCy/otr97925tW57bvT8zZ87UzwbHOmvXrpUxY8bo/mPr1q3atzFgP4L9CTLzcEzkeYwYajwus/ZvfnoZ2zzaC46XcByE94a+M/r7BQoU0O8emXPvv/++Vx8D/RAcR2H79oX7cJyWJUuWJF/faAvIykNb8ZxEwNCuXTv54osvdF3R37p165YOiUVs4pFHHpGyZcuKrfcRQQ3FUao1b95co6TVq1fXyG2mTJn07AjOqpw4cSLB8ohe42tENNuf1GaW1atXz9W2bVtX37599UxmcqZNm6YZcIjo47Jjxw73Y4hQ42wq1u/nn392379hwwa9D9cZMmRwzZs3zxVKTz/9tEbQM2bMqGeqcPvIkSMhXQdKmm+moucZSMPx48ddzZo10+0OZ2QwpfKtW7e8nsfzjGtq20zjxo1drVu3TvB4qVKlNPPTN7PMsz1g28IZS7QHLOc53bORCYf78RqeOnXqpBlyOEuCdbh69aorkHwzFowL3rNxFnPYsGF6BgtnLhs0aOA6dOhQQNfBKfbs2eOqVatWgt/xYJ7xTy1sl4kdBhhnPX238ZRm1+Bs5r333qvbsZFN49k+8Nx//vOfTdEuyLqC3c5Sm1nWvXt3XR7buq933nlHH3vppZdS9Du9bNkyr3YTFRWl9/fo0cO9LH6zS5Qo4erXr5+rTZs2rvr167usisdmaT8OQiZVvnz5XP37909wHBTO/Uh69jf+jqdSm9GD/gzu98zU+c9//qP3ffzxx678+fO7YmNjXeHE4zL7HFulJbPM9xjriy++SPA736VLF/39R4ah0SYQJ8B9HTp00AxmZOAbTp06pc+BvnxScCyFYyqMwqlWrZrr+eefT7DMrl279LnGjBmT4DG85q+//ur6//buBEyK6ur/+Jlh35FdwiJxYd8ERaIiIoiIvCBmcQM0RJQACWgQiYgsIooCgrK4IGCEiLyvSFgCCgooiwiKCCh/JSgatkQFBGSd/j+/m6lOd9MzzAw9vX4/z9M03VXdU9Vdt6vq1Lnn+pJ8H0GwLM7Url07Vwc7kQyWff311y7o8Prrr/s++OAD976rV6/O0Wuz+jt/+tOfznifnj17uvRN0U5eXW+AeGszCuKGdmvxdhr/93//l+NAQrhgmejAVoE3j7p8Kr15zJgxvj179rgg4KxZs3K8XkA8BctEwbDQiyUe2gUSQW6CZd988407eWnTpk2W73fttde6rjGaN6fBMs+WLVvc8+r64nnvvffcc9o3zZkzx7WP7N4bSJRgWSSCFF6AOnCfMXLkSJeUoK5lCkgE7m+AWAfLFMAKvWiokhZ67u233/Y/t3z5cvfcRx995O43bNjgn6Z9h3eukp2//OUvbp+hY6snn3zSdeH+6aefgub561//6t5rxYoVvlTFaJhxRqmFGzdudMOgRpu6RqprgLoOKMXzwgsvdOmZ52LHjh3uvnz58u5eI5Woe6aXMql7pX2m8hDIiM82oy6aSttXtxnP7NmzXbqxhqw+F+ouo5vXLuRvf/ubS8e/9dZbXZcadcc+1/YHnCt1R9aw5aE3dQk4m3/84x8uRV5FWHOCdoF4pVIT4dqBuqN41E1FXWnU5T4rmqa2o26Z53o8JWoLOla77LLLXPcUdbnRsRyQavub3LQZHd8VLlzYnYN88cUXrssbEA/UHVICu5ReddVV7v79998P6map4vbqaqkyGIFdMb3/e6/LitqCunzq2ErHWCqLpPIzoedY3rx5bYeJjmBZnFF/XO0sNMqJ+gEPGjTI9bsPPCDLL2oInTt3tmLFirnHqpmm+hi5aRzejk07KNWvefPNN90Qr97oJOrfrGFe1ShFfe4LFSoUVNMMiIc2o1oIChwrQCaqiabtNC9941VXQO1CtZxUI0NDH+ukSveBdWe0/NWrV3eP1Ua0HnoNECuqCVGxYsUzbqohE0jbs/f7r1oWqs/00UcfuVocWdXMoF0gUaiOS7h2oDqznm3btrn7xo0bZ/k+3rTPPvvsrH9TJy5qH6rXt3jxYtemdAFH9WNE+zjVmfWOp3Ts9j//8z8Ek5H0+5usqMab2owCDi+88IKr/6R6tKpnK7qwqv2T12YUTFCggTaDWAeINbKlgmFeXb5f/vKX/nkUFFPtstBg2ZVXXun+r2OkwGn6v+qc6TVZ2b9/vy1btszfFlQfr2XLlme0hSuuuMKuueYaVy9NbUV1otWuVEsxZcQ6tQ1nUjq9ak8UL17c33dd/ernz5+fb90wP/nkE/c+Cxcu9D/36aefnvFcbmsr/OIXv/Dt2LHDP5/WS3XMAqn+U+hzQDy0GdW0ULcapSgr/Vmv02hkuekyEK5dqM6Casx4I8+oz7/q96nLgOe777474zkgknLSLUY1mLTth94CRxgLHQ3TG9mpY8eOWXZHoF0gkbphavS8cO1Ao3573TBVYkLzZldDRfsPzfO73/0u1zWMtE975ZVX/PNp/6bn1T3Ts2DBgjOeAxKlG2ZO9jfhZDXqudpmYPc01XBS7a/A+k6q8xb6HBDt0TC9m+qPjR079ozX6hzHq02mYyTVbHvxxRfdNNVzrVq1qr9erLr6q85ZdvQa1f4KHEFUdQJDnxPVg3vsscd8derUCVrWX//610k1AnNWGA0zDimdXl2/Tpw4YZ988onNmzfPxo8f76LMGiFFo99Emq7eqwumRp3xRmXRiH/e6GMa3elsNL+XvqmReDRqi6LQHmWU6epo3759g0Z+UWRcXTM1Coii50C8tBllxSjDbM6cOe599Hc0apKXJp1TytjUdq+sAL1f/fr1g0ZD0/srS0Dp1IFto0WLFq79aXQrIBZ0dTLc6EihtK/QlUdt49oXnO2qptAukChUmkKjkIVSVxllBYg3qrcywrLiTcvJCOBDhw51GTHqylyhQgU3aqBGPgs8btNxlo63vPahLpnK5FT7ePzxx/OwpkD872+yonMJja6sHis6/1B78ChrWb0D1O1MI04G7k/Gjh1ry5cvdyOMAvkpcFRW6dWrl8umV6a9yhJNnDjRbauhlAWpcxudi2j7VmmAwMwyjQ6pcxNt2+oRdrYumNp/aL/23XffuZvoWEvnUcpY1nJ5ihQpYg8//LC7KdNZoz1PmDDB9T7Tsui9khnBsjim/vQ6OddNQSSlZmoDVppyJOkiv2pcaFjmcEEFpWqqZoyGY86ODuiy28lp2VWzTDsl3ULp4G748OF5XAsg8m1GOwjVtpg5c6arvzRs2LA8vY8O2rJrG17as7fjC6W/rUA2EK8U5MrtSQ7tAslEwSzZvHmzKwsQjqZJTi7gNGzYMMv2cejQIXdxUidYCjCEUvmAUaNGnXFiBiSzVq1aucByOApE6ERfAbNwpV+0vyFYhnOhC4Xy008/Zdnl0psnXIBYpV90Lv3QQw+5oG7gBZrAumU61ylXrpyroSza3+giiaZ5geDsgmWBdfrC7T/UFgKDZYHOP/9813VT5QB0gVMBsxkzZgRdyEk2ybtmScZrMPqhjzRFiL/99lsbMWKE/2DPo2LLajCqPXbnnXee099R42vQoEHYwMXzzz/vDu4IliHe2oz657/88suWnp7u79sfSdqxqe6NMmxUFyCQ6qR169bNtY0hQ4ZE/G8D8Yp2gUTToUMHd6Lzl7/8Jcsi/6+88oo7qbjhhhvO6W8pk1qBsilTppwRHNi+fbtrF6ppc7bsAiBV6BxE2c6TJk0K256UtTN16lR/3WYgt7xi+PoN9uqsBgbKvvnmm7MGZJW9pSx9/YYHDgSjgcW8gJgu5Ku+mHcxRPsUJQnoN1/HTtrOs+uppbagjDDtq7TPCqT3V3abapKpjllW9HrVJFfgTdnVGiQgWREsizPvvvuuG+0r9Gqgui+KVyg/P7pgDhw48IyItzz11FOuYXnBMjUgNXovop0T+oFYtWqVC4YFFi30KO3zjjvusA8++MClRAPx0mZ0dWfkyJFuNKXsdgbqLqaBLcqUKeOuvOSUlz3z4IMPnrFzlZdeesnNQ1AAiYh2gVSh7VTZzNo2FcTq3bt30HSdiCu75d577/WXqFBXGl3QUdtQG8nNcZuyKu+7774zpimD/4knnnDtg2AZko3ai9qNuljqhD0nlOmjgJi6u4U7B6latarrYaPRlzW4GZAX1113ncv60u9/mzZt3EV2jwacUPdIXVTJjkYP1z5izJgxrsull6WsgJjOjxUQU7DsnnvuCXqdumLOnz/f/vnPf7q/7Qm3j9G+QV38w23rCsIpWKb2oAHTvvjiC/f3QgNnKq20du1aV4pAg3AkM4JlcaZfv34uEHXzzTe7YJSCSLq6rtotqgnjjZKR25OVxx577IznlcLZs2dP18e/Xbt2YQNlotGV1DdZ3TEVrdYVU2Wj/adGc84oA0Dz672yqg2lHwI1YIJliHWbCaSdXU5OyLWDUmZmjx49XEpyTmmb184wXEBA1Ga0jhpZUFeWgGjSdheuHoVOVHRQdTa0C6QS1crUaHu///3vXVaAl0G2dOlSdyKjLMnAMhTKZtE+avr06XbXXXfl6G+oNo0uEv3hD38IO10nNu3bt3clCHTSk9OAApAI+5vBgwe70hjKoNExXk4oCKZ6gVmdg2jEP53wa79DsAx5pXNk1ZrUOYO6BGt7UzaYzkkUfFJWWadOnc76Phr5+JlnnnEXPQK7DOvih377w5WnULBs9OjR/vmy2scoKUU1LpW1H87PfvYzd0yltqBg2SeffOJ62CjIpwCbYgc6rlMb1L5IyxmanZZsCJbFmaefftod4CgrRlFonfgrmqsDLzU+RZxzS+/xyCOPhN35KFNG0eHsGq+m6eBODTarg7OzUaPTemQ1pLrWS41bAY5x48Yldd9nxH+bieaBoU6swrXPwPanoIAOIAkKINp0gKdbKAW/chIsywvaBRKVaruqUPjkyZPdtqmMfV0o1IUcnVRov3SuwSsdi6kr8tmO23Qh9O9//3uWAQIgVfY3OgdRQoASA7K6KKqBzDSfip2rJwGQF+pGqSDuc88958obKZtMA7GoZ5WCT4HZZllRpqMCVOomqcx8b6AKLwjmdbsMDZaph432N9llFHtZ+2fbf6hGs2pstmrVyvWu0b5E5+f/+te/3AA1GgzgySefdLXLkl2ahsSM9UIAAAAAAAAA8eDs4U0AAAAAAAAgRRAsAwAAAAAAADIRLAMAAAAAAAAyESwDAAAAAAAAMhEsAwAAAAAAADIRLAMAAAAAAAAyFbQklZGRYbt377ZSpUpZWlparBcHSczn89mPP/5oVatWtfT0xIk/00YQLYnaRoR2gmhJ1HZCG0G0JGobEdoJoiVR2wltBPHYRpI2WKbGVr169VgvBlLIN998Y9WqVbNEQRtBtCVaGxHaCaIt0doJbQTRlmhtRGgniLZEaye0EcRjG0naYJmi0t6HULp06Zgsw8mTJ+2tt96y66+/3goVKhSTZUD+fy+HDh1yP+7eNpco4qGNJFt7YR2Sq41Es50kw7aTW6xzoaRoJ/G2L4mGVNx24+HzS9Q2ktt2wvaVN3xuid1O4nFfkkzbFOuStzaStMEyL31TjS2WwbLixYu7v5/oG2Uyya/vJdFShuOhjSRbe2EdkquNRLOdJMO2k1usc6GkaCfxti+JhlTcduPp80u0NpLbdsL2lTd8bondTuJxX5JM2xTrkrc2kjgdmQEAAAAAAIB8RrAMAAAAAAAAyESwDAAAAAAAAMhEsAwAAAAAAADIRLAsn1zw0CJrMGxprBcDQBTR5gEgdfCbD8QP2iOQNdpH3hAsAwAAAAAAADIRLAMAAAAAAAAyESwDAMTUE088YWlpada/f3//c8eOHbM+ffpY+fLlrWTJknbLLbfYvn37gl63a9cu69ixoxUvXtwqVapkAwcOtFOnTgXNs2LFCrv00kutSJEidtFFF9mMGTOitl7AuVi1apV16tTJqlat6trHm2++GTTd5/PZ0KFD7fzzz7dixYpZ27Zt7Ysvvgia5/vvv7c77rjDSpcubWXLlrWePXva4cOHg+bZvHmzXX311Va0aFGrXr26jRkzJirrBwAAEM8IlgEAYubDDz+0559/3ho1ahT0/IABA2zBggU2d+5cW7lype3evdu6du3qn3769GkXKDtx4oStWbPGZs6c6QJhCh54du7c6ea59tprbdOmTS4Y97vf/c6WLqVuA+LfkSNHrHHjxjZp0qSw0xXUmjhxok2dOtU++OADK1GihLVv394Fmj0KlG3dutXefvttW7hwoQvA9erVyz/90KFDdv3111vNmjVt48aN9tRTT9mwYcPshRdeiMo6AgDy15QpU9wxli6a6NayZUv7+9//7p/OxUkgawTLAAAxoQwXncy/+OKLdt555/mfP3jwoE2bNs3GjRtnbdq0sWbNmtn06dNdUGzdunVunrfeesu2bdtmr776qjVp0sQ6dOhgI0eOdIEFBdBEQYRatWrZ2LFjrW7duta3b1/75S9/aePHj4/ZOgM5pW36scces5tvvvmMacoqe+aZZ2zIkCHWuXNndyL0yiuvuKCyl4H22Wef2ZIlS+yll16yFi1a2FVXXWXPPvusvfbaa24+mTVrlmsvL7/8stWvX99uvfVW+8Mf/uDaHgAg8VWrVs1l8OuCyIYNG9xxlfYbupAiXJwEskawDAAQE7qSqYMrdR8LpAO6kydPBj1fp04dq1Gjhq1du9Y91n3Dhg2tcuXK/nmUVaNMGe8AUPOEvrfm8d4DSFQ6Mdm7d2/Q9l2mTBkXFAtsI+p62bx5c/88mj89Pd1lonnztGrVygoXLhzURrZv324//PBDVNcpUTDaOYBEou78N954o1188cV2ySWX2KhRo1wGmS4+cnESyF7Bs0wHACDilN3y0UcfuW6YoRQE0Mm7TvQDKTCmad48gYEyb7o3Lbt5FFD76aefXJ2nUMePH3c3j+YVBe90yy/ee+fn34g3rHP4aTnhbePhtu/A7V/dZQIVLFjQypUrFzSPTnBC38ObFpjxGes2Ei+KFPBZkXTff/6f7kuJdY6Xts9nDZwbZYkpg0zd/NUd82wXJ6+44oosL0727t3bXZxs2rRplhcnA2vRJuK+JJmOU7z9VjKsy8lz/F5y8zqCZQCAqPrmm2/sj3/8o6ujpKLi8WT06NE2fPjwM57XlVXV6shv+kxSDev8H0ePHrVEEOs2EmtjLv/v/0c2z7DFixfHcnFSqu0nShsB4s2nn37qgmOqT6assnnz5lm9evVcl8lYXZxMpH1JMhynjGyePOviyeu65GZfQrAMABBVupK5f/9+Vwg28Gqnio8/99xzrsaFUvsPHDgQdACngrNVqlRx/9f9+vXrg97XK0gbOE9okVo9VoHbcAduMnjwYLv//vv9j3WgpxECVQRdr8svusqlnX67du2sUKFClgpY5+B19q6q54S3jWt71miYHj1WNxlvHrWzQCrIrBEyz9ZGAv9GvLSReKEumLpCr0DZIxvSbePQG2K9SCnT9nPTRjwXXHCBff3112c8//vf/951I2vdurWr0xTo3nvvdd3KAoubK4vm3XffdYGGHj16uBN9ZWoCiaB27douMKZul//7v//rtuHQ7T7aEmFfkkzHKc1GLHH7rWRYl5Pn+L3kZl/CrzwAIKquu+46d5Uz0N133+1S/wcNGuQOlrTzW758uRuVSVRDSScsujIqulfdDQUDvK5m2nHqAEtXS715QrM+NI/3HuFoFCfdQml5onFwEa2/E09Y5/8+l1PqOqlgltqIFxzTwZ9qkemkXrSdK+Cs4LTq0Mg777xjGRkZrraZN8/DDz/sDjy9v682ohOrcF0w46GNxNrx02n//X9GWkqsc37J7TaTl89aXf11McazZcsWd4L1q1/9yv/cPffcYyNGjPA/Dsxq8Yqbq72pjtOePXuse/fublkef/zxXC8PEAvKHtMIlaL9gdrFhAkT7De/+U3MLk4m0r4kHpcpt7S/SpZ18eR1XXLzGgr8AwCiqlSpUtagQYOgW4kSJdyw5fq/CpX37NnTXXHUlXyd7CuYphN71c8QXXlUUKxbt272ySefuGw0jQyoQQO8g6/77rvP/vGPf9iDDz5on3/+uU2ePNlef/11N/ITkAijxSoTQDevqL/+r6BxWlqaqwWj0TL/9re/ueCzTuCrVq1qXbp0cfOryPINN9zgAgE60Vm9erUruqwRLzWf3H777e4kSu1NtWfmzJnjTqACr/YDiaxixYruRN67LVy40C688EK75pprgoJjgfMEZrXkpLg5kGh00UT1whQ48y5OesJdnNQ+JjBTOdzFycD3yMnFSSARECwDAMQdjaB00003ucwyjdanE5g33njDP71AgQLupEf3Ohi78847XbAgMDtA2TeLFi1yB2yNGzd2ozS99NJLrugsEO82bNjgCifrJgpg6f9Dhw51jxUE7tevn/Xq1csuu+wyF1xbsmRJUB3AWbNmuYxNZXNqNLSrrrrKXnjhBf90BaYVDFAgTidNDzzwgHt/vSeQbBTcUtDrt7/9rQs4B7aTChUquIs16hoWWM8mJyMvA/FM27TKXHz11Vcu6KXHK1assDvuuIOLk8BZ0A0TABBzOnALpBN+XbnXLSs1a9Y8a3Ft1aP5+OOPI7acQLRo2/X5/jN6VTg62VdwODBAHEojX86ePTvbv9OoUSN77733zmlZgUTw5ptvuu5md911l/85ZVdqX6Jsy82bN7tSAMqs8S7O5KS4eaRH+kumEfiiKZlG+zsXoeuvjDBdTFQXYgXH9JuvgJe6I3sXJ9PT093FSW2zCgYr2BV6cVJd/BVEU08A1TwLd3FSwTFlJ1erVo2Lk0gKBMsAAAAAJLVp06a5bpReN2QJzKJUBpkGzFAm5o4dO1x3zbyKxEh/yTRqXTQk42h/kRjpT9t9drg4CWSNYBkAAACApKURMZctWxbUnT8cb/CLL7/80gXLclLcPNIj/SXTCHzRlEyj/Z2LvIwaCyA8gmUAAAAAktb06dPdyMka2TI73oAayjDL6cjL+TXSXzKNWhfN0f6ajnrHto+6yVIV2wwQOQTLAAAAACTtyH8KlqnOUsGC/z31UVdL1fTT4BcajVk1y1RzSYPKqK5TaHHzMWPGuDplocXNAQDJiWAZAAAAgKSk7pe7du1yo2AGKly4sJv2zDPP2JEjR1w3SRU5VzAsN8XNAQDJiWAZAAAAgKSk7LBwI8sqOLZy5cqzvj4nxc0RWxc8tMiKFIj1UgBINumxXgAAAAAAAAAgXhAsAwAAAAAAADIRLAMibNWqVdapUyerWrWqpaWl2Ztvvhk0XV0Bhg4d6kZaKlasmLVt29a++OKLoHm+//57u+OOO9xoS2XLlrWePXva4cOHg+ZRIdqrr77aihYt6roSqPAsAAAAAAA4NwTLgAhTkdjGjRvbpEmTwk5XUGvixIk2depU++CDD1yx2Pbt29uxY8f88yhQtnXrVjc8uQrLKgDXq1cv//RDhw65Ghyqo7Fx40Z76qmnbNiwYfbCCy9EZR0BAAAAAEhWFPgHIqxDhw7uFo6yyjTqkkZa6ty5s3vulVdescqVK7sMtFtvvdU+++wzW7JkiX344YfWvHlzN8+zzz7rhjZ/+umnXcbarFmz7MSJE/byyy+70Zzq169vmzZtsnHjxgUF1QAAAAAAQO4QLAOiaOfOnbZ3717X9dJTpkwZa9Giha1du9YFy3SvrpdeoEw0f3p6ustEu/nmm908rVq1coEyj7LTnnzySfvhhx/svPPOO+NvHz9+3N0Cs9Pk5MmT7hZr3jLEw7LkVZF0X8KvQ358D4n8eQAAAABIPQTLgChSoEyUSRZIj71puq9UqVLQ9IIFC1q5cuWC5qlVq9YZ7+FNCxcsGz16tA0fPvyM59966y0rXry4xQt1PU1UI5sn/jp4IrkOR48ejdh7AQAAAEB+I1gGpIjBgwfb/fffH5RZpoEBVPtMAwnEmrKPFKBp166dFSpUyBJRsxFLbGTzjIReh/z4HrwsRgAAAABIBATLgCiqUqWKu9+3b58bDdOjx02aNPHPs3///qDXnTp1yo2Q6b1e93pNIO+xN0+oIkWKuFsoBUTiKbATb8uTG8cz0hJ+HTyRXIdE/ywAAAAApJaIj4aprl6XXXaZlSpVynUl69Kli23fvj1oHo3616dPHytfvryVLFnSbrnlljNO/Hft2mUdO3Z03cP0PgMHDnQBAyCRqeukglnLly8PyrpRLbKWLVu6x7o/cOCAG+XS884771hGRoarbebNoxEyA2tBKRuodu3aYbtgAgAAAACAGAXLVq5c6QJh69atcyfvOplXN68jR4745xkwYIAtWLDA5s6d6+bfvXu3de3a1T/99OnTLlCm0f7WrFljM2fOtBkzZtjQoUMjvbhAxB0+fNiNTKmbV9Rf/1cAOC0tzfr372+PPfaY/e1vf7NPP/3Uunfv7ka4VGBZ6tatazfccIPdc889tn79elu9erX17dvXFf/XfHL77be74v49e/a0rVu32pw5c2zChAlB3SwBAAAAAEAcdMNcsmRJ0GMFuZQZpiwZjd538OBBmzZtms2ePdvatGnj5pk+fboLECjAdsUVV7iC49u2bbNly5a5ouXqnjZy5EgbNGiQDRs2LGgEQCDebNiwwa699lr/Yy+A1aNHD9ceHnzwQRc87tWrl8sgu+qqq1y7KVq0qP81s2bNcgGy6667zo2CqezLiRMnBo2gqXaiwHSzZs2sQoUKLpis9wQAAAAAAHFcs0zBMdFIfqKgmbLN2rZt65+nTp06VqNGDVu7dq0Llum+YcOGQSMGtm/f3nr37u2yaJo2bZrfiw3kWevWrc3n82U5XdllI0aMcLesqL0ooJydRo0a2XvvvXdOywoAAAAAAKIYLFONJXU5u/LKK61Bgwbuub1797rMsLJlywbNq8CYpnnzBAbKvOnetHCOHz/ubqGjrykwF1jXKVqKFPBZkfT/BExi8feRNe/7iNT3wvcLAAAAAEDyyNdgmbqIbdmyxd5//33LbxpYYPjw4Wc8r65qGiQg2sZc/t//q3Yb4k+kvpejR49G5H0AAAAAAEASB8tUb2nhwoVuxL5q1ar5n9dIgCrcr1pNgdllGg1T07x5VNg8kDdapjdPqMGDBwcVN1dmWfXq1d3gAqVLl7ZoazBsqcssG9k8w9q1a2eFChWK+jIg60wwBcoi9b14WYwAAAAAACDxRTxYplpN/fr1s3nz5tmKFSusVq1aQdNVjFwBiuXLl7ui5bJ9+3Y3UmDLli3dY92PGjXK9u/f7wYHEAU3FPSqV69e2L9bpEgRdwulvxWLQNXx02kxXwZkL1LfC98tAAAAAADJo2B+dL1UYfL58+dbqVKl/DXGNHpfsWLF3H3Pnj1dFpiKmCsApuCaAmQq7i/KBlNQrFu3bjZmzBj3HkOGDHHvHS4gBgAAAAAAAMRlsGzKlCn+EQEDTZ8+3e666y73//Hjx1t6errLLFNRfo10OXnyZP+8BQoUcF04NfqlgmglSpSwHj16ZDt6IAAAAAAAABCX3TDPpmjRojZp0iR3y0rNmjVt8eLFEV46AAAAAAAAIGvp2UwDAORxgA8AAABE3wUPLXI3ADgXBMsAAAAAAACA/OqGCQCpxrt6WaRArJcEAAAAAHCuyCwDAAAAACDJjB492i677DIrVaqUVapUybp06WLbt28PmufYsWPWp08fK1++vJUsWdINwrdv376geXbt2mUdO3a04sWLu/cZOHCgnTp1KmieFStW2KWXXmpFihSxiy66yGbMmBGVdQTyC8EyAAAAAACSzMqVK10gbN26dfb222/byZMn7frrr7cjR4745xkwYIAtWLDA5s6d6+bfvXu3de3a1T/99OnTLlB24sQJW7Nmjc2cOdMFwoYOHeqfZ+fOnW6ea6+91jZt2mT9+/e33/3ud7Z0KXV8kbjohgkAAADksRv+V090jPViAEBYS5YsCXqsIJcywzZu3GitWrWygwcP2rRp02z27NnWpk0bN8/06dOtbt26LsB2xRVX2FtvvWXbtm2zZcuWWeXKla1JkyY2cuRIGzRokA0bNswKFy5sU6dOtVq1atnYsWPde+j177//vo0fP97at28fk3UHzhWZZQAAAACSjk7k09LSgm516tSJePczIFEoOCblypVz9wqaKdusbdu2/nnURmrUqGFr1651j3XfsGFDFyjzKAB26NAh27p1q3+ewPfw5vHeI9Tx48fd6wNvomWJp1s8LlNebkXSfUmzLicj8L3kFJllAAAAAJJS/fr1XUaMp2DBgkHdzxYtWuS6n5UpU8b69u3rup+tXr06qPtZlSpVXPezPXv2WPfu3a1QoUL2+OOPx2R9gLzKyMhw3SOvvPJKa9CggXtu7969LjOsbNmyQfMqMKZp3jyBgTJvujctu3kUBPvpp5+sWLFiZ9RSGz58+BnLqCw2BabjibqvJrqRzZNnXTx5XZejR4/meF6CZQAAAACSkoJjCnaFilT3MyBRKItyy5YtrntkrA0ePNjuv/9+/2MF1apXr+7qqZUuXdrigTKQFJBp166dC5AnsmYjltjI5hlJsS4nz/F78bIYc4JgGQAAAJCD+mRIPF988YVVrVrVihYtai1btnQZLepidrbuZwqWZdX9rHfv3q77WdOmTWO0VkDuKGty4cKFtmrVKqtWrZr/eQWSVbj/wIEDQdll6o7sBZl1v379+qD387orB84T2oVZjxX4Cs0qE42YqVsoBT/iLZgTj8uUW8cz0pJmXTx5XZfcvIZgGQAAAICk06JFC1fQvHbt2q4Lpbp9XX311S67JlLdz7Kqx6SbJ7QeU3YC6/EgZ4oU8PlrMnn3qfoZhq6zz+ezfv362bx582zFihWuCH+gZs2aueDB8uXLXc0+2b59u6vVp+Cy6H7UqFG2f/9+V7dPlNmjQFi9evX88yxevDjovTWP9x5AIiJYBgAAACDpdOjQwf//Ro0aueBZzZo17fXXXw+b7RIpkajHlEy1hfLbmMv/+391NfOEBm9SQWg9JnW9VFfj+fPnW6lSpfxBXtXoUxvQfc+ePV2XSBX9VwBMwTUFuZRdKeoaqaBYt27dbMyYMe49hgwZ4t7byw6777777LnnnrMHH3zQfvvb39o777zj2plqAgKJimAZAAAAgKSnLLJLLrnEvvzyS1fvJhLdzyJdjymZ6iTltwbDlvr/r4wyBcoe2ZDu73K2ZVh7SzWh9ZimTJni7lu3bh30vOrz3XXXXe7/48ePt/T0dJdZpoxIdTWePHmyf94CBQq4LpzqfqwgWokSJaxHjx42YsQI/zzKWFNgTINmTJgwwXX1fOmll9x7AYmKYBkAAACApHf48GHbsWOHy5CJVPezcCJRjymZagvll+On0858LiPN/3wqfn6h66xumGejen6TJk1yt6woI/NsmXoKyH388ce5WFogvhEsAwAAAJB0/vSnP1mnTp3cif7u3bvt0UcfdVkyt912W8S6nwEAkhPBMgAAAABJ59tvv3WBse+++84qVqxoV111la1bt879P1LdzwAAyYlgGQAAAICk89prr0Wl+xkAIPmkx3oBAAAAAAAAgHhBsAwAAAAAAADIRLAMAAAAAAAAyESwDAAAAAAAAMhEsAwAAAAAAADIRLAMABBVo0ePtssuu8xKlSpllSpVsi5dutj27duD5jl27Jj16dPHypcvbyVLlrRbbrnF9u3bFzTPrl27rGPHjla8eHH3PgMHDrRTp04FzbNixQq79NJLrUiRInbRRRfZjBkzorKOQH4bNmyYpaWlBd3q1KkT8TYEAACQigiWAQCiauXKle4kft26dfb222/byZMn7frrr7cjR4745xkwYIAtWLDA5s6d6+bfvXu3de3a1T/99OnT7iT/xIkTtmbNGps5c6YLhA0dOtQ/z86dO9081157rW3atMn69+9vv/vd72zp0qVRX2cgP9SvX9/27Nnjv73//vsRbUMAAACpqmCsFwAAkFqWLFkS9Fgn6Mpq2bhxo7Vq1coOHjxo06ZNs9mzZ1ubNm3cPNOnT7e6deu6ANsVV1xhb731lm3bts2WLVtmlStXtiZNmtjIkSNt0KBBLuOmcOHCNnXqVKtVq5aNHTvWvYder2DC+PHjrX379jFZdyCSChYsaFWqVDnj+Ui1IQAAgFRFsAwAEFM6sZdy5cq5ewXNlG3Wtm1b/zzqXlajRg1bu3atO9HXfcOGDd1JvkcBsN69e9vWrVutadOmbp7A9/DmUYZZVo4fP+5unkOHDrl7LY9u+cV77/z8G/GGdQ4/LTe++OILq1q1qhUtWtRatmzpujirnUSqDcVTG4kHRQr4/nOfHnyf7OsdL22fzxm5dcFDi+yrJzrGejEAJCiCZQCAmMnIyHDBqyuvvNIaNGjgntu7d6/LailbtmzQvDqp1zRvnsCTfG+6Ny27eXRy/9NPP1mxYsXOWB4FG4YPH37G88rCUV2n/KZuqamGdf6Po0eP5uo9WrRo4bIya9eu7bpgaru9+uqrbcuWLRFrQ+HEuo3E0pjLgx+PbJ7h7hcvXhybBUqxtp/bNgIAwLkgWAYAiBnVLtPJfWCtpVgaPHiw3X///f7HCqxVr17d1VQrXbp0vv1dZUzoxLFdu3ZWqFAhSwWsc/A6exlaOdWhQwf//xs1auSCZzVr1rTXX389bCA40dtIPGgwbKk/o0yBskc2pNvxjDTbMoxu3dFo+7ltIwAAnAuCZQCAmOjbt68tXLjQVq1aZdWqVfM/rxpMKjp+4MCBoMwYjeTn1WfS/fr164PezxvpL3Ce0NH/9Fgn9FkFEzRqpm6hdEIXjYBOtP5OPGGd//vcuVBbueSSS+zLL790QYhItKF4bCOxdPx0WvDjjDT3XLKvd37J7TbD5wwAiCZGwwQARJXP53OBsnnz5tk777zjivAHatasmTspWr58uf+57du3265du1xdJtH9p59+avv37/fPo0wFBcLq1avnnyfwPbx5vPcAksnhw4dtx44ddv7550esDQFAvNYi0w0A8hOZZQCAqHe91Ch98+fPt1KlSvnrI5UpU8ZlfOm+Z8+erquXiv7r5L1fv37u5F6FyUVdvnRC361bNxszZox7jyFDhrj39rJe7rvvPnvuuefswQcftN/+9rcuMKcuaosWcYCNxPenP/3JOnXq5Lpe7t692x599FErUKCA3XbbbRFrQwAAAKmKzDIgyoYNG2ZpaWlBN41S5jl27Jg7WSlfvryVLFnSbrnlljO6kik7oGPHjq6YcqVKlWzgwIF26tSpGKwNkHtTpkxxI2C2bt3aZcF4tzlz5vjnGT9+vN10001u+2/VqpXrFvbGG2/4pysooC6culcA4M4777Tu3bvbiBEj/PMoY02BMWXLNG7c2MaOHWsvvfSSG/EPSHTffvutC4ypwP+vf/1rt89Yt26dVaxYMWJtCAAAIFWRWQbEQP369W3ZsmX+xwUL/rcpDhgwwJ3gz50712UHqLta165dbfXq1W766dOnXaBMJz5r1qxxo6DpBEddbh5//PGYrA+Q226YZ1O0aFGbNGmSu2VFGTVnG4VOAbmPP/44T8sJxLPXXnstKm0IAAAgFREsA2JAwbFwBZSVbTNt2jTXRa1NmzbuuenTp1vdunVdxoC6z7z11lu2bds2F2yrXLmyNWnSxEaOHGmDBg1yWWuFCxeOwRoBAAAAAJAcCJYBMfDFF19Y1apV3ZV/dX8ZPXq01ahRwzZu3OiGVG/btq1/XnXR1LS1a9e6YJnuGzZs6AJlHnUr6927t23dutWaNm0a9m8eP37c3UKHYNff0y3WvGWIh2XJrSIF/pMpVST9v/eJuB759T0k6mcBAAAAIDVFPFi2atUqe+qpp9xJv7qHabSzLl26BHW/URHaF1980Q1pfuWVV7r6NRdffLF/nu+//94Vol2wYIGlp6e7ehsTJkxw9ZuARNeiRQubMWOGqzOjNjJ8+HC7+uqrbcuWLa7AsjLDypYtG/QaBca8Iui6DwyUedO9aVlRQE5/K5Qy1VT7LF6ovlSiGXN58OORzTMSvmtTJL+Ho0ePRuy9AAAAACDhgmVHjhxxhZQ18pjqLIXSiEsTJ060mTNnuuLLjzzyiMuKUbcyZdnIHXfc4YIIOllTRsLdd99tvXr1cl3TgETXoUMH//8bNWrkgmeqG6NR+jQSYH4ZPHiwGxktMLOsevXqbkQ0jZQWa2rravPt2rVz9dcSSYNhS/0ZZQqUPbIh3TYOvcESUX58D14WIwAAAACkZLBMgYDAYEAgZZU988wzbmjyzp07u+deeeUVlxXz5ptv2q233mqfffaZLVmyxD788ENr3ry5m+fZZ5+1G2+80Z5++mnXdQ1IJsoiu+SSS+zLL790AYoTJ064rMvA7DKNhunVONP9+vXrg97DGy0zXB00T5EiRdwtlAIi8RScirflyYnjp9OCH2ekJdw65Of3kOifBQAAAIDUEtWaZTt37nTdxALrMWm0P2XWqA6TgmW6V5DAC5SJ5ld3zA8++MBuvvnmhKjHpBpGXv0i6vUkd02mc32fw4cP244dO6xbt27WrFkzF1hYvny5634s27dvt127drnaZqL7UaNG2f79+61SpUruOWUCKTusXr16EVgjAAAAAABSV1SDZV49pXD1lgLrMXkBgMCRA8uVK5dQ9ZgCaxglYg2mVBCp7yW39Zj+9Kc/WadOnVzXy927d7safgUKFLDbbrvNBY979uzpuktqm1cATPX7FCBTcX9Rt0kFxRRcU7dmtQtla/bp0yds5hgAAAAAAEjB0TDjrR6Tahh59YsSsQZTMot0Tabc1mP69ttvXWDsu+++s4oVK9pVV11l69atc/+X8ePH+we2ULakavpNnjzZ/3oF1hYuXOhGv1QQrUSJEtajRw8bMWLEOa8LIueChxa5+6+e6BjrRQEA5CN+7wEASD5RDZZ59ZRUX+n888/3P6/HTZo08c+j7mWBTp065UbITKR6TIE1jBKxBlMqiNT3ktv3eO2117KdroEuJk2a5G5ZUVZaoo+2CAAAACD/rFq1yp566inbuHGjG0Bv3rx51qVLl6Ca4url8uKLL7qayVdeeaVNmTLFLr74Yv88Og9XT5cFCxb4L+hPmDDBSpYs6Z9n8+bNrpeL6o4rAUDzP/jgg1FfXyCS0i2KNPqlAl6qxxSYlaNaZIH1mNRQ1aA977zzjmVkZLjaZgAAAAAAIHtHjhyxxo0bZ3kRXiVdJk6caFOnTnXn5Oqxol4tx44d889zxx132NatW13PHPVuUQCuV69eQefz6s2li/k6h1dwbtiwYfbCCy9EZR2BhAmWqVj5pk2b3M0r6q//q0B5Wlqa9e/f3x577DH729/+Zp9++ql1797djXDpRbjr1q1rN9xwg91zzz1uxL/Vq1db3759XfF/RsIEAAAAkBOqaXzZZZdZqVKlXE1knW9o4KRArVu3ducogbf77rsvaB6dx3Ts2NHVQdb7DBw40PV8AeJdhw4d3Ll3uEHylFX2zDPPuNrHnTt3tkaNGtkrr7ziaiq/+eabbp7PPvvMlixZYi+99JJLXFH5mGeffdb1lNF8MmvWLDtx4oS9/PLLVr9+fXfe/oc//MHGjRsX9fUF4jpYtmHDBmvatKm7ieqI6f9Dhw51j5WOqbRMRaO181JwTQ1QXc88anB16tSx6667zm688UbXKIlMAwAAIBY1yby6ZEgsK1eudF3DVBtWWTGqW6sMGGXbBNJFenVR827KtvGcPn3aBcoUDFizZo3NnDnTZsyY4T+3ARKVklo0UFjbtm39z2mwMQXF1q5d6x7rvmzZsta8eXP/PJpf3TGViebN06pVKytcuLB/HmWnKTD9ww8/RHWdgLiuWaarM4pSZ0VXa1SIPLti5BoFcPbs2ZFeNAAAAAApQhfkAynIpcwwdRXTyb1HGWNZ1UZ+6623bNu2bbZs2TKrXLmyq7M8cuRIGzRokOtqFhggQPxhAI6sKVAm2q4D6bE3TfdqM4EKFizoztcD51G5pdD38Kadd955Z/xtDWKmW+iAaQpo6xYPvOWIl+U5Fxp4MFnW5eQ5fi+5eV3SjIYJAAAAAFk5ePCgu9eJfiD1ann11VddwKxTp072yCOPuACalzXTsGHDoICCsmY0KrnqOHm9aQDkrov08OHDwwanvbYXL5SVmuhGNk+edfHkdV2OHj2a43kJlgHAOaBrDgAA8U+Dhal2skb7a9Cggf/522+/3RUmV21kjeinjDF1H3vjjTf8mTHhMm+8aeGcS9ZMMmWz5JciBXxZZs5496FS5fPMzXp62ZT79u2z888/3/+8HiuD0ptn//79Qa9TvT6NkOm9Xvd6TSDvcVYZm4MHD3blmgLbSPXq1V036dKlS1u8fJYKyLRr184KFSpkiazZiCU2snlGUqzLyXP8Xrzf45wgWAYAAAAgqal22ZYtW+z9998Pej5wVD9lkClooLrJO3bssAsvvDBmWTPJlAESaWMuz3qaAgLhLF682FJBbrJm1HVSwazly5f7g2MKJKgWmTInpWXLlnbgwAHXdblZs2buuXfeeccFn1XbzJvn4YcfdkEML3ih7bd27dphu2BKkSJF3C2UXh9vwZx4XKbcOp6RljTr4snruuTmNQTLAAAAACStvn372sKFC23VqlVWrVq1bOf1AgBffvmlC5YpmLB+/fqoZc0kUzZLfmkwbOkZzymjTIGyRzak+wMDgbYMa2+pIDRrRoPpaVsOLOq/adMm1xW5Ro0aLttSo2VefPHFLnimLsjKstTIsVK3bl274YYb3CAYU6dOddun2pNGvNR8XnamgsM9e/Z0mZkKSk+YMMHGjx8f5bVHTtrO9lE3xXoxEgbBMgAAAABJR4OO9evXz+bNm2crVqw4owh5OAokiNctTVkzo0aNcl3RvELnCmYp6FWvXr18y5pJpgyQyJe/ODMY5lGg7PjpM6enymcZup4bNmywa6+91v/YC+L26NHDDXjx4IMPutFhlWGpDLKrrrrKDYxRtGjRoJp+CpAp41KjYN5yyy02ceLEoBE0lTWp7E1ln1WoUMGNFhuYtQkkIoJlAAAAAJKOTt5nz55t8+fPt1KlSvlrjOnkvlixYq6rpabfeOONVr58eVezbMCAAW6kzEaNGrl5lQ2moFi3bt1szJgx7j2GDBni3jtcQAyIJ61bt3ZB46ykpaXZiBEj3C0rykJTO8mO2st77713TssKxJv0WC8AAAAAAETalClT3AiYChgoU8y7zZkzx00vXLiwLVu2zAXE6tSpYw888IDLmlmwYIH/PQoUKOC6cOpeWWZ33nmnde/ePdvgAgAg8ZFZBgAAot6NRqOZZVekGQDOVXYZNaI6YitXrjzr+2i0zFQpEA8A+A8yywAAAAAAAIBMBMsAAAAAAACATATLAAAAgIiM0gcAAJIBwTIAAAAAAAAgE8EyAAAAAACAJEPWc94RLAOAfMQOCgASF7/hQPy0RdojgGgiWAYAAAAASFoE2gDkFsEyAAAQMw2GLeUkBgAAAHGFYBkAAAAAAACQiWAZAAAAAAAAkIlgGQAAAAAAAJCpoPcfAEDOUWMJAJDVvuGrJzrGelEAAMA5ILMMAAAAAAAAyESwDAAAAAAAAMhEN8woaDBsqR0/nUZKPgAAQAKgqz0QP2iPQORQLiDnyCwDAAAAACR9kIDAG4CcIrMMAAAAAAAgSRAYPndkluUDNkwAAAAAAIDERLAMAPIZaf8AkFr4zQcAILERLIsgToiB1EA7B4DkxW88kNxo4wDtICcIlkURwTQgtdH+AQAAcoZzJwCxRIF/AAAAAACABJebALM371dPdMzHJUpcZJYBAICYZwmQPYBkQ1YMAACJi8yyCOFgCEh+tHMAAIDER0YNkhHnKpFFsAwAooiDMwCIT5xkAPGD9ghEr73o9ZybnIlumAAQI3TRAYD4kJ+/xfzOA/GL9olExzacosGySZMm2QUXXGBFixa1Fi1a2Pr16y0ZTnDZoJEK7SRZeO090u2W34HooY3Eh5xs8wSQY4d2kr/YthMfbSR50T4jh3aSuGgHCdQNc86cOXb//ffb1KlTXUN75plnrH379rZ9+3arVKlSzJYrcAOKdMCM1EckSztJdOwokgdtBDi7VG0nseh2QleXxJSqbSTaOP5KbLST5Ggv7KcSILNs3Lhxds8999jdd99t9erVc42uePHi9vLLL1uyyq8MFiSvVGwnydj+aPv5hzaSmGgL0ZXK7SQWv7383ieeVG4jqdQmOB47N7ST6MnvbZR2EMeZZSdOnLCNGzfa4MGD/c+lp6db27Ztbe3atVGJnoY+F8uNhegu4qGdJLN42hkELgvt/tzQRhK7TdEWoiPV2gm/98itVGsjqdgWce5oJ/kvVhf0U3k/FZfBsn//+992+vRpq1y5ctDzevz555+Hfc3x48fdzXPw4EF3//3339vJkyfPmL/F6OX2weDr3P8LnjpiF/3p9TM+mO++++6/j08dyfV6FMzw2dGjGVbwZLqdzkjL1WsDlyd0WbKidRJvvUKnhXs+FWl7OHr0qPtMCxUqdE6fq/z444/u3ufzWTy3k9y2kUjKyfaX1fcS7vMPfD9veihNz2pafv0QnkubDyf0dymnAtc99P+Rbh85kShtJJbtJD8+93MV2H7O1t7y0qZy017y2hYCBa5DrPaH2X3PidJO8nK8lZdjk6x++z1ZPR+N3/tI/9ZH8vf+bJ9VPMjr712itJFz3ZfE4/4gO1m18bO1y0ifhEbrGCwnx5+xlCjtJJbnJTmVX20x3L4vJ/uxgjFuHxflYj+V3XnbubaRc/1ectVGfHHon//8p5bct2bNmqDnBw4c6Lv88svDvubRRx91r+HGLVa3b775xhfP7YQ2wi3Wt3hvI0I74RbrW7y3E9oIt1jf4r2NCO2EW6xv8d5OaCPcLAHaSFxmllWoUMEKFChg+/btC3pej6tUqRL2NUr5VEFBT0ZGhotMly9f3tLSInPVL7cOHTpk1atXt2+++cZKly4dk2VA/n8vikorQl21alWL53YSj20k2doL65DYbSSW7SQZtp3cYp1LJ2Q7ifd9STSk4rYbD59forSRc20nbF95w+eWWO0kEfYlybRNsS55ayNxGSwrXLiwNWvWzJYvX25dunTxNyA97tu3b9jXFClSxN0ClS1b1uKBvsRE3yiTUSS/lzJlyli8t5N4biPJ1l5Yh8RsI/HQTpJh28kt1jmx2kms20g8ScVtN9afXyK0kUi1E7avvOFzS4x2kkj7kmTapliX3LWRuAyWiSLNPXr0sObNm9vll1/uhp49cuSIG10DwH/QToDs0UaAs6OdANmjjQBnRztBsonbYNlvfvMb+9e//mVDhw61vXv3WpMmTWzJkiVnFA0EUhntBMgebQQ4O9oJkD3aCHB2tBMkm7gNlolSNrNKb04ESi199NFHz0gxRWwl2/eS6O0kmb4X1iE+JUIbScbP/WxY5/iSCO0kXsTz95gIEvXzi1YbSdTPJ9b43OJDMu1LkmmbYl3yJk1V/vP4WgAAAAAAACCppMd6AQAAAAAAAIB4QbAMAAAAAAAAyESwDAAAAAAAAMhEsCyfTJo0yS644AIrWrSotWjRwtavXx/rRUp5w4YNs7S0tKBbnTp1Yr1YKeurr76ynj17Wq1ataxYsWJ24YUXumKNJ06cyPZ1rVu3PuN7vO++++K2bc+dO9dtZ5q/YcOGtnjxYouV0aNH22WXXWalSpWySpUqWZcuXWz79u3ZvmbGjBlnfN5aF0S3HWzevNmuvvpq99lXr17dxowZY4kumfeTOWlrx44dsz59+lj58uWtZMmSdsstt9i+fftitszIuWTediNp1apV1qlTJ6tatarbd7z55ptB01U2WaPmnX/++e73r23btvbFF1/EbHnjkbaz0H3wE088EevFiju0SUTaqFGj7Be/+IUVL17cypYtG3aeXbt2WceOHd082tcPHDjQTp06FfVlTcb2sSpO9h8Ey/LBnDlz7P7773cnPB999JE1btzY2rdvb/v374/1oqW8+vXr2549e/y3999/P9aLlLI+//xzy8jIsOeff962bt1q48ePt6lTp9qf//zns772nnvuCfoeoxU4yG3bXrNmjd12220uGPLxxx+7E2bdtmzZYrGwcuVKd3K+bt06e/vtt+3kyZN2/fXX25EjR7J9XenSpYM+76+//jpqy5zsctIODh065L6nmjVr2saNG+2pp55ywf8XXnjBElWy7ydz0tYGDBhgCxYscAF1zb97927r2rVrTJcbZ5fs224kaXvX56MTtXC07544caL7zfvggw+sRIkS7rNUIBn/NWLEiKB9cL9+/WK9SHGFNon8oIuWv/rVr6x3795hp58+fdoFyjSfjvdnzpzpLjArgBNPErV9HImX/YdGw0RkXX755b4+ffr4H58+fdpXtWpV3+jRo2O6XKnu0Ucf9TVu3DjWi4FsjBkzxlerVq1s57nmmmt8f/zjH32J0LZ//etf+zp27Bj0XIsWLXz33nuvLx7s379foyH7Vq5cmeU806dP95UpUyaqy5XqQtvB5MmTfeedd57v+PHj/ucGDRrkq127ti9Rpdp+MrStHThwwFeoUCHf3Llz/fN89tlnbp61a9fGcElxNqm27UaKtu158+b5H2dkZPiqVKnie+qpp/zPqV0UKVLE99e//jVGSxl/atas6Rs/fnysFyOu0SaRn7I6Dl68eLEvPT3dt3fvXv9zU6ZM8ZUuXTroeC3WkqF9WAz3H2SWRZiiy7ryr1RAT3p6unu8du3amC4bzKVnKp3z5z//ud1xxx0ufRbx4+DBg1auXLmzzjdr1iyrUKGCNWjQwAYPHmxHjx6Ny7at5wPnF131iJffAn3ecrbP/PDhwy6rSd3/Onfu7DKgEL12oO2lVatWVrhw4aDtSN36fvjhB0s0qbifDG1rWn9lmwV+BuquXaNGjaT9DJJBKm67+WXnzp22d+/eoM+yTJkyrosQn2UwdbtUd+2mTZu6zOJ47OYVK7RJxIq2L5VXqVy5ctCxmXoDxMtxcrK2j51R3H8UjOi7wf7973+7tMzAhiN6rO42iB01IKXH1q5d26WxDx8+3NUAUpc41ZVBbH355Zf27LPP2tNPP53tfLfffrsL3CjoqTpOgwYNckGDN954I+7atn7Iw82v52NNXf/69+9vV155pQs6ZkXt5eWXX7ZGjRq5E359P6rhoAOBatWqRXWZU7UdaHtRTbNA3nalaeedd54lklTbT4Zra/reFPwMrYMSL78PCC/Vtt385G3n8bqPjBd/+MMf7NJLL3WBdnX10gVCHcOOGzcu1osWF2iTiJWsjvG9afEgWdvH3ijuP8gsQ8ro0KGD63uuk35F/lVo/cCBA/b666/HetGSykMPPXRGMdrQW+gP9D//+U+74YYb3PejemTZ6dWrl/v+dDVH2YGvvPKKzZs3z3bs2JHPa5ZcVE9JgeLXXnst2/latmxp3bt3tyZNmtg111zjgpIVK1Z0NbYQu3aA5GtrAFJDbvYPqjWkgY107KrBjMaOHesuqBw/fjzWqwGkxLEZUhuZZRGmrmEFChQ4Y0QrPa5SpUrMlgtn0hX9Sy65xGVyIHIeeOABu+uuu7KdR91gPSpqfe2117pspbwULFfGoOh71EiC8dS29Xw8/hb07dvXFi5c6EaayW12WKFChVxXENpN9NpBVtuRNy3RpNJ+Mqu2pvVU9whdsAnMLkvGzyCZpNK2m9+8z0ufnUYz8+ixLs4ks9zuH0KPedQNUyMpK/M71dEmEa22F0rbV+iokvF2bJas7aNKFPcfZJZFmLpVNGvWzJYvXx7UBUOPlaGB+KE6TMpGCmxkOHfKOlLtnexuXu0lZdLoiqnazPTp010/+tzatGmTu8/v7zEvbVvPB84vGhkvVr8FqpGpk3dl4r3zzjtndO3LCaVzf/rpp7SbKLYDbS8KtqjGVeB2pBOlROuCmSr7ybO1Na2/As+Bn4G6k6uOZrJ8BskoFbbdaFGb0AlP4GepWj8a1SzZP8vc7B/CHfNoH1GpUqWoL3c8ok0iWm0vlLYvHQ8HjiqpYzONIF+vXj2LB8naPmpFc/8R0eEC4Lz22mtuNIYZM2b4tm3b5uvVq5evbNmyQaNl5FanTp18xYoV8x06dCjLeW6//XY3uta///1vN2pE4MgXO3fudM9ldTvbiBgaSTJwfi1L3bp1fQ8//LDv4MGDZ8w/adIkN59G4IgXDzzwgG/FihXus1i9erWvbdu2vgoVKrhRyhB93377re+iiy7yXXfdde7/e/bs8d8C59GIfx988IF7/OWXX/pGjBjh27Bhg/se58+f7/v5z3/ua9Wq1Rkj1wRur2qP559/vu/666/3TZgwIct29Mknn/juuusu3wUXXOBeU6JECTeC6sCBA307duw4a9v+xS9+EfR3Cxcu7O71/Hvvvefakdrop59+6uZftGiRm65l0+g0+a13795uRB+1g8DP++jRo/55unXr5nvooYf8j4cPH+5bunSpW/+NGzf6br31Vl/RokV9W7duzfflTQU5aQca4ady5cruu9myZYvbDosXL+57/vnno74/GTt2rHv89ttvZ/naF154wc2j9hmqR48eQW1E25La+BVXXOG2zdD9pNqe5tPIsokkJ23tvvvu89WoUcP3zjvvuN+0li1buhuiZ86cOW77euONN86Y1qhRIzdN308gtT89r3ar/UDJkiV9BQsWzPYYz9vuGzZs6EbxChV6zJbdyIiB7adixYq+q666Kuzyy2WXXebm04i6sfDjjz/6Pv74Y3fTcowbN879/+uvv3bTn3jiCbcP1W/F5s2bfZ07d3YjAf/0008xWd54s2bNGjcS5qZNm9w++NVXX3Xfeffu3WO9aEl/3gXod0q/VzoO1u+891um3zU5deqUr0GDBu7cQm10yZIlrn0OHjzYF08StX38GCf7D4Jl+eTZZ591B8E6WVbAaN26def0ft7B2cyZM8NOP3LkiDux10mQZBUsu+2223x/+ctfzrjpBCwnwTINiav5dX/zzTe753RwH3rwp+CAAg6a/sUXX/jiwW9+8xsXlNB38rOf/cw9VvAFsREa0Aq8hW637777rnu8a9cuFxgrV66c++HXyYpOpkMDtt57K7Cm7fXll1/2Pf74426HlpaW5k44FBgLPcEvUKCAC0rcf//97rFOMH7/+9+75xQ40I4xu7atk/7Av/viiy/6rrnmGv96KcCsAFlgQMJrJ9kFHyIlq89bn5dHy6sTO0///v3966vP4cYbb/R99NFH+b6sqSIn7UC0veqkWNu9fr90kBCL/ck///lPN1T63XffneX7t27d2le+fHnfiRMnzpimbUvroPahE77zzjvPtUn9DV3ACKT9SrVq1VwbOVtwL97kpK3pgE6/L/oMFPzUPjUwSIr8p+1Z34t+8wNpn6LtXEGwkSNHBk3Tfkiv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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print(\"normality tests for increments, not returns!!\")\n", + "increments = data - data.shift(1)\n", + "_ = increments.hist(bins=int(np.sqrt(increments.shape[0])), figsize=(15, 15))\n", + "\n", + "normality_test(increments.tail(25 * 3))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27153b45", + "metadata": {}, + "outputs": [], + "source": [ + "nb = 15 # will work with nb stocks\n", + "all_returns = returns.copy() # backup\n", + "nb_all = all_returns.shape[1]\n", + "\n", + "if nb > nb_all:\n", + " print(\"too many number of stocks, revert to max\")\n", + " nb = nb_all\n", + "\n", + "# choose the stock names\n", + "nb_stocks_names = np.random.choice(all_returns.keys(), nb, replace=False)\n", + "returns_small = all_returns.loc[:, nb_stocks_names]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "4e01bf0f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mean_returns = returns_small.mean()\n", + "cov_matrix = returns_small.cov()\n", + "rdt_list = []\n", + "std_list = []\n", + "\n", + "for _ in range(500):\n", + " # sample at random some \"allocation\"\n", + " allocation = np.random.dirichlet(np.ones(nb))\n", + " rdt_port = allocation @ mean_returns\n", + " std_port = np.sqrt(allocation @ cov_matrix @ allocation)\n", + " rdt_list.append(rdt_port)\n", + " std_list.append(std_port)\n", + "\n", + "std_list = np.array(std_list)\n", + "rdt_list = np.array(rdt_list)\n", + "\n", + "inverse_cov = np.linalg.inv(cov_matrix)\n", + "\n", + "# compute and draw the efficient frontier on the same graph\n", + "onesM = np.ones_like(mean_returns)\n", + "\n", + "# compute 'a' and 'b' using formulas from the course\n", + "a = onesM @ inverse_cov @ onesM # np.sum(inverse_cov)\n", + "b = onesM @ inverse_cov @ mean_returns\n", + "\n", + "# plot the frontier and its symmetric w/r to origin\n", + "sigmarange = np.linspace(1.0 / np.sqrt(a) + 1.0e-10, 1.1 * np.max(std_list), 47)\n", + "# compute the return of the optimal portfolio for sigma in sigmarange\n", + "# will use the \"factor\" auxiliary variable\n", + "factor = np.sqrt((mean_returns - b / a) @ inverse_cov @ (mean_returns - b / a))\n", + "optimal_return = b / a + np.sqrt(sigmarange**2 - 1.0 / a) * factor\n", + "\n", + "fig = plt.figure(\"perf\", figsize=(6, 3))\n", + "plt.title(\"efficient frontier\")\n", + "plt.scatter(std_list * np.sqrt(nr_days), rdt_list * nr_days, s=10)\n", + "plt.plot(sigmarange * np.sqrt(nr_days), optimal_return * nr_days, \"r-\")\n", + "plt.xlabel(\"std\")\n", + "plt.ylabel(\"rdt\")\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eec4e675", + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unsupported operand type(s) for +: 'int' and 'NoneType'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mTypeError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 6\u001b[39m\n\u001b[32m 3\u001b[39m market_portf_allocation = \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m 5\u001b[39m plt.title(\u001b[33m\"\u001b[39m\u001b[33mmarket portf\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m \u001b[43mplt\u001b[49m\u001b[43m.\u001b[49m\u001b[43mbar\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mrange\u001b[39;49m\u001b[43m(\u001b[49m\u001b[32;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m1\u001b[39;49m\u001b[43m \u001b[49m\u001b[43m+\u001b[49m\u001b[43m \u001b[49m\u001b[43mnb\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmarket_portf_allocation\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[32m 7\u001b[39m plt.show()\n\u001b[32m 8\u001b[39m plt.close()\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/Workspace/studies/.venv/lib/python3.13/site-packages/matplotlib/pyplot.py:2979\u001b[39m, in \u001b[36mbar\u001b[39m\u001b[34m(x, height, width, bottom, align, data, **kwargs)\u001b[39m\n\u001b[32m 2968\u001b[39m \u001b[38;5;129m@_copy_docstring_and_deprecators\u001b[39m(Axes.bar)\n\u001b[32m 2969\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mbar\u001b[39m(\n\u001b[32m 2970\u001b[39m x: \u001b[38;5;28mfloat\u001b[39m | ArrayLike,\n\u001b[32m (...)\u001b[39m\u001b[32m 2977\u001b[39m **kwargs,\n\u001b[32m 2978\u001b[39m ) -> BarContainer:\n\u001b[32m-> \u001b[39m\u001b[32m2979\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mgca\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[43mbar\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 2980\u001b[39m \u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2981\u001b[39m \u001b[43m \u001b[49m\u001b[43mheight\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2982\u001b[39m \u001b[43m \u001b[49m\u001b[43mwidth\u001b[49m\u001b[43m=\u001b[49m\u001b[43mwidth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2983\u001b[39m \u001b[43m \u001b[49m\u001b[43mbottom\u001b[49m\u001b[43m=\u001b[49m\u001b[43mbottom\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2984\u001b[39m \u001b[43m \u001b[49m\u001b[43malign\u001b[49m\u001b[43m=\u001b[49m\u001b[43malign\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2985\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mdata\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m}\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2986\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2987\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/Workspace/studies/.venv/lib/python3.13/site-packages/matplotlib/__init__.py:1521\u001b[39m, in \u001b[36m_preprocess_data..inner\u001b[39m\u001b[34m(ax, data, *args, **kwargs)\u001b[39m\n\u001b[32m 1518\u001b[39m \u001b[38;5;129m@functools\u001b[39m.wraps(func)\n\u001b[32m 1519\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34minner\u001b[39m(ax, *args, data=\u001b[38;5;28;01mNone\u001b[39;00m, **kwargs):\n\u001b[32m 1520\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m data \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m1521\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 1522\u001b[39m \u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1523\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[38;5;28;43mmap\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcbook\u001b[49m\u001b[43m.\u001b[49m\u001b[43msanitize_sequence\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1524\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43m{\u001b[49m\u001b[43mk\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mcbook\u001b[49m\u001b[43m.\u001b[49m\u001b[43msanitize_sequence\u001b[49m\u001b[43m(\u001b[49m\u001b[43mv\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m.\u001b[49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1526\u001b[39m bound = new_sig.bind(ax, *args, **kwargs)\n\u001b[32m 1527\u001b[39m auto_label = (bound.arguments.get(label_namer)\n\u001b[32m 1528\u001b[39m \u001b[38;5;129;01mor\u001b[39;00m bound.kwargs.get(label_namer))\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/Workspace/studies/.venv/lib/python3.13/site-packages/matplotlib/axes/_axes.py:2646\u001b[39m, in \u001b[36mAxes.bar\u001b[39m\u001b[34m(self, x, height, width, bottom, align, **kwargs)\u001b[39m\n\u001b[32m 2643\u001b[39m args = \u001b[38;5;28mzip\u001b[39m(left, bottom, width, height, facecolor, edgecolor, linewidth,\n\u001b[32m 2644\u001b[39m hatch, patch_labels)\n\u001b[32m 2645\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m l, b, w, h, c, e, lw, htch, lbl \u001b[38;5;129;01min\u001b[39;00m args:\n\u001b[32m-> \u001b[39m\u001b[32m2646\u001b[39m r = \u001b[43mmpatches\u001b[49m\u001b[43m.\u001b[49m\u001b[43mRectangle\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 2647\u001b[39m \u001b[43m \u001b[49m\u001b[43mxy\u001b[49m\u001b[43m=\u001b[49m\u001b[43m(\u001b[49m\u001b[43ml\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mwidth\u001b[49m\u001b[43m=\u001b[49m\u001b[43mw\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheight\u001b[49m\u001b[43m=\u001b[49m\u001b[43mh\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2648\u001b[39m \u001b[43m \u001b[49m\u001b[43mfacecolor\u001b[49m\u001b[43m=\u001b[49m\u001b[43mc\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2649\u001b[39m \u001b[43m \u001b[49m\u001b[43medgecolor\u001b[49m\u001b[43m=\u001b[49m\u001b[43me\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2650\u001b[39m \u001b[43m \u001b[49m\u001b[43mlinewidth\u001b[49m\u001b[43m=\u001b[49m\u001b[43mlw\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2651\u001b[39m \u001b[43m \u001b[49m\u001b[43mlabel\u001b[49m\u001b[43m=\u001b[49m\u001b[43mlbl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2652\u001b[39m \u001b[43m \u001b[49m\u001b[43mhatch\u001b[49m\u001b[43m=\u001b[49m\u001b[43mhtch\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2653\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 2654\u001b[39m r._internal_update(kwargs)\n\u001b[32m 2655\u001b[39m r.get_path()._interpolation_steps = \u001b[32m100\u001b[39m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/Workspace/studies/.venv/lib/python3.13/site-packages/matplotlib/patches.py:786\u001b[39m, in \u001b[36mRectangle.__init__\u001b[39m\u001b[34m(self, xy, width, height, angle, rotation_point, **kwargs)\u001b[39m\n\u001b[32m 779\u001b[39m \u001b[38;5;66;03m# Required for RectangleSelector with axes aspect ratio != 1\u001b[39;00m\n\u001b[32m 780\u001b[39m \u001b[38;5;66;03m# The patch is defined in data coordinates and when changing the\u001b[39;00m\n\u001b[32m 781\u001b[39m \u001b[38;5;66;03m# selector with square modifier and not in data coordinates, we need\u001b[39;00m\n\u001b[32m 782\u001b[39m \u001b[38;5;66;03m# to correct for the aspect ratio difference between the data and\u001b[39;00m\n\u001b[32m 783\u001b[39m \u001b[38;5;66;03m# display coordinate systems. Its value is typically provide by\u001b[39;00m\n\u001b[32m 784\u001b[39m \u001b[38;5;66;03m# Axes._get_aspect_ratio()\u001b[39;00m\n\u001b[32m 785\u001b[39m \u001b[38;5;28mself\u001b[39m._aspect_ratio_correction = \u001b[32m1.0\u001b[39m\n\u001b[32m--> \u001b[39m\u001b[32m786\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_convert_units\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/Workspace/studies/.venv/lib/python3.13/site-packages/matplotlib/patches.py:797\u001b[39m, in \u001b[36mRectangle._convert_units\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 795\u001b[39m y0 = \u001b[38;5;28mself\u001b[39m.convert_yunits(\u001b[38;5;28mself\u001b[39m._y0)\n\u001b[32m 796\u001b[39m x1 = \u001b[38;5;28mself\u001b[39m.convert_xunits(\u001b[38;5;28mself\u001b[39m._x0 + \u001b[38;5;28mself\u001b[39m._width)\n\u001b[32m--> \u001b[39m\u001b[32m797\u001b[39m y1 = \u001b[38;5;28mself\u001b[39m.convert_yunits(\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_y0\u001b[49m\u001b[43m \u001b[49m\u001b[43m+\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_height\u001b[49m)\n\u001b[32m 798\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m x0, y0, x1, y1\n", + "\u001b[31mTypeError\u001b[39m: unsupported operand type(s) for +: 'int' and 'NoneType'" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGzCAYAAAAIWpzfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIddJREFUeJzt3Q2QVtV9P/AfLwLaZFFLAEWUauK7ggEhiNSYITLVmtg2DcVUCFWJCbEpNIkgChqNEKOWNqI0vkTbakEdzWQCg1EiTY00jKAdkwhWUSFW3owCxQgCz3/O+c9uWFiUZ2V3Obufz8wV7t17n3uePew+X8/bbVepVCoBAFCA9i1dAACAvSW4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AI22cOHCaNeuXTz00EPRlv3f//1fXHLJJdGzZ8/8/fi7v/u7li4StFodW7oAALVuu+22OOigg+KLX/xi7G/mzZsXixcvjmuuuWa3r91www1xzz33xNVXXx3HHHNMnHDCCS1SRmgL2nlWEfBBWlzOPvvsePDBB+Nzn/vcB369k08+Obp165Zfd3/z1a9+NWbOnBkN/cr8xCc+ER07downn3yyRcoGbYmuIqBq27Zti61bt0ZbsHnz5vc9Z+3atXHwwQc3S3mgrRNcoFCpyyKNp3jhhRfir//6r6Nr167xkY98JHdXpFaBVatWxWc/+9moqanJYy9uvvnmeten4DFlypTo379/vvYP/uAPYujQofHEE0/UO++VV17J97nppptixowZuSukc+fO8etf/7rBcm3ZsiX+9E//NL/mU089lY/t2LEjX3vSSSdFly5dokePHvGlL30p3nzzzbrr+vTpE7/61a/iP/7jP/L90vbJT35yj+9/53L9wz/8Qxx11FFx4IEHxllnnRW//OUvdzv/pz/9aX5/6X2mkJG+N88//3yD39P03i688MI45JBD4swzz8xdV6m1JaktW9pqx/i8/PLLMXfu3LrjqWxA0zDGBQo3YsSIPKZi+vTp+cPz+uuvj0MPPTT++Z//OT71qU/Fd77znbjvvvvi61//epx++unxx3/8x/m6jRs3xp133hkjR46MSy+9NDZt2hR33XVXDB8+PI/l6NevX737/OAHP4h33nknxo4dm4NLusdbb71V75zf/e53ORA8/fTT8fjjj+f7JSmkpDEgY8aMib/927/NH/S33nprPPPMM/Hzn/88DjjggBxsLr/88vjQhz4UkydPztelgPN+/uVf/iWXfdy4cbl8//iP/5jf93PPPVd3fSrLn/zJn8TRRx+dw0kq5/e+970YMmRILF26NIemnf3lX/5lfOxjH8tjV1IIPO200+J///d/47HHHot//dd/rTsvfd/T/vjx4+OII46Iv//7v8/HU4AEmkga4wKUZ+rUqWmwRWXs2LF1x7Zt21Y54ogjKu3atatMnz697vibb75ZOfDAAyujR4+ud+6WLVvqvWY6r0ePHpW/+Zu/qTv28ssv5/vU1NRU1q5dW+/8J554In/twQcfrGzatKly1llnVbp161Z55pln6s75z//8z3zOfffdV+/a+fPn73b8pJNOyq+xN2rLld7Xb37zm7rjv/jFL/Lx8ePH1x3r169fpXv37pU33nij7th///d/V9q3b18ZNWrUbt/TkSNH7na/cePG5a815Kijjqqcd955e1Vu4IPRVQSFS9Nwa3Xo0CEGDBiQWwkuvvjiuuOpa+S4446LFStW1Du3U6dOdV05v/3tb/PYlXR9aoXY1V/8xV/ssSVhw4YNcc4558SyZcty98nOrTVp4G7qNvr0pz8d69evr9tSF1VqXdm1a6paF1xwQfTq1atuf+DAgTFo0KA8Cyh5/fXX49lnn83dPamVqNapp56ay1R73s4uu+yyD1QmoOnoKoLCHXnkkfX2U0hI40jS7Jxdj7/xxhv1jt1777157EsKHO+++27d8T/6oz/a7T4NHauV1i1J3TSp6yeNY9nZ//zP/+Rg07179z0ObP0gUpfOro499th44IEH8t9fffXV/GcKbrtKXT2PPvpoHoCbxr7szXsFWpbgAoVLLSd7cyzZeSrvv/3bv+VWiNRi8Y1vfCMHi3TdtGnT4qWXXtrt2jTwdU/SuJbZs2fncTZpzEn79r9vzE2tOem10zibhuyP40He670CLUtwgTYqrXabBqs+/PDDeSZMralTp1b9Win8pK6iFIQ+/OEPx+233173tTQLKQ2OTQNh3y8Q7FyOvZVadHaVZlrVDrhNs42S5cuX73ZeamlKLVM7t7bsy7IB+54xLtBG1bbK7NwK84tf/CIWLVrUqNcbNWpU/NM//VPMmjUrrrjiirrjn//852P79u1x3XXX7XZNGlOz88ykFCB2nan0fn74wx/Ga6+9VrefZkSl95FmESWHHXZYHnOTusV2fu00ZfonP/lJnHvuuXt1n9pwU235gH1Liwu0UWmtldTa8md/9mdx3nnn5SnKKXSceOKJ+dk7jV1dNk2zTtOZ05iaK6+8Mq+rkqZDpy6oNEg2tcyk6c+ppSQN3E3Tl2tX3U0DdlNrTZrS/dGPfjR3MaWpze8lnZfWWvnyl7+c15BJ06r/8A//ML75zW/WnfPd7343B5nBgwfnQcu106FTGRtawr8hqWxJms6dpoyn4PdXf/VXjfo+AY0nuEAblbp1Vq9endd7SQNUU2BJ415SmPggS+6nsJIG49aGl7S+SgpE6YM/3St9PS2Pn7py0sJ5qQupVloQLw2mvfHGG/PaLCn0vF9wSS09aUxNCixpoG+aVZTWiEktLbWGDRsW8+fPz91g6R4pOKXXTmvc7O1A3D//8z/P68yksTzp+5RaqgQXaH6eVQQUKa1Om0JHak1Ji+sBbYMxLgBAMQQXAKAYggsA0HqDy89+9rM4//zz4/DDD8/rGqSpiO8nDfT7+Mc/nh/MlmYApIetAXwQaXBvGqJnfAu0LVUHl7Q0dt++fese8f5+0hTLNNXy7LPPzlMh09Lg6dkqaRYDAECzzSpKLS6PPPJIXjVzT9JCVHPnzs2LPdVKUwjTIk5peiIAwH6zjktahTOtobCztHhTannZk7SIVNpq1T65Ni0qZdltAChDahtJazKl4SU7P8Nsvw4uaYGrHj161DuW9tPqmmn1yoaeXZJW2Lz22mubumgAQDNYtWpVHHHEEa135dxJkybFhAkT6vbTKpxHHnlkfuM1NTUtWjYAYO+kRorevXvnh6/uK00eXHr27Blr1qypdyztpwCypyfFptlHadtVukZwAYCy7MthHk2+jkt6qNmCBQvqHXvsscfycQCAJg0u6amxaVpz2mqnO6e/r1y5sq6bJz30rNZll10WK1asyE9qXbZsWdx2223xwAMPxPjx46u9NQDQxlUdXJ5++uk47bTT8paksSjp7+mJq8nrr79eF2KS9BC0NB06tbKk9V9uvvnmuPPOO/PMIgCAVvd06DS4p2vXrnmQrjEuAFCGpvj89qwiAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgNYdXGbOnBl9+vSJLl26xKBBg2Lx4sXvef6MGTPiuOOOiwMPPDB69+4d48ePj3feeaexZQYA2qiqg8ucOXNiwoQJMXXq1Fi6dGn07ds3hg8fHmvXrm3w/Pvvvz8mTpyYz3/++efjrrvuyq9x5ZVX7ovyAwBtSNXB5ZZbbolLL700xowZEyeeeGLMmjUrDjrooLj77rsbPP+pp56KIUOGxIUXXphbac4555wYOXLk+7bSAAB8oOCydevWWLJkSQwbNuz3L9C+fd5ftGhRg9ecccYZ+ZraoLJixYqYN29enHvuuXu8z5YtW2Ljxo31NgCAjtWcvH79+ti+fXv06NGj3vG0v2zZsgavSS0t6bozzzwzKpVKbNu2LS677LL37CqaNm1aXHvttdUUDQBoA5p8VtHChQvjhhtuiNtuuy2PiXn44Ydj7ty5cd111+3xmkmTJsWGDRvqtlWrVjV1MQGA1tbi0q1bt+jQoUOsWbOm3vG037Nnzwavufrqq+Oiiy6KSy65JO+fcsopsXnz5hg7dmxMnjw5dzXtqnPnznkDAGh0i0unTp2if//+sWDBgrpjO3bsyPuDBw9u8Jq33357t3CSwk+Suo4AAJqkxSVJU6FHjx4dAwYMiIEDB+Y1WlILSppllIwaNSp69eqVx6kk559/fp6JdNppp+U1X1588cXcCpOO1wYYAIAmCS4jRoyIdevWxZQpU2L16tXRr1+/mD9/ft2A3ZUrV9ZrYbnqqquiXbt2+c/XXnstPvKRj+TQ8u1vf7vaWwMAbVy7SgH9NWk6dNeuXfNA3ZqampYuDgDQQp/fnlUEABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUIxGBZeZM2dGnz59okuXLjFo0KBYvHjxe57/1ltvxbhx4+Kwww6Lzp07x7HHHhvz5s1rbJkBgDaqY7UXzJkzJyZMmBCzZs3KoWXGjBkxfPjwWL58eXTv3n2387du3Rqf/vSn89ceeuih6NWrV7z66qtx8MEH76v3AAC0Ee0qlUqlmgtSWDn99NPj1ltvzfs7duyI3r17x+WXXx4TJ07c7fwUcL773e/GsmXL4oADDmhUITdu3Bhdu3aNDRs2RE1NTaNeAwBoXk3x+V1VV1FqPVmyZEkMGzbs9y/Qvn3eX7RoUYPX/OhHP4rBgwfnrqIePXrEySefHDfccENs3759j/fZsmVLfrM7bwAAVQWX9evX58CRAsjO0v7q1asbvGbFihW5iyhdl8a1XH311XHzzTfH9ddfv8f7TJs2LSe02i216AAANPmsotSVlMa3fP/734/+/fvHiBEjYvLkybkLaU8mTZqUm5Vqt1WrVjV1MQGA1jY4t1u3btGhQ4dYs2ZNveNpv2fPng1ek2YSpbEt6bpaJ5xwQm6hSV1PnTp12u2aNPMobQAAjW5xSSEjtZosWLCgXotK2k/jWBoyZMiQePHFF/N5tV544YUcaBoKLQAA+6yrKE2FvuOOO+Lee++N559/Pr785S/H5s2bY8yYMfnro0aNyl09tdLXf/vb38bXvva1HFjmzp2bB+emwboAAE26jksao7Ju3bqYMmVK7u7p169fzJ8/v27A7sqVK/NMo1ppYO2jjz4a48ePj1NPPTWv45JCzBVXXFHtrQGANq7qdVxagnVcAKA8Lb6OCwBASxJcAIBiCC4AQDEEFwCgGIILAFAMwQUAKIbgAgAUQ3ABAIohuAAAxRBcAIBiCC4AQDEEFwCgGIILAFAMwQUAKIbgAgAUQ3ABAIohuAAAxRBcAIBiCC4AQDEEFwCgGIILAFAMwQUAKIbgAgAUQ3ABAIohuAAAxRBcAIBiCC4AQDEEFwCgGIILAFAMwQUAKIbgAgAUQ3ABAIohuAAAxRBcAIBiCC4AQDEEFwCgGIILAFAMwQUAKIbgAgAUQ3ABAIohuAAAxRBcAIBiCC4AQDEEFwCgGIILAFAMwQUAKIbgAgAUQ3ABAIohuAAAxRBcAIBiCC4AQDEEFwCgGIILAFAMwQUAKIbgAgAUQ3ABAIohuAAAxRBcAIBiCC4AQDEEFwCgGIILAFAMwQUAKIbgAgC07uAyc+bM6NOnT3Tp0iUGDRoUixcv3qvrZs+eHe3atYsLLrigMbcFANq4qoPLnDlzYsKECTF16tRYunRp9O3bN4YPHx5r1659z+teeeWV+PrXvx5Dhw79IOUFANqwqoPLLbfcEpdeemmMGTMmTjzxxJg1a1YcdNBBcffdd+/xmu3bt8cXvvCFuPbaa+Poo49+33ts2bIlNm7cWG8DAKgquGzdujWWLFkSw4YN+/0LtG+f9xctWrTH6771rW9F9+7d4+KLL96r+0ybNi26du1at/Xu3buaYgIArVRVwWX9+vW59aRHjx71jqf91atXN3jNk08+GXfddVfccccde32fSZMmxYYNG+q2VatWVVNMAKCV6tiUL75p06a46KKLcmjp1q3bXl/XuXPnvAEANDq4pPDRoUOHWLNmTb3jab9nz567nf/SSy/lQbnnn39+3bEdO3b8/xt37BjLly+PY445ppoiAABtWFVdRZ06dYr+/fvHggUL6gWRtD948ODdzj/++OPjueeei2effbZu+8xnPhNnn312/ruxKwBAk3YVpanQo0ePjgEDBsTAgQNjxowZsXnz5jzLKBk1alT06tUrD7BN67ycfPLJ9a4/+OCD85+7HgcA2OfBZcSIEbFu3bqYMmVKHpDbr1+/mD9/ft2A3ZUrV+aZRgAA+1q7SqVSif1cWsclTYtOM4xqampaujgAQAt9fmsaAQCKIbgAAMUQXACAYgguAEAxBBcAoBiCCwBQDMEFACiG4AIAFENwAQCKIbgAAMUQXACAYgguAEAxBBcAoBiCCwBQDMEFACiG4AIAFENwAQCKIbgAAMUQXACAYgguAEAxBBcAoBiCCwBQDMEFACiG4AIAFENwAQCKIbgAAMUQXACAYgguAEAxBBcAoBiCCwBQDMEFACiG4AIAFENwAQCKIbgAAMUQXACAYgguAEAxBBcAoBiCCwBQDMEFACiG4AIAFENwAQCKIbgAAMUQXACAYgguAEAxBBcAoBiCCwBQDMEFACiG4AIAFENwAQCKIbgAAMUQXACAYgguAEAxBBcAoBiCCwBQDMEFACiG4AIAFENwAQCKIbgAAMUQXACAYgguAEAxBBcAoBiCCwBQDMEFAGjdwWXmzJnRp0+f6NKlSwwaNCgWL168x3PvuOOOGDp0aBxyyCF5GzZs2HueDwCwz4LLnDlzYsKECTF16tRYunRp9O3bN4YPHx5r165t8PyFCxfGyJEj44knnohFixZF796945xzzonXXnut2lsDAG1cu0qlUqnmgtTCcvrpp8ett96a93fs2JHDyOWXXx4TJ0583+u3b9+eW17S9aNGjWrwnC1btuSt1saNG/M9NmzYEDU1NdUUFwBoIenzu2vXrvv087uqFpetW7fGkiVLcndP3Qu0b5/3U2vK3nj77bfj3XffjUMPPXSP50ybNi2/0dothRYAgKqCy/r163OLSY8ePeodT/urV6/eq9e44oor4vDDD68XfnY1adKknM5qt1WrVlVTTACglerYnDebPn16zJ49O497SQN796Rz5855AwBodHDp1q1bdOjQIdasWVPveNrv2bPne15700035eDy+OOPx6mnnlrNbQEAqu8q6tSpU/Tv3z8WLFhQdywNzk37gwcP3uN1N954Y1x33XUxf/78GDBgQDW3BABofFdRmgo9evToHEAGDhwYM2bMiM2bN8eYMWPy19NMoV69euUBtsl3vvOdmDJlStx///157ZfasTAf+tCH8gYA0GTBZcSIEbFu3bocRlII6devX25JqR2wu3LlyjzTqNbtt9+eZyN97nOfq/c6aR2Ya665ptrbAwBtWNXruLSWeeAAQCtfxwUAoCUJLgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACABRDcAEAiiG4AADFEFwAgGIILgBAMQQXAKAYggsAUAzBBQAohuACALTu4DJz5szo06dPdOnSJQYNGhSLFy9+z/MffPDBOP744/P5p5xySsybN6+x5QUA2rCqg8ucOXNiwoQJMXXq1Fi6dGn07ds3hg8fHmvXrm3w/KeeeipGjhwZF198cTzzzDNxwQUX5O2Xv/zlvig/ANCGtKtUKpVqLkgtLKeffnrceuuteX/Hjh3Ru3fvuPzyy2PixIm7nT9ixIjYvHlz/PjHP6479olPfCL69esXs2bN2qt7bty4Mbp27RobNmyImpqaaooLALSQpvj87ljNyVu3bo0lS5bEpEmT6o61b98+hg0bFosWLWrwmnQ8tdDsLLXQ/PCHP9zjfbZs2ZK3WukN134DAIAy1H5uV9lGsu+Cy/r162P79u3Ro0ePesfT/rJlyxq8ZvXq1Q2en47vybRp0+Laa6/d7Xhq2QEAyvLGG2/klpdmDy7NJbXo7NxK89Zbb8VRRx0VK1eu3GdvnMan5xQgV61apduuhamL/Ye62L+oj/1H6jE58sgj49BDD91nr1lVcOnWrVt06NAh1qxZU+942u/Zs2eD16Tj1ZyfdO7cOW+7SqHFP8L9Q6oHdbF/UBf7D3Wxf1Ef+480rGSfvVY1J3fq1Cn69+8fCxYsqDuWBuem/cGDBzd4TTq+8/nJY489tsfzAQD2WVdR6sIZPXp0DBgwIAYOHBgzZszIs4bGjBmTvz5q1Kjo1atXHqeSfO1rX4uzzjorbr755jjvvPNi9uzZ8fTTT8f3v//9am8NALRxVQeXNL153bp1MWXKlDzANk1rnj9/ft0A3DQOZecmoTPOOCPuv//+uOqqq+LKK6+Mj33sY3lG0cknn7zX90zdRmndmIa6j2he6mL/oS72H+pi/6I+WnddVL2OCwBAS/GsIgCgGIILAFAMwQUAKIbgAgAUQ3ABAIqx3wSXmTNnRp8+faJLly75CdSLFy9+z/MffPDBOP744/P5p5xySsybN6/ZytraVVMXd9xxRwwdOjQOOeSQvKUHbr5f3dF0Pxe10npJ7dq1iwsuuKDJy9hWVFsX6VEl48aNi8MOOyxPBT322GP9nmqhukjrjR133HFx4IEH5kcBjB8/Pt55551mK29r9bOf/SzOP//8OPzww/Pvm/d6eHKthQsXxsc//vH8M/HRj3407rnnnupvXNkPzJ49u9KpU6fK3XffXfnVr35VufTSSysHH3xwZc2aNQ2e//Of/7zSoUOHyo033lj59a9/XbnqqqsqBxxwQOW5555r9rK3NtXWxYUXXliZOXNm5Zlnnqk8//zzlS9+8YuVrl27Vn7zm980e9nbel3Uevnllyu9evWqDB06tPLZz3622crbmlVbF1u2bKkMGDCgcu6551aefPLJXCcLFy6sPPvss81e9rZeF/fdd1+lc+fO+c9UD48++mjlsMMOq4wfP77Zy97azJs3rzJ58uTKww8/nJZVqTzyyCPvef6KFSsqBx10UGXChAn5s/t73/te/iyfP39+VffdL4LLwIEDK+PGjavb3759e+Xwww+vTJs2rcHzP//5z1fOO++8escGDRpU+dKXvtTkZW3tqq2LXW3btq3y4Q9/uHLvvfc2YSnbhsbURfr+n3HGGZU777yzMnr0aMGlheri9ttvrxx99NGVrVu3NmMp24Zq6yKd+6lPfaresfTBOWTIkCYva1sSexFcvvnNb1ZOOumkesdGjBhRGT58eFX3avGuoq1bt8aSJUtyF0OttPJu2l+0aFGD16TjO5+fDB8+fI/n03R1sau333473n333X36JNC2qLF18a1vfSu6d+8eF198cTOVtPVrTF386Ec/ys9jS11FaVXxtFL4DTfcENu3b2/Gkrc+jamLtHp7uqa2O2nFihW5y+7cc89ttnKzbz+7q17yf19bv359/mGufWRArbS/bNmyBq9Jjxpo6Px0nOati11dccUVub9z13+cNH1dPPnkk3HXXXfFs88+20ylbBsaUxfpw/GnP/1pfOELX8gfki+++GJ85StfyaE+LX9O89XFhRdemK8788wzUw9DbNu2LS677LL8CBqa154+uzdu3Bi/+93v8hikvdHiLS60HtOnT8+DQh955JE8aI7ms2nTprjooovyYOlu3bq1dHHavB07duSWr/Qw2f79++dnvE2ePDlmzZrV0kVrc9Jg0NTaddttt8XSpUvj4Ycfjrlz58Z1113X0kWjkVq8xSX9ku3QoUOsWbOm3vG037NnzwavScerOZ+mq4taN910Uw4ujz/+eJx66qlNXNLWr9q6eOmll+KVV17JI/x3/vBMOnbsGMuXL49jjjmmGUre+jTm5yLNJDrggAPydbVOOOGE/H+cqbujU6dOTV7u1qgxdXH11VfnUH/JJZfk/TQLdfPmzTF27NgcJnd+KDBNa0+f3TU1NXvd2pK0eI2lH+D0fyQLFiyo9ws37ac+4oak4zufnzz22GN7PJ+mq4vkxhtvzP/3kp4SPmDAgGYqbetWbV2kpQGee+653E1Uu33mM5+Js88+O/89TQGl+X4uhgwZkruHasNj8sILL+RAI7Q0b12kcXe7hpPaQOkZw81rn312V/aT6W1puto999yTp0iNHTs2T29bvXp1/vpFF11UmThxYr3p0B07dqzcdNNNeQru1KlTTYduobqYPn16npr40EMPVV5//fW6bdOmTS34LtpmXezKrKKWq4uVK1fm2XVf/epXK8uXL6/8+Mc/rnTv3r1y/fXXt+C7aJt1kT4fUl38+7//e56O+5Of/KRyzDHH5NmpfDDp93xaCiNtKU7ccsst+e+vvvpq/nqqh1Qfu06H/sY3vpE/u9NSGsVOh07SfO4jjzwyfwim6W7/9V//Vfe1s846K/8S3tkDDzxQOfbYY/P5aXrV3LlzW6DUrVM1dXHUUUflf7C7bumXBc3/c7EzwaVl6+Kpp57KyzSkD9k0Nfrb3/52nq5O89bFu+++W7nmmmtyWOnSpUuld+/ela985SuVN998s4VK33o88cQTDf7+r/3+pz9Tfex6Tb9+/XLdpZ+LH/zgB1Xft136z75tDAIAaBotPsYFAGBvCS4AQDEEFwCgGIILAFAMwQUAKIbgAgAUQ3ABAIohuAAAxRBcAIBiCC4AQDEEFwAgSvH/AACNY3xzkUOQAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot market portfolio\n", + "r_rate = 0.0 # attention to convert to daily (not annualize!) if not zero !!!\n", + "market_portf_allocation = None\n", + "\n", + "plt.title(\"market portf\")\n", + "plt.bar(list(range(1, 1 + nb)), market_portf_allocation)\n", + "plt.show()\n", + "plt.close()\n", + "np.sum(np.abs(market_portf_allocation)) * 100\n", + "\n", + "# test on data obtained from T-6Y,T-1Y the rdv/vol on T-1Y,T\n", + "# and compare with market portfolio on T-1,T. T=last known date\n", + "\n", + "# calcul of mean_returns and inverse_cov between T-6Y and T-1Y, 1Y=255 days\n", + "ti = -6 * 255\n", + "tf = -255\n", + "hist_mean_returns = returns_small.iloc[ti:tf, :].mean()\n", + "hist_cov_matrix = returns_small.iloc[ti:tf, :].cov()\n", + "hist_inverse_cov = np.linalg.inv(hist_cov_matrix)\n", + "hist_market_portf_allocation = None\n", + "\n", + "plt.title(\"estimated market portf\")\n", + "plt.bar(list(range(1, 1 + nb)), hist_market_portf_allocation)\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# compute performance during T-1Y,T\n", + "c_mean_returns = None\n", + "c_cov_matrix = None\n", + "c_inverse_cov = np.linalg.inv(c_cov_matrix)\n", + "\n", + "rdt_backtest = None\n", + "std_backtest = None\n", + "\n", + "np.sqrt(hist_market_portf_allocation @ c_inverse_cov @ hist_market_portf_allocation)\n", + "\n", + "print(\n", + " f\"Annualized rdt_backtest: {rdt_backtest * (nr_days) * 100:.2f}%, std_backtest:{std_backtest * np.sqrt(nr_days):.2f}%\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1ea8bde1", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'c_mean_returns' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[10]\u001b[39m\u001b[32m, line 8\u001b[39m\n\u001b[32m 5\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m ii \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(nr_tests):\n\u001b[32m 6\u001b[39m \u001b[38;5;66;03m# sample at random some \"allocation\"\u001b[39;00m\n\u001b[32m 7\u001b[39m allocation = np.random.dirichlet(np.ones(nb))\n\u001b[32m----> \u001b[39m\u001b[32m8\u001b[39m c_rdt_list[ii] = allocation @ \u001b[43mc_mean_returns\u001b[49m \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[32m 9\u001b[39m c_std_list[ii] = np.sqrt(allocation @ c_cov_matrix @ allocation) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[32m 11\u001b[39m \u001b[38;5;66;03m# reduce to target volatility (the mean of random ones)\u001b[39;00m\n", + "\u001b[31mNameError\u001b[39m: name 'c_mean_returns' is not defined" + ] + } + ], + "source": [ + "nr_tests = 500\n", + "c_rdt_list = np.zeros((nr_tests,))\n", + "c_std_list = np.zeros((nr_tests,))\n", + "\n", + "for ii in range(nr_tests):\n", + " # sample at random some \"allocation\"\n", + " allocation = np.random.dirichlet(np.ones(nb))\n", + " c_rdt_list[ii] = allocation @ c_mean_returns \n", + " c_std_list[ii] = np.sqrt(allocation @ c_cov_matrix @ allocation) \n", + "\n", + "# reduce to target volatility (the mean of random ones)\n", + "target_vol = np.mean(std_list * np.sqrt(nr_days))\n", + "\n", + "reduction_factor = target_vol / np.sqrt(nr_days) / std_backtest\n", + "reduced_hist_allocation = reduction_factor * hist_market_portf_allocation\n", + "reduced_rdt_backtest = reduced_hist_allocation @ c_mean_returns\n", + "reduced_std_backtest = np.sqrt(\n", + " reduced_hist_allocation @ c_inverse_cov @ reduced_hist_allocation\n", + ")\n", + "\n", + "fig = plt.figure(\"perf last backtest\")\n", + "plt.scatter(c_std_list * np.sqrt(nr_days), c_rdt_list * nr_days, s=10, label=\"random\")\n", + "plt.scatter(\n", + " reduced_std_backtest * np.sqrt(nr_days),\n", + " reduced_rdt_backtest * nr_days,\n", + " marker=\"*\",\n", + " label=\"backtest\",\n", + ")\n", + "plt.xlabel(\"std\")\n", + "plt.ylabel(\"rdt\")\n", + "plt.legend()\n", + "plt.show()\n", + "plt.close()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "64f8a505", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "studies", + "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.13.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}