Files
ArtStudies/M2/Machine Learning/TP_2/2025_TP_2_M2_ISF.ipynb

7010 lines
321 KiB
Plaintext

{
"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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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": [
"<style>#sk-container-id-1 {\n",
" /* Definition of color scheme common for light and dark mode */\n",
" --sklearn-color-text: #000;\n",
" --sklearn-color-text-muted: #666;\n",
" --sklearn-color-line: gray;\n",
" /* Definition of color scheme for unfitted estimators */\n",
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
" --sklearn-color-unfitted-level-3: chocolate;\n",
" /* Definition of color scheme for fitted estimators */\n",
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
" --sklearn-color-fitted-level-1: #d4ebff;\n",
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
"\n",
" /* Specific color for light theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-icon: #696969;\n",
"\n",
" @media (prefers-color-scheme: dark) {\n",
" /* Redefinition of color scheme for dark theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-icon: #878787;\n",
" }\n",
"}\n",
"\n",
"#sk-container-id-1 {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"#sk-container-id-1 pre {\n",
" padding: 0;\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-hidden--visually {\n",
" border: 0;\n",
" clip: rect(1px 1px 1px 1px);\n",
" clip: rect(1px, 1px, 1px, 1px);\n",
" height: 1px;\n",
" margin: -1px;\n",
" overflow: hidden;\n",
" padding: 0;\n",
" position: absolute;\n",
" width: 1px;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-dashed-wrapped {\n",
" border: 1px dashed var(--sklearn-color-line);\n",
" margin: 0 0.4em 0.5em 0.4em;\n",
" box-sizing: border-box;\n",
" padding-bottom: 0.4em;\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-container {\n",
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
" so we also need the `!important` here to be able to override the\n",
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
" display: inline-block !important;\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-text-repr-fallback {\n",
" display: none;\n",
"}\n",
"\n",
"div.sk-parallel-item,\n",
"div.sk-serial,\n",
"div.sk-item {\n",
" /* draw centered vertical line to link estimators */\n",
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
" background-size: 2px 100%;\n",
" background-repeat: no-repeat;\n",
" background-position: center center;\n",
"}\n",
"\n",
"/* Parallel-specific style estimator block */\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item::after {\n",
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel {\n",
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item {\n",
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
"#sk-container-id-1 div.sk-serial {\n",
" display: flex;\n",
" flex-direction: column;\n",
" align-items: center;\n",
" background-color: var(--sklearn-color-background);\n",
" padding-right: 1em;\n",
" padding-left: 1em;\n",
"}\n",
"\n",
"\n",
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
"clickable and can be expanded/collapsed.\n",
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
"*/\n",
"\n",
"/* Pipeline and ColumnTransformer style (default) */\n",
"\n",
"#sk-container-id-1 div.sk-toggleable {\n",
" /* Default theme specific background. It is overwritten whether we have a\n",
" specific estimator or a Pipeline/ColumnTransformer */\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"/* Toggleable label */\n",
"#sk-container-id-1 label.sk-toggleable__label {\n",
" cursor: pointer;\n",
" display: flex;\n",
" width: 100%;\n",
" margin-bottom: 0;\n",
" padding: 0.5em;\n",
" box-sizing: border-box;\n",
" text-align: center;\n",
" align-items: start;\n",
" justify-content: space-between;\n",
" gap: 0.5em;\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label .caption {\n",
" font-size: 0.6rem;\n",
" font-weight: lighter;\n",
" color: var(--sklearn-color-text-muted);\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
" /* Arrow on the left of the label */\n",
" content: \"▸\";\n",
" float: left;\n",
" margin-right: 0.25em;\n",
" color: var(--sklearn-color-icon);\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content {\n",
" max-height: 0;\n",
" max-width: 0;\n",
" overflow: hidden;\n",
" text-align: left;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content pre {\n",
" margin: 0.2em;\n",
" border-radius: 0.25em;\n",
" color: var(--sklearn-color-text);\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
" /* Expand drop-down */\n",
" max-height: 200px;\n",
" max-width: 100%;\n",
" overflow: auto;\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
"#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
"#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-1 div.sk-label label {\n",
" /* The background is the default theme color */\n",
" color: var(--sklearn-color-text-on-default-background);\n",
"}\n",
"\n",
"/* On hover, darken the color of the background */\n",
"#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"/* Label box, darken color on hover, fitted */\n",
"#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
"#sk-container-id-1 div.sk-label label {\n",
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label-container {\n",
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
"#sk-container-id-1 div.sk-estimator {\n",
" font-family: monospace;\n",
" border: 1px dotted var(--sklearn-color-border-box);\n",
" border-radius: 0.25em;\n",
" box-sizing: border-box;\n",
" margin-bottom: 0.5em;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
"#sk-container-id-1 div.sk-estimator:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
"\n",
"/* Common style for \"i\" and \"?\" */\n",
"\n",
".sk-estimator-doc-link,\n",
"a:link.sk-estimator-doc-link,\n",
"a:visited.sk-estimator-doc-link {\n",
" float: right;\n",
" font-size: smaller;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1em;\n",
" height: 1em;\n",
" width: 1em;\n",
" text-decoration: none !important;\n",
" margin-left: 0.5em;\n",
" text-align: center;\n",
" /* unfitted */\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted,\n",
"a:link.sk-estimator-doc-link.fitted,\n",
"a:visited.sk-estimator-doc-link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"/* Span, style for the box shown on hovering the info icon */\n",
".sk-estimator-doc-link span {\n",
" display: none;\n",
" z-index: 9999;\n",
" position: relative;\n",
" font-weight: normal;\n",
" right: .2ex;\n",
" padding: .5ex;\n",
" margin: .5ex;\n",
" width: min-content;\n",
" min-width: 20ex;\n",
" max-width: 50ex;\n",
" color: var(--sklearn-color-text);\n",
" box-shadow: 2pt 2pt 4pt #999;\n",
" /* unfitted */\n",
" background: var(--sklearn-color-unfitted-level-0);\n",
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted span {\n",
" /* fitted */\n",
" background: var(--sklearn-color-fitted-level-0);\n",
" border: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link:hover span {\n",
" display: block;\n",
"}\n",
"\n",
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link {\n",
" float: right;\n",
" font-size: 1rem;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1rem;\n",
" height: 1rem;\n",
" width: 1rem;\n",
" text-decoration: none;\n",
" /* unfitted */\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
"}\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"#sk-container-id-1 a.estimator_doc_link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KMeans(init=array([[ 1],\n",
" [ 2],\n",
" [18]]), n_clusters=3, n_init=1)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>KMeans</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.cluster.KMeans.html\">?<span>Documentation for KMeans</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>KMeans(init=array([[ 1],\n",
" [ 2],\n",
" [18]]), n_clusters=3, n_init=1)</pre></div> </div></div></div></div>"
],
"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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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": "iVBORw0KGgoAAAANSUhEUgAAAhkAAAGhCAYAAADMa6YOAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAHLlJREFUeJzt3QmQXFX5N+C3eybJhGQGAnzsyh4hCBIEJFUCAWWxFEWQQgQEAZEdQUB2UuwiAQRZi01kF9wQSpayrL9YikQWBQQCRASV3clkmUwy0/3VuTLJJCSYCTl0z/TzVE11c5NMH94+fe/vnnPu7VK1Wq0GAMBSVl7avxAAIBEyAIAshAwAIAshAwDIQsgAALIQMgCALIQMACALIQMAyKI5aizdC6xSqY/7gZXLpbppS71Rm0VTm0VTm0VTm4VTl4FRm9SWUqlU/yEjFeydd2bUuhnR3FyOUaNGREfHzOjurtS6OXVFbRZNbRZNbRZNbRZOXQZObZZffkQ0Nf3vkGG6BADIQsgAALIQMgCALIQMACALIQMAyELIAACyEDIAgCyEDAAgCyEDAMhCyAAAshAyAIAs+v3dJa+//npss80279l+3nnnxW677ba02gUANFrIePbZZ2PYsGHx0EMPzfcNbK2trUu7bQBAI4WM559/PtZaa61YaaWV8rQIAGjMkPHcc8/FuuuuG4NNtVqNWV3d0TW7py6+Rree9FTUpha1GTqkPN9oIUBDjGSMGjUq9t5775gyZUqsueaaceihhy50ncZiN6K5XPOAcfZNf47Jr7TXtB3Q1/prLBun7rf5gA0aTU3l+R6ZR20WTl0GX236FTK6u7vjpZdeivXWWy9OPPHEGDlyZNx7771x8MEHxw033BDjxo3rdwPK5VKMGjUiaimdiQoY1JvJr06NZUa0RMuwfp8L1JW2tuG1bkLdUpuFU5fBU5t+7b2am5vjkUceiaampmhpaSm2ffzjH4/JkyfHddddt0Qho1KpRkfHzKilNNTd64rjto0h5YGVFHMrN5WirXV4dEzrjEpPtdbNGfS16ZrTE0dc/H/F8/b2mTFsaFMMROmMK+0QOzo6o6fHNFtfarNw6jJwapPasjijKv0+RRox4r2jDuuvv348/PDDsaRqPc/f9/VTwGgqD8zh6Vyam8rF2XTnzHJ0V2vfuQd7bZr6TI+kvjnQ+2PaIdb6M16v1Gbh1GXw1KZfp+xpxGKzzTYrRjP6euqpp4opFACAJQoZ6aqSddZZJ84888yYNGlSvPjii8VNuJ544oli8ScAwBJNl5TL5bjqqqti4sSJ8e1vfzs6OjpizJgxxaLP0aNH9+dXAQCDXL/XZKy44orF6AUAwPtxGQUAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAA9RUypkyZEmPHjo2f/vSnS7dFAEDjhow5c+bEcccdFzNnzlz6LQIABoXmJflHl112WYwcOXLpt4a6VK1WY1ZXd3TN7onu7kqtm1NXeipLvzZdc3oW+nygyVGb3IYOKUepVKp1M6BxQ8ajjz4ad9xxR/z85z+P8ePHL51GNJdrvjPsVW4qRXOTpSp9A8bZN/05Jr/SXuumNKRvX/ZwrZvQUNZfY9k4db/NsweNpnf3Mb2P/Je6DL7a9CtkdHR0xAknnBCnnnpqrLrqqkulAeVyKUaNGhG1lM62erW1Do+WYUs0wDMopdoIGDSKya9OjWVGtHxo+4C2tuEfyusMNOoyeGrTr0/ShAkTisWeu+yyy1JrQKVSjY6O2q7tSMO5vTqmdUbnzIGVFD+s2lxx3LYxpKw2faWRrxRMU7+p9MwbEWNg1SZNSx1x8f8Vz9vbZ8awoU1ZXy+djaaDRUdHZ/T0DIyppA+Dugyc2qS2LM6oymKHjDQ9MmnSpLjnnntiaav1fG3f1087w+5q7d/AetG3NilgNJXNV/eVptbSWW8KpvrNwK1NU5/pkdTnP6x+ng4Wtd7/1SN1GTy1WeyQcffdd8fbb7/9nnUYZ5xxRtx3331x7bXX5mgfADBALXbIuPDCC2PWrFnzbdtxxx3jqKOOii9+8Ys52gYANELIWHnllRe6fYUVVljknwEAjcsqPgAgiw90ndZzzz239FoCAAwqRjIAgCyEDAAgCyEDAMhCyAAAshAyAIAshAwAIAshAwDIQsgAALIQMgCALIQMACALIQMAyELIAACyEDIAgCyEDAAgCyEDAMhCyAAAshAyAIAshAwAIAshAwDIQsgAALIQMgCALIQMACALIQMAyELIAACyEDIAgCyEDAAgCyEDAMhCyAAAshAyAIAshAwAIAshAwDIQsgAALIQMgCALIQMACALIQMAyELIAACyEDIAgCyEDAAgCyEDAMhCyAAAshAyAIAshAwAIAshAwDIQsgAALIQMgCALIQMACALIQMAyELIAACyEDIAgCyEDAAgCyEDAMhCyAAAshAyAIAshAwAIAshAwDIQsgAALIQMgCALIQMAKA+Qsbbb78dxx9/fGy11VYxduzYOPjgg+PFF1/M0zoAoHFCxuGHHx4vv/xyXHPNNXHXXXdFS0tL7L///tHZ2ZmnhQDA4A8ZU6dOjdVXXz3OPvvs2GSTTWLdddeNww47LN54442YPHlyvlYCAANOc3/+8rLLLhsTJ06c+9/vvPNO3HjjjbHKKqvEeuutl6N9wGKqVqsR3bOjXlSr5ajMborqnK6odleinlW7e/o874pqqSnr61UqpeiePicqMzujUue16Y/SkGGDr880D41SqVTrVjRGyOjrtNNOizvvvDOGDh0aV155ZSyzzDJL3ojm2q4/7alU5z4vN5Wiucl62F5q8/6a3q1H72MtA8a0n50TPa/V14hiewwMXdW0K/xa8Xz6j4+KOaXu7K85NfsrDEz11meaVlk/Wr98as2DRlOd7Gs+tJCx3377xZ577hm33HJLsU7j1ltvjY022qjfv6dcLsWoUSOilmZ1zduhtLUOj5ZhS1yWQUdtFk9b2/Cavn5l9qxor7OAMZAMK3XHD5a/qdbNoA6l4L7cyOYoD22JetBW431Nfy3xEaN3euScc86JJ598Mm6++eY477zz+v17KpVqdHTMjFrqmj1vqLRjWmd0zhxYSTEntXl/6awifeg7Ojqjp6d2w7tpeLnXsvv/8AMPWy8NTU2laG0dHtOmpdrMGxFrdOm9mnrjEcXzUV+/KCrloTFYfNB+V099pu/71N4+M0pD5u0LG3lf0yu1ZXFGVfoVMtIajD/84Q+x0047RXPzf/9puVwuAkda/Lmkums899b39Ss91eiu1v4NrBdqs3jSh76W/bjv/HVPaUiUSkOi1krlcnH2Vyn3RE9Fv+lVLc2rRXVYa1Tq4L2qF/XUZ/q+T+mzXerz3428r+mvfp2WvvXWW3HssccWQaPXnDlz4plnnimuNAEAWKKQMXr06Nhmm22KS1gfffTReP755+PEE0+Mjo6O4l4ZAAC9+j3BftFFF8W4cePimGOOiT322CPa29uLxZ+rrbZaf38VADCI9XvhZ2tra0yYMKH4AQBYFJcKAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAfYSM9vb2OP3002ObbbaJzTbbLPbaa6+YNGlSntYBAI0TMo499th4/PHH46KLLoq77747NtxwwzjwwAPjpZdeytNCAGDwh4yXX345fv/738eECRNi8803j7XXXjtOO+20WGmlleKee+7J10oAYMBp7s9fHjVqVFxzzTWx8cYbz91WKpWKn46OjhztA6BBVKvVqMyeFdU5XVHtrtS2LXO6Fvq8VqrVclSry8SgDhltbW2x7bbbzrft/vvvL0Y4Tj755CVvRHNt15/2VKpzn5ebStHcZD1sL7V5f03v1qP3sZY7oL6fp1KNP1P1VJt60/e9amoqRamsPr0BY/rPz472f0+OejPj5qOiHnSusUGM3PWUmh8zs4WMBT322GNx0kknxY477hjjx49fot9RLpdi1KgRUUuzurrnPm9rHR4twz5QWQYVtVk8bW3Da/r6ldlN0f7u8+WWWybKQ1uiXtS6NvWm73vV2jq8rt6rWkojGPUYMOpJ16vPxqrDywOqzyzxEeOhhx6K4447rrjC5MILL1ziBlQq1ejomBm11DW7Z+7zjmmd0Tlz4KTE3NTm/aWz9HQQ7ejojJ6e2g3v9h3ObW+fGaUh8963Rq9Nven7Xk2b1hmVcu3fq3qry/IHXh6V8tCatqfeajP1xiPqqs+kz/bijFIuUci4+eab45xzzomdd945vve978XQoR+sM3TXeO6t7+tXeqrRXbVD7KU2iycdRGvZj/vOX6d2lEr18z7Vujb1pu971dNTjZ6K2ixYlxQwekpDatqeelItDdw+0+/T0ltvvTXOOuus2HvvvYvLWD9owAAABqd+jWRMmTIlzj333Nhhhx3iW9/6Vrz11ltz/6ylpSVaW1tztBEAGOwhI11JMmfOnHjwwQeLn76+/OUvx/nnn7+02wcANELIOOSQQ4ofAID/xaUCAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABANRfyLj66qtj3333XXqtAQAGjSUOGbfccktccsklS7c1AMCg0dzff/D666/HGWecEY888kistdZaeVoFA0S1Wo3K7FlRndMV1e5K7doxp2uhz2upWi1HtbpMrZsBDKSQ8fTTT8eQIUPil7/8ZVx++eXxz3/+84M3orm2S0N6KtW5z8tNpWhuslSll9q8f8CY/vOzo/3fk6OezLj5qKgXnWtsECN3PaXmn/F6ksJXr6amUpTKapOoy+CsTb9Dxvbbb1/8LC3lcilGjRoRtTSrq3vu87bW4dEyrN9lGbTUZtHSCEa9BYx60/Xqs7Hq8HKUh7bUuil1ozK7Kdrffd7aOlxt3qUug7M2NT9iVCrV6OiYWdM2dM3umfu8Y1pndM4cOCkxN7VZtL7TEssfeHlUykNr2p56q83UG48onk+b1hmV8rx+1Oj69hu1mUddBlZt2tqGR9NijGzXPGQk3TWcy17w9Ss91eiu1rY99URtFq3vGowUMHpKQ2rannpSLc2rTU9PNXoq+s3C+o3azKMug7M2TksBgCyEDAAgCyEDAMhCyAAAsvhACz/PP//8pdcSAGBQMZIBAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQBZCBgCQhZABAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAAD1ETIqlUpceumlsfXWW8emm24a3/zmN+OVV17J0zoAoHFCxhVXXBG33nprnHXWWXH77bcXoeOggw6K2bNn52khADD4Q0YKEtdff30cddRRMX78+Nhggw3i4osvjtdeey0eeOCBfK0EAAZ3yHj22WdjxowZMW7cuLnb2traYsyYMfHoo4/maB8AMECVqtVqdXH/chqtOPLII+PJJ5+MlpaWuduPPvromDVrVlx99dX9bkB6+UplsZuQRarAW1M7i+f/b7nhNW1LvVGb91ONSsdbxbOmthWjGqVaN6iOqM2iqc3CqctAqk25XIpS6X+3o7k/v7Sz878Hm6FDh863fdiwYTF16tRYEqmRTU21L9gqK4yodRPqltosWtOolWvdhLqlNoumNgunLoOvNv2aLukdvVhwkWdXV1cMH+4sFwBYwpCx6qqrFo9vvPHGfNvTf6+88sBMWQBAHYSMdDXJyJEj45FHHpm7raOjI5555pnYYostcrQPABig+rUmI63F2GeffeLCCy+M5ZdfPlZfffX4/ve/H6usskrsuOOO+VoJAAzukJGke2R0d3fHqaeeWlxRkkYwrrvuuhgyZEieFgIAg/8SVgCAxeUL0gCALIQMACALIQMAyELIAACyEDIAgCyEDAAgCyEDAMiioUPGa6+9Fptvvvl8t0lPJk2aFF/72tdis802i/Hjx8fZZ58d06dPj0ayqNr89re/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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ZONE_RISQUE</th>\n",
" <th>NB</th>\n",
" <th>CHARGE</th>\n",
" <th>EXPO</th>\n",
" <th>FREQ</th>\n",
" <th>CM</th>\n",
" <th>FREQxCHARGE</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>A</td>\n",
" <td>236</td>\n",
" <td>1174911.57</td>\n",
" <td>9.864309e+05</td>\n",
" <td>0.000239</td>\n",
" <td>4978.438856</td>\n",
" <td>281.093316</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>B</td>\n",
" <td>181</td>\n",
" <td>1146823.23</td>\n",
" <td>9.092434e+05</td>\n",
" <td>0.000199</td>\n",
" <td>6336.039945</td>\n",
" <td>228.294222</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>C</td>\n",
" <td>284</td>\n",
" <td>1926300.00</td>\n",
" <td>1.356655e+06</td>\n",
" <td>0.000209</td>\n",
" <td>6782.746479</td>\n",
" <td>403.248718</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>D</td>\n",
" <td>83</td>\n",
" <td>455800.64</td>\n",
" <td>3.147680e+05</td>\n",
" <td>0.000264</td>\n",
" <td>5491.573976</td>\n",
" <td>120.188374</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>E</td>\n",
" <td>20</td>\n",
" <td>181747.82</td>\n",
" <td>1.378742e+05</td>\n",
" <td>0.000145</td>\n",
" <td>9087.391000</td>\n",
" <td>26.364305</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>F</td>\n",
" <td>1</td>\n",
" <td>19418.42</td>\n",
" <td>1.212972e+04</td>\n",
" <td>0.000082</td>\n",
" <td>19418.420000</td>\n",
" <td>1.600897</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>G</td>\n",
" <td>5</td>\n",
" <td>29820.87</td>\n",
" <td>2.693550e+04</td>\n",
" <td>0.000186</td>\n",
" <td>5964.174000</td>\n",
" <td>5.535607</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>H</td>\n",
" <td>14</td>\n",
" <td>86476.90</td>\n",
" <td>4.617415e+04</td>\n",
" <td>0.000303</td>\n",
" <td>6176.921429</td>\n",
" <td>26.219790</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>I</td>\n",
" <td>4</td>\n",
" <td>32686.63</td>\n",
" <td>1.398137e+04</td>\n",
" <td>0.000286</td>\n",
" <td>8171.657500</td>\n",
" <td>9.351478</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>J</td>\n",
" <td>12</td>\n",
" <td>75580.99</td>\n",
" <td>2.869872e+04</td>\n",
" <td>0.000418</td>\n",
" <td>6298.415833</td>\n",
" <td>31.603219</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>K</td>\n",
" <td>17</td>\n",
" <td>87411.64</td>\n",
" <td>7.289687e+04</td>\n",
" <td>0.000233</td>\n",
" <td>5141.861176</td>\n",
" <td>20.384933</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>L</td>\n",
" <td>7</td>\n",
" <td>22684.08</td>\n",
" <td>2.487761e+04</td>\n",
" <td>0.000281</td>\n",
" <td>3240.582857</td>\n",
" <td>6.382789</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>M</td>\n",
" <td>1</td>\n",
" <td>6352.66</td>\n",
" <td>1.010776e+03</td>\n",
" <td>0.000989</td>\n",
" <td>6352.660000</td>\n",
" <td>6.284934</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>R</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>7.291995e+02</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>S</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>1.783620e+03</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>T</td>\n",
" <td>1</td>\n",
" <td>3053.17</td>\n",
" <td>3.044156e+03</td>\n",
" <td>0.000328</td>\n",
" <td>3053.170000</td>\n",
" <td>1.002961</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>X</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>1.627180e+03</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>CHARGE=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>CHARGE=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>CHARGE=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>CHARGE=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>CHARGE=%{y}<extra></extra>",
"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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>Y=%{y}<extra></extra>",
"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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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<br>FREQ=%{x}<br>CHARGE=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>CHARGE=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>CHARGE=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>CHARGE=%{y}<extra></extra>",
"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<br>FREQ=%{x}<br>CHARGE=%{y}<extra></extra>",
"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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Cluster</th>\n",
" <th>ANNEE_CTR</th>\n",
" <th>AGE_ASSURE_PRINCIPAL</th>\n",
" <th>ANCIENNETE_PERMIS</th>\n",
" <th>ANNEE_CONSTRUCTION</th>\n",
" <th>NB</th>\n",
" <th>EXPO</th>\n",
" <th>CHARGE</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>2019.307393</td>\n",
" <td>26.023346</td>\n",
" <td>13.019455</td>\n",
" <td>2017.307393</td>\n",
" <td>14</td>\n",
" <td>70582.726776</td>\n",
" <td>76623.37</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2019.185629</td>\n",
" <td>56.634731</td>\n",
" <td>34.640719</td>\n",
" <td>2017.323353</td>\n",
" <td>13</td>\n",
" <td>48258.046448</td>\n",
" <td>94446.05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>2019.251282</td>\n",
" <td>45.446154</td>\n",
" <td>63.061538</td>\n",
" <td>2017.220513</td>\n",
" <td>18</td>\n",
" <td>52378.409836</td>\n",
" <td>180511.41</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>2019.496894</td>\n",
" <td>43.173913</td>\n",
" <td>27.515528</td>\n",
" <td>2017.242236</td>\n",
" <td>8</td>\n",
" <td>43450.144809</td>\n",
" <td>70994.74</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>2018.009174</td>\n",
" <td>63.302752</td>\n",
" <td>48.211009</td>\n",
" <td>2014.458716</td>\n",
" <td>3</td>\n",
" <td>31148.942623</td>\n",
" <td>14771.70</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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
}