Files
ArtStudies/M2/Machine Learning/TP_2/2025_TP_2_M2_ISF.ipynb
Arthur DANJOU 185de1142d Refactor code in Jupyter notebooks for clarity and consistency
- Set execution_count to null for specific code cells in 2025_TP_1_M2_ISF.ipynb to reset execution state.
- Replace output display of DataFrames with print statements in 2025_TP_1_M2_ISF.ipynb for better visibility during execution.
- Clean up import statements in 2025_TP_2_M2_ISF.ipynb by adding noqa comments for better linting and readability.
2025-10-08 10:24:51 +02:00

1851 lines
260 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": null,
"id": "f6e62631",
"metadata": {},
"outputs": [],
"source": [
"# Données\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"# Graphiques\n",
"import seaborn as sns\n",
"\n",
"sns.set()\n",
"import matplotlib.pyplot as plt # noqa: E402\n",
"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": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGgCAYAAABWo0bIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKAhJREFUeJzt3Al4VNUZ//E3C2sgkli2v/61igIFZV8rIAoiFa2IPqgURTZRK5vgQqHIUhcWEUERLQhuQF1RCxYabVFa2alU2SoghbJKEiIBAmTu/3nP88z8s0xilAmZee/38zwx5M6Z8b5z7sz85pxzb5zneZ4AAAAYEV/WOwAAABBJhBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAApiSKT+m1CwOByF+/MD4+rlQeNxZQu/9q92vdfq7dr3UraveiYj/i4uJ+sJ1vw412Unp6dkQfMzExXlJSkiQr67icORMQP6F2/9Xu17r9XLtf61bUnhQVtaemJklCwg+HG6alAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKaUSrgJBAIyY8YMad++vTRp0kQGDhwoe/bsKbJ9RkaGjBgxQlq2bCmtWrWS8ePHy4kTJ8K2PXXqlNx0003y2GOPlcauAwCAGFcq4WbWrFmyYMECmThxoixatMiFnQEDBrhgEs6QIUNk9+7dMn/+fHnuuedkxYoVMm7cuLBtJ0+eLNu3by+N3QYAAAZEPNxogHnllVdcYOnYsaPUr19fnn32WTlw4IAsX768UPuNGzfKmjVrZNKkSdKwYUNp27atTJgwQT744AM5ePBgvraff/65fPzxx3L55ZdHercBAIAREQ83W7dulezsbBdSgpKTk6VBgwaydu3aQu3XrVsn1atXlzp16oS26dRUXFycrF+/PrQtPT1dRo0a5UaDUlJSIr3bAADAiMRIP6CO0KjatWvn216jRo3QbXnp6EzBtuXLl5dq1arJ/v37Q9tGjx4t11xzjVx77bUyb968iOxrYmJks11CQny+335C7f6r3a91+7l2v9atqF1iqvaIh5vgQmANKHlVqFBBjh49GrZ9wbbB9jk5Oe7fum5nx44d8swzz0RsP+Pj4yQlJUlKQ3JyJfEravcfv9bt59r9Wreidp+Gm4oVK4bW3gT/rTSoVKpU+InRNuEWGmv7ypUry86dO2XKlCkyd+5c93ekBAKeZGUdl0jSVKudn5V1QnJzA+In1O6/2v1at59r92vditorRUXtuh8lGUGKeLgJTjEdOnRILrrootB2/btevXqF2teqVUvS0tLybdOwk5mZ6aayli5d6tbw9O3bN3T7yZMnZcOGDbJs2TK3IPmnOnOmdDpJO7+0HjvaUbv/avdr3X6u3a91K2oPSCyIeLjRs6OqVKkiq1evDoWbrKws2bx5s/Tu3btQe722zdSpU92p4BdffLHbpmdPqebNm8svf/lLd12bvEaOHOlCkf4GAAAo1XCj62c0xGhgSU1NlQsuuMBNK2kY6dKli+Tm5rozn6pWreqmpBo3bizNmjWT4cOHu2vbHD9+XMaOHSvdu3eXmjVrusfUxcV56f2SkpJCYQgAACCoVJY+6zVubrvtNhkzZozceeedkpCQ4NbMlCtXzp0B1a5dOzfdpPSU7+eff14uvPBC6dOnjwwbNkw6dOhQ5EX8AAAAihPneZ4nPp07TE/Pjuhj6qnlegZWRkZ2zMxLRgq1+692v9bt59r9Wrei9qSoqD01NalEC4pj56R1AACAEiDcAAAAUwg3AADAFMINAAAwhXADAABMIdwAAABTCDcAAMAUwg0AADCFcAMAAEwh3AAAAFMINwAAwBTCDQAAMIVwAwAATCHcAAAAUwg3AADAFMINAAAwhXADAABMIdwAAABTCDcAAMAUwg0AADCFcAMAAEwh3AAAAFMINwAAwBTCDQAAMIVwAwAATCHcAAAAUwg3AADAFMINAAAwhXADAABMIdwAAABTCDcAAMAUwg0AADCFcAMAAEwh3AAAAFMINwAAwBTCDQAAMIVwAwAATCHcAAAAUwg3AADAFMINAAAwhXADAABMIdwAAABTCDcAAMAUwg0AADCFcAMAAEwh3AAAAFMINwAAwBTCDQAAMIVwAwAATCHcAAAAUwg3AADAFMINAAAwhXADAABMIdwAAABTCDcAAMCUUgk3gUBAZsyYIe3bt5cmTZrIwIEDZc+ePUW2z8jIkBEjRkjLli2lVatWMn78eDlx4kS+x5szZ45cf/317vG6desmb7/9dmnsOgAAiHGlEm5mzZolCxYskIkTJ8qiRYtcOBkwYICcOnUqbPshQ4bI7t27Zf78+fLcc8/JihUrZNy4caHbX3rpJfczdOhQ+fDDD+Xuu+92ty9evLg0dh8AAMSwiIcbDTCvvPKKCywdO3aU+vXry7PPPisHDhyQ5cuXF2q/ceNGWbNmjUyaNEkaNmwobdu2lQkTJsgHH3wgBw8edG0WLlwo/fr1kxtuuEEuuugiuf322+Xmm29m9AYAAJR+uNm6datkZ2e7kBKUnJwsDRo0kLVr1xZqv27dOqlevbrUqVMntE2npuLi4mT9+vVu1EeDzy233JJ/x+PjJSsrK9K7DwAAYlxipB9QR2hU7dq1822vUaNG6La8dHSmYNvy5ctLtWrVZP/+/S7E5A1Kat++fbJkyRK54447zmpfExMjm+0SEuLz/fYTavdf7X6t28+1+7VuRe0SU7VHPNwEFwJrQMmrQoUKcvTo0bDtC7YNts/JySm0/bvvvnMLlM8//3y5//77f/J+xsfHSUpKkpSG5ORK4lfU7j9+rdvPtfu1bkXtPg03FStWDK29Cf5baVCpVKnwE6Ntwi001vaVK1fOt23nzp1y7733Sm5urrz22mtuuuunCgQ8yco6LpGkqVY7PyvrhOTmBsRPqN1/tfu1bj/X7te6FbVXioradT9KMoIU8XATnGI6dOiQW/wbpH/Xq1evUPtatWpJWlpavm0adjIzM91UVpCuv9GRmpo1a7rTwvX32TpzpnQ6STu/tB472lG7/2r3a91+rt2vdStqj43aIz6BpmdHValSRVavXh3apgt/N2/e7K5jU5Bu07U4eip4kJ49pZo3b+5+b9q0yZ1Kfvnll8ubb74ZkWADAABsivjIja6f6d27t0ydOlVSU1PlggsukClTprgRmi5durgppfT0dKlataqbkmrcuLE0a9ZMhg8f7q5dc/z4cRk7dqx0797dhZgzZ87IyJEj3Rqbp59+2k1XHT582P2/EhIS3P8DAACg1MKN0mvcaCgZM2aMnDx50o3OzJ07V8qVKyd79+6VTp06yVNPPSU9evRwp3w///zz7qrEffr0cQuJu3btKqNGjQqN2gRHdTp37pzv/6PB6dNPPy2NEgAAQIyK8zzPE5/OHaanZ0f0MfXUcj0DKyMjO2bmJSOF2v1Xu1/r9nPtfq1bUXtSVNSemppUogXFsXPSOgAAQAkQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgSqmEm0AgIDNmzJD27dtLkyZNZODAgbJnz54i22dkZMiIESOkZcuW0qpVKxk/frycOHEiX5uPP/5YbrjhBmnUqJF0795dvvjiC4kmgYAnW75NlxUb9rrf+ncs0v3eujtDVm0+4H7Hah3nipV+t3JscfxGF/rDfwJR0ueJpfGgs2bNkgULFsjTTz8ttWrVkilTpsiAAQPko48+kvLlyxdqP2TIEBdm5s+fL1lZWTJ69Gg5fvy4TJo0yd2+atUqefjhh+WRRx6Rq666St555x259957ZfHixVKnTh0pa+u3HZIFaf+RjO9zQttSqlaQXp0vl+b1akissFLHucLzFV3PFf0RXegP/1kfRX0e53leRGPVqVOnpE2bNjJy5Ejp1auX26aBRUdxnnjiCbnxxhvztd+4caPccccdsnTp0lBQWblypQtDK1askJo1a0r//v2latWqMn369ND99D5169aVCRMm/KT9zM0NSHp6tkSiM194/6sib//tLVfExAv5bOtITIyXlJQkycjIljNnAmKdlX4/GyXt83PxXJ3r/vDb8R6NfX6u+bXPS1r7uerz1NQkSUiIP/fTUlu3bpXs7Gxp27ZtaFtycrI0aNBA1q5dW6j9unXrpHr16vlGYHRqKi4uTtavX++muDZs2JDv8VTr1q3DPt65pMNtmlKLszDtP1E/FGuljnOF5yu6niv6I7rQH/4TiMI+j/i01IEDB9zv2rVr59teo0aN0G15HTx4sFBbnbqqVq2a7N+/34366BSVTm+V5PF+bBo9G7rGIu/wWzjp3+fIjn1H5Rc/T5VoFYk6gkm6JIk61lnp97NVkj4/F89VWfSHn473aOzzsuDXPi9J7dHY5xEPN8GFwAXX1lSoUEGOHj0atn24dTjaPicnR06ePFnk4+ntP1V8fJwbZjsbp3dllKydd/b/r9IUyTqSkyuJdVb6PVKK6/Nz8VyVZX/44XiPxj4vS37t8+Jqj8Y+j3i4qVixYmjtTfDfSoNIpUqFnxhto20L0vaVK1d2ISb4eAVvD/d4JaXDY1lZx+VslIvzStxO5yqjVSTq0ESvB35W1gm3nskyK/1+tkrS5+fiuSqL/vDT8R6NfV4W/NrnJan9XPa57kdJRs8iHm6CU0yHDh2Siy66KLRd/65Xr16h9jrdlJaWlm+bBpnMzEw39aTTUxpy9P556d+62PhsnO2isDr/5zy3Ery44bjUqhVcu2hegBbJOvTAj+ZaI8FKv0dKcX1+Lp6rsuwPPxzv0djnZcmvfV5c7dHY5xGfPKxfv75UqVJFVq9eHdqm62Y2b97srmNTkG7TtTO7d+8ObVuzZo373bx5c7ewuFmzZqFtQfr4LVq0kLKkU1t6iltx7ux8uWsXzazUca7wfEXXc0V/RBf6w3/io7DPIx5udG1M7969ZerUqfLJJ5+4s6eGDx/uRmi6dOkiubm5cvjw4dBamsaNG7vwom02bdrkrmkzduxYd6G+4MhM3759ZcmSJTJv3jzZsWOHTJ48WbZs2SJ9+vSRsqantukpbppaC6bUWDrd0Uod5wrPV3Q9V/RHdKE//Kd5lPV5xK9zozTATJs2Td577z0XYnR0RgPLhRdeKHv37pVOnTrJU089JT169HDtjxw54q5K/Pnnn7s1Nl27dpVRo0aF1tsovWCfXhxQR3kuu+wyd1G/gqeHl8V1bvKu4dGV4LpgSucVdfgtFr+ZaB3b92RKZnaOVEuqIHX/b7US1eHXa0BY6fef4sf2+U89tn6Mc/H/8PPxHo19fq74tc9/bO2l3eclvc5NqYSbWBDpcKM4+KndT7X7tW4/1+7XuhW1J0VF7WV2ET8AAICyRLgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYErEw01OTo6MHz9e2rZtK02bNpURI0ZIenp6sffZu3evDBo0SJo1aybt2rWT6dOnS25ubuj2kydPyjPPPCPXXnute8wePXrIJ598EuldBwAABkQ83IwbN05WrlwpM2fOlFdffVV27twpQ4YMKbL96dOnpX///u7fixYtcvdfuHChvPDCC6E2f/jDH+Sjjz6Sxx9/XBYvXiydO3eWBx98UFavXh3p3QcAADEuMZIPdvDgQRc+Zs+eLS1atHDbpk2bJl27dpWNGze6UZeCli1bJvv27ZO33npLzjvvPKlbt64cOXJEJk+eLPfdd58bwdHHfPLJJ+Xqq69293nggQdcsHn33XeldevWkSwBAADEuIiGm/Xr17vfbdq0CW275JJLpGbNmrJ27dqw4WbdunXSsGFDF2yC9P7Hjh2TLVu2SL169VxYuuKKK/LdLz4+XrKyss5qfxMTIztwlZAQn++3n1C7/2r3a91+rt2vdStql5iqPeIjNykpKVKhQoV822vUqCEHDhwIex/dXqtWrULt1f79+6Vx48ZuHU5emzZtklWrVsmYMWN+8r7Gx8dJSkqSlIbk5EriV9TuP36t28+1+7VuRe0Gw40u/O3UqVORtw8dOlTKly9faLuGHV1oHI4uFk5OTi7UXoW7j67h+e1vfyuNGjWSnj17yk8VCHiSlXVcIklTrXZ+VtYJyc0NiJ9Qu/9q92vdfq7dr3Uraq8UFbXrfpRkBOlHhRudXlq6dGmRt69YsUJOnTpVaLuGlEqVwie+ihUrFrpPMNRUrlw53/YNGza49TY60qNTVeXKlZOzceZM6XSSdn5pPXa0o3b/1e7Xuv1cu1/rVtQekFjwo8KNhok6deoUefu2bdskMzPThZW8IziHDh1ywSgcDSrbt2/Pt03bq7z3Wb58uYwcOdJNU82aNUuqVq36Y3YdAAD4RERXBzVv3lwCgUBoYbHatWuXW4vTsmXLsPfR7Zs3b3YLiIN0PU1SUpLUr1/f/f3pp5/K8OHDpWPHjjJ37lyCDQAAODfhRkdaunXr5hb66qnauvD3oYceklatWkmTJk1cGx3VOXz4cGgqSq9ZU716dRk2bJhs3bpV0tLS3Onj/fr1c6M/R48elUcffdSdUTV69Gj3t95ff3SUCAAAIK+In9c1ceJEd3VivcieXpzv0ksvlRkzZoRu1+vd6NlP+ju4eHjOnDluxEcXCOvVjXv16uXW1qjPPvvMnfL95ZdfSocOHdx9gz+DBw+O9O4DAIAYF+d5nic+XRiVnp4d0cfU6+bo6eUZGdkxs+gqUqjdf7X7tW4/1+7XuhW1J0VF7ampSSU6Wyp2rsgDAABQAoQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJgS8XCTk5Mj48ePl7Zt20rTpk1lxIgRkp6eXux99u7dK4MGDZJmzZpJu3btZPr06ZKbmxu2rT6Wtpk5c2akdx0AABgQ8XAzbtw4WblypQsfr776quzcuVOGDBlSZPvTp09L//793b8XLVrk7r9w4UJ54YUXwrYfM2aMHD58ONK7DQAAjEiM5IMdPHhQFi9eLLNnz5YWLVq4bdOmTZOuXbvKxo0b3UhOQcuWLZN9+/bJW2+9Jeedd57UrVtXjhw5IpMnT5b77rtPypcvH2r7pz/9Sb799lupXr16JHcbAAAYEtFws379eve7TZs2oW2XXHKJ1KxZU9auXRs23Kxbt04aNmzogk2Q3v/YsWOyZcsWady4sdu2a9cumTp1qsyfP18GDx4ckf1NTIzswFVCQny+335C7f6r3a91+7l2v9atqF1iqvaIj9ykpKRIhQoV8m2vUaOGHDhwIOx9dHutWrUKtVf79+934UanrnTtjk5faRCKhPj4OElJSZLSkJxcSfyK2v3Hr3X7uXa/1q2o3WC40YW/nTp1KvL2oUOH5ptGCtKwowuNwzl58qQkJycXaq+C95kxY4bbNnDgQImUQMCTrKzjEkmaarXzs7JOSG5uQPyE2v1Xu1/r9nPtfq1bUXulqKhd96MkI0g/Ktzo9NLSpUuLvH3FihVy6tSpQts1pFSqFD7xVaxYsdB9gqGmcuXKsmbNGrfA+P3335eEhASJpDNnSqeTtPNL67GjHbX7r3a/1u3n2v1at6L2gMSCHxVuypUrJ3Xq1Cny9m3btklmZqYLK3lHcA4dOuSCUTg6JbV9+/Z827S90vtosDl+/Lj8+te/Dt1+4sQJeemll+Qvf/mLLFmy5MeUAAAAjIvompvmzZtLIBBwC4v1OjdKFwLrWpyWLVuGvY9u1zOsdAFxlSpV3LZVq1ZJUlKS1K9fX0aOHOnOmsrrrrvuki5dukjfvn0jufsAAMCAiC591pGWbt26uWvRrF69WjZt2iQPPfSQtGrVSpo0aeLa6KiOXqcmOBXVuXNnd2r3sGHDZOvWrZKWluZOH+/Xr58b/Tn//PPl4osvzveTmJjozq664IILIrn7AADAgIif1zVx4kQ3avPggw+6s5suvfRStyA4SK93o1cY1t9KFwrPmTPHjfj07NnTXd24V69e8sADD0R61wAAgA/EeZ7niU8XRqWnZ0f0MfW6OXp6eUZGdswsuooUavdf7X6t28+1+7VuRe1JUVF7ampSic6Wip0r8gAAAJQA4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmEK4AQAAphBuAACAKYQbAABgCuEGAACYQrgBAACmEG4AAIAphBsAAGAK4QYAAJhCuAEAAKYQbgAAgCmEGwAAYArhBgAAmBLneZ4nPqRlBwKRLz0hIV5ycwPiR9Tuv9r9Wrefa/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": "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9re/jd133z023XTT2G677eLSSy99zxfmNYo777wzPv/5zxe1+NznPhe33HJLuO1MRKVSKW7Qt8MOO8TGG29c1Obmm2+udbPqQvoyyY022ig+9rGPzfczduzYWjetLjz88MPF/uUTn/hEbL/99kU/avTPVKVSidtuuy122WWXop985jOfiXPPPXfAHJP6fcfPweLf//53HHjggTFt2rT5tk+ePDm+8Y1vxCc/+cm45JJL4vXXXy9uo/7qq6/GVVddFY1cm7QDOPTQQ2PXXXeN73znO/HSSy/FxIkT480334yzzjorGslPfvKTOO2002LfffctPvQpmKYapIPIAQccEI3s/PPPjx/96Efx1a9+tQga//jHP+IHP/hB8Rk68cQTo5E9//zzxR2T09cxfPSjH527vVxu6PO9whNPPBGHHHJIEUqPPvro+POf/1zUqaenJw4++OBoVNdee21xLEr75HHjxsWUKVOKk7t0rLr++uujVCpFXas2mJ6enurdd99d3XLLLYuf0aNHV//4xz/O/fOJEydWN9544+r06dPnbrvtttuKv/fqq69WG7k2++yzT3X33Xef799ceuml1Q033LA6Y8aMaiPZc889q3vttdd824455pjqdtttV21kb7/9dtEfTjnllPm2/+Y3v6lusMEG1RdeeKHayO68887qmDFjql1dXbVuSt054IADql/5ylfm23bBBRdUx44dW+3s7Kw2op6enurmm29enTBhwnzb77333mL//Je//KVa7xouPj/33HNxxhlnFGfjF1xwwXv+PJ2JNjc3x/Dhw+duW2655YrH9vb2aOTapCG6Bben76xJw3np7KyRpH6SvpG4r9RPBnsf+V/+/ve/F2eeaSqtr0996lNFP/nd734Xjexvf/tbrLPOOsWXTTJPmnJNU7Np5KuvnXbaKWbMmFGMajSi6dOnx5e+9KX4whe+MN/21IeSV155Jepdw4WMVVddNR588ME46aSToqWl5T1/nuYDk/POOy/+85//FENSl19+eYwePbr4qvtGrs1HPvKRuZ07df4HHnigGK5L6xLa2tqikXz9618vpo9+8YtfFNNK6eD5s5/9rNghNLJRo0YVj//617/m256mTJI0ZdLoIaOpqamYUktrebbccss4/fTTB8z8ei7pYDlnzpxYa6215tu+5pprFo9piqARtbW1FV9Gmqbv+3rooYeKx/XWWy/qXcOtyegdlViUFCaOP/74OPPMM+Omm24qtqWvtE+L+tLOoZFr0+uNN96Irbfeem7wOOaYY6LRpGD1pz/9KU444YS52z796U/HySefHI1s7bXXLnaIl112Wayyyiqx1VZbFQeQtH4lnb3PnDkzGlVawJhGC9PjHnvsUaxv+utf/xo//OEP44UXXigWxzbq2oze9V8Ljg6OGDGieGz0ENbXk08+Gddcc00xWpiOV/WuMXv0+0hv3oQJE2KvvfaKG2+8MS6++OKio++///7x1ltv1bp5dSGNcqTapMVI6cCx5557FgtkG8lhhx0Wv/71r4tA+uMf/7g4iD711FPFgrVGXw2fFqWlK5OOOOKI4nG//fYr+kgKsX2nIRtN6hdXXnllcVXS3nvvHVtssUUxopH2N2k6oJGnktJU2vtp1PC1oNRPDjrooFhjjTWK0faBoOFGMt5PWldwxRVXFJcKpSHMvvPJn/3sZ4vLqb773e9Go0tDeGmVc5IuUUy1SVdbpINKI3jssceKA0K6tDmdkSZp2DuN6qRV8Oky3wXXJDSSFVdcsfgcdXR0FKNe6SqKdJBI632WXXbZaFSpBmlfsqB0mXySRjm23XbbaEStra3FY1p/0VfvCMaCIxyN6L777iuuzkpTSumKk96pyXonHvbxzjvvRGdnZ3F/jL5WWGGFYhg4rc9oVGkxX+rkzzzzzHzbU6JOB450MGkUvesNFuwn6aw9aeR+ktx7773x7LPPFmE0zRmn0a60FiGdrY4ZMyYaVRrtS6MYC65XmTVrVvE4UA4aOaQgmqajX3755YWu5Vl33XWjkV133XVx7LHHFut40tT9SiutFAOFkLFAmEhDuguuZE7hI62aT2eqjSrtANI9MdJPX08//XRxRUW6oVCj6F38mu6NseAIR9LI/SRJUwJp2rGvNL2WzlYXdibfSEE9Tavdcccd821P4T19vnpDaiMaNmxY8f+fFp73nW68//77i36zySabRKO6/fbbi6v60v1D0ghG76jPQGG6pI/0QT/yyCOLmyqldRjpTU1XmFx99dVzV4Q3slSbNF2Uhr133nnnYkFfmn9Pi496r8ppBOlsPF1al246NXXq1OLuhGnhXlrsmO7muOBleI0m3aAs9ZH111+/uENhOoj+6le/KtYeDLQd5NK02mqrxW677VaclaaDaqpNOqFJN/lLazTSaGkjSwth040Q07qmtD95/PHHi1qlG/816lqeN998s1h7kS4+SH1kwZHkNAK0/PLLRz0rpZtlRINK12WnSxHTVSR9z7DSZYk33HBDceBIQ5gpYaehqkY6Q11UbdJix3SWmu72ucwyyxTrMdJOoNHm2tN1/emMPfWVNFWUDiCpFocffvjcFfGNLN3xM10tkXaS6eCZ7la44LX+jSj1m3Q2mvpNmjZJV+CkdT1pMZ/FjVGMZKQTl3TJ6sorr1wcWBv55O6uu+6KU045ZZF/ngJICq71rKFDBgCQj+gMAGQhZAAAWQgZAEAWQgYAkIWQAQBkIWQAAFkIGQBAFkIGAJCFkAEAZCFkAABZCBkAQOTw/wGT5waPeBdakgAAAABJRU5ErkJggg==",
"text/plain": [
"<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": "314db81b-022c-4f29-bae3-9c57b89dc89d",
"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": [
"[[1.45059813e-04]\n",
" [2.06105405e-05]\n",
" [9.89338927e-04]\n",
" [3.13499008e-04]\n",
" [2.13297250e-04]]\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Itinitialisation algo\n",
"kmeans = 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_x = data[\"FREQ\"].to_numpy()\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",
"print(final_centroids)\n",
"\n",
"#Représentation Graphique\n",
"y = np.zeros_like(data_x)\n",
"plt.scatter(data_x, y, c=labels, cmap='viridis')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "9c738659",
"metadata": {},
"source": [
"### Regroupement de zones selon le coût moyen"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "f461bfb8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 5946.98129932]\n",
" [ 0. ]\n",
" [ 8629.52425 ]\n",
" [ 3146.87642857]\n",
" [19418.42 ]]\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Itinitialisation algo\n",
"kmeans = 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_x = data['CM'].to_numpy()\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",
"print(final_centroids)\n",
"\n",
"#Représentation Graphique\n",
"y = np.zeros_like(data_x)\n",
"plt.scatter(data_x, y, c=labels, cmap='viridis')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "6b154f4a",
"metadata": {},
"source": [
"### Regroupement de zones selon (fréquence; le coût moyen)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "1d89f70e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 6.88870225]\n",
" [ 0.52077154]\n",
" [ 26.14306157]\n",
" [120.18837399]\n",
" [304.21208557]]\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Itinitialisation algo\n",
"kmeans = 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_x = data['FREQxCHARGE'].to_numpy()\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",
"print(final_centroids)\n",
"\n",
"#Représentation Graphique\n",
"y = np.zeros_like(data_x)\n",
"plt.scatter(data_x, y, c=labels, cmap='viridis')\n",
"plt.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": 21,
"id": "341bf2b2",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAGhCAYAAAAp9WNiAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUIdJREFUeJzt3QmYXWV9+PF3lqyQIQTDIogtYRMUkLVUQkEiUkRFtIpKQTRQlxpFhIAgssgmKCWmiA1gIhpoFQERqRStuBRCFupSAiK2NFQIWpIMZmWW//M9f3+3Z25mMnMnM/POnXw/zzPPzNx77nnPec+7/M573nNuQ2dnZ2eSJEnSkGoc2uQkSZIEgzBJkqQMDMIkSZIyMAiTJEnKwCBMkiQpA4MwSZKkDAzCJEmSMjAIkyRJyqA5R6L1gGfYdnT07zm2jY0N/f5sf5mmadZruqZpmvWarmkOvzQbGxtSQ0NDqhcGYT3g4L/wwuqaP9fc3Ji23Xar1Nq6JrW1dQzKtpmmaY6UdE3TNOs1XdMcnmlOmrRVamqqnyDMy5GSJEkZGIRJkiRlYBAmSZKUgUGYJElSBgZhkiRJGRiESZIkZWAQJkmSlIFBmCRJUgYGYZIkSRkYhEmSJGVgECZJkpSBQZgkSVIGBmGSJEkZGIRJkiRl0Jwj0ZGss7MzrVvfltZvaE9tbR1DkmZ7x8hKc/SoxtTQ0DCg65QkabgxCBvgAOyz8xanJ59ZlXtT6truu2yTzn/vgQZikqQRzcuRA2jDSx0GYAPg18+sKvJSkqSRzJGwQTL7rCNT0xCN5DQ3N6aJE8enlSvXDNnlyMFIc/1L7enjX/zJgKxLkqThziBskIwZ1ZSaGocuCBs7pjmNGT2y05QkaSTxcqQkSVIGBmGSJEkZGIRJkiRlYBAmSZKUgUGYJElSBgZhkiRJGRiESZIkZWAQJkmSlIFBmCRJUgYGYZIkSRkYhEmSJGVgECZJkpSBQZgkSVIGBmGSJEkZGIRJkiRlYBAmSZKUgUGYJElSBgZhkiRJGRiESZIkZWAQJkmSlIFBmCRJUgYGYZIkSRkYhEmSJGVgECZJkpSBQZgkSVIGBmGSJEkZGIRJkiRlYBAmSZKUgUGYJElSBgZhkiRJGRiESZIkZWAQJkmSlIFBmCRJUgYGYZIkSRkYhEmSJGVgECZJklQPQVhHR0eaNWtWmjp1ajrggAPSGWeckZYtW9bj8itWrEhnn312OuSQQ9Khhx6aLrnkkrR27douy9x3333p+OOPT/vtt1868cQT00MPPVTzOo499ti01157dfk577zzat09SZKkIdFc6wduuOGGNH/+/HTVVVelHXfcMV1zzTVp+vTp6Z577kmjR4/eaPkZM2YUAdPcuXNTa2truuCCC9KaNWvS1VdfXbz/8MMPp3POOSede+656XWve1365je/mc4888x01113pSlTpvRpHfxNIPjlL3857bvvvpW0x44duzl5I0mSNDxGwjZs2JBuueWWIig66qij0t57752uu+669Nxzz6X7779/o+UfffTR9MgjjxTBEsHR4Ycfni699NJ09913p+XLlxfLzJkzJ02bNi2deuqpRdA1c+bMYtl58+b1eR2//vWvixG61772tWny5MmVnwkTJgxMLkmSJOUMwh5//PG0evXqIhAKLS0taZ999kkLFy7caPlFixYVwVCMaIHLiQ0NDWnx4sVF4LRkyZIu68Nhhx1WWV9v68ATTzyRXvayl6Vtttmmlt2RJEmqj8uRjHhhp5126vL69ttvX3mvjJGq6mW5ZDlx4sT07LPPFpcWuZTIZc2e1tfbOiIIGz9+fDFCR1C37bbbpre//e3F6FpjY//vPWhuru2z7R2dlb8bmxpSc9PQ3PfQ9Md04ne9plnOP/K+Ov9Hyn4OxzRzpWuaplmv6ZrmyEqzLoKwmAxfPfdrzJgxadWqVd0u3908MZZfv359WrduXY/r4/2+rANPPvlkEdC98Y1vTB/5yEeKETLmqrFNH/vYx1J/NDY2pG233aqmz6xb31b5u2XCuDR2TM1T7jZLS8u4IU1voNMs59/EieN7zL9638/hnGaudE3TNOs1XdMcWWkOtZqihJjoztyw8qR3gqFx4zbOLJZh2Wosz8gVgVSsr/r9WF9v64h5Zfwfc8C4M/IPf/hD+tKXvpQ++tGP9ms0rKOjM7W2rqnpM+s3tFf+bn1xbVq7ZuhGwiisra1rU3t7R92mWc6/lSvXpDGjmwY9zd5sKWnmStc0TbNe0zXN4ZlmS8u4uhpBqykIi8uCzz//fNp1110rr/M/gU81LjM+8MADXV4joFq5cmVxyZFLigRSfL6M/3fYYYc+rQOMlFWPlu25557FpU5Gw7g82R9tbR39Xr6jvTO1dQ5dIwQKa63b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+7IORtTKSHurrbZKr3zlKwcupyRJkgZQzbPXeEbYO97xjnThhRemd7/73ampqamYjzVq1KjibsUjjjiiuEQIRrpmz56ddtlll3Taaaelj3/840WgVX7QKstfccUV6bbbbktve9vbioe33njjjZVHUvRlHZIkSfWm5mcoEHTxhHt+qhEoPfHEE11e22677YqvOdoURrX46Ulf1lF266239nlZSZKkHOrnPk5JkqQRxCBMkiQpA4MwSZKkDAzCJEmSMjAIkyRJysAgTJIkKQODMEmSpAwMwiRJkjIwCJMkScrAIEySJCkDgzBJkqQMDMIkSZIyMAiTJEnKwCBMkiQpA4MwSZKkDAzCJEmSMjAIkyRJysAgTJIkKQODMEmSpAwMwiRJkjIwCJMkScrAIEySJCkDgzBJkqQMDMIkSZIyMAiTJEnKwCBMkiQpA4MwSZKkDAzCJEmSMjAIkyRJysAgTJIkKQODMEmSpAwMwiRJkjIwCJMkScrAIEySJCkDgzBJkqQMDMIkSZIyMAiTJEnKwCBMkiQpA4MwSZKkDAzCJEmSMjAIkyRJysAgTJIkKQODMEmSpAwMwiRJkjIwCJMkScrAIEySJCkDgzBJkqQMDMIkSZIyMAiTJEmqhyCso6MjzZo1K02dOjUdcMAB6YwzzkjLli3rcfkVK1aks88+Ox1yyCHp0EMPTZdccklau3Ztl2Xuu+++dPzxx6f99tsvnXjiiemhhx6qaR3t7e3FNh199NHFOk466aT0wx/+sNZdkyRJGr5B2A033JDmz5+fLrvssnT77bcXQdn06dPThg0bul1+xowZ6emnn05z585N119/fXrwwQfTxRdfXHn/4YcfTuecc046+eST05133pkOP/zwdOaZZ6annnqqz+vgtdtuuy195jOfSffee296wxvekD784Q+nX/7yl7XniCRJ0nALwgi0brnlliIoOuqoo9Lee++drrvuuvTcc8+l+++/f6PlH3300fTII4+kq6++Ou27775FgHXppZemu+++Oy1fvrxYZs6cOWnatGnp1FNPTVOmTEkzZ84slp03b16f1/HSSy+lCy64oNimV7ziFelDH/pQ2mqrrYoAT5Ikqe6DsMcffzytXr26CIRCS0tL2meffdLChQs3Wn7RokVp8uTJRXAVuJzY0NCQFi9eXIyiLVmypMv6cNhhh1XW19s6QOB2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BmGSJEkZGIRJkiRlYBAmSZKUgUGYJElSBgZhkiRJGRiESZIkZdCchqHXv/716X/+53+Kvz/72c+mt73tbWn27NnpzjvvLL4zct99900zZ84snqa/KatXry6e7n///fenNWvWFF9jxENed9ttty7LzZs3L1199dXFg2jx13/91+m8887rkuYrXvGK4v3f/va3abvttkvvfe970/vf//7ia5PCv/7rv6ZZs2YV3ySAxsbGdNhhh6ULL7ywkuYLL7xQPOz2vvvuK7YPf/qnf1qk9xd/8ReV78b84he/mL7xjW8UaWPbbbdN06dP75LmD3/4w2I5viWA90njJz/5SfFtBjw8t9oDDzyQPvKRjxRfP3X33Xentra2Ii/DX/7lXxZ5FfnANxF88pOf7Dbv+baCE044If393/99sY+Br5fi2xPChz/84eIhurFN1e/H69XHnM+Q12hubi7SJd9/+ctfprVr16ZXv/rV6dxzz0377LNPt+mW0yO/Fy9eXHxuzz33TDNmzCge5NtdOWNZvnkBr33ta3ssZ3/7t39bfIPD8uXLu6T5zne+s3i4MPiKrz/7sz8r8or3uiu7V111VfqP//iPdOutt25Udsm7hQsXFseDBxP/1V/9VfrUpz6VmpqaimU6OjqKb5Jg3S+99FIaNWpUOvLII4tvjHjLW95S2Te+OWLRokVFuWRdlMue9o0y8Z73vCdNnTo1ffSjH+2xDp166qnFt2OAbfj2t79dlMOe7Lrrrum///u/N3qdbSGf+PqzsPPOOxf1hNe32mqr4ntg2VfKPdvP+/xf/iqz6v3k8Yf8kFd80wf7SXlZtWpVUWafeOKJ4r0VK1ZstE2kQ9nh2FIXy44//vj0i1/8oiibbANpsA+vetWr0sUXX5z222+/og5ed9116de//nWx/RwX9mebbbYp6inl4w9/+EPxOsdt3LhxxTpefPHFoqzQHvzbv/1bpR6WUQc4JtEecYz5bGz3n//5nxcPqv6TP/mT9NBDDxXtEdtLOpHfHAuO37vf/e707LPPFm0Zv8uq20C2mfWTH/yeMGFCOvPMM4s2Kdoj9vuyyy5L//Vf/1XZHtLjG08uvfTSon2ijSRvnnzyySL/ytiOr3/965X/OW6vfOUri3zhIdwc93K7y+epq3Pnzq18d3B3adLuUa//8z//s1KOeno85tixYyvf+MJykydP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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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t9iRCQAAGIHQAwAAjEDoAQAARiD0AAAAIxB6AACAEQg9AADACIQeAABgBEIPAAAwAqEHAAAYgdADAACMQOgBAABGIPQAAAAjEHoAAIARCD0AAMAIhB4AAGAEQg8AADACoQcAABiB0AMAAIxA6AEAAEYg9AAAACMQegAAgBEIPQAAwAiEHgAAYARCDwAAMAKhBwAAGIHQAwAAjEDoAQAARiD0AAAAIxB6AACAEQg9AADACIQeAABgBEIPAAAwAqEHAAAYgdADAACMQOgBAABGIPQAAAAjEHoAAIARCD0AAMAIhB4AAGAEQg8AADACoQcAABiB0AMAAIzgsCzLEgOpX9vjsf9Xd7mc4nZ7bO8X/lHvwKHWgUOtA4daB1etnU6HOByOc368saEHAACYhctbAADACIQeAABgBEIPAAAwAqEHAAAYgdADAACMQOgBAABGIPQAAAAjEHoAAIARCD0AAMAIhB4AAGAEQg8AADACoQcAABiB0AMAAIxgdOjxeDwya9Ys6d27t3To0EFGjRole/furbR9Tk6OjB8/Xrp27SppaWkydepUKSgoKNPmww8/lKuuukouueQSGTJkiHz55Ze29xGMamOt1TnNnTtXrrzySn1OgwcPlnfeeUeCXW2sdWnFxcVyzTXXyP333y/BrrbWesuWLfK73/1O93HZZZfpc1TnGsxqa62XLFkiV199tbRv3173tWjRIgl2nhqodennHjlypMyePbvCfba8N1oGmz17ttWtWzfrs88+s7Zt22YNHz7cGjhwoFVUVOS3/bBhw6wbbrjB+uabb6wvvvjC6tevn3Xvvff67v/yyy+tdu3aWa+99pr13XffWY8//rh10UUX6e/t7CMY1cZaz5kzx+rSpYu1ZMkSa8+ePdaCBQustm3bWu+9954VzGpjrUubNm2a1apVK+u+++6zgl1trPWuXbus9u3bW3/5y1+s3bt3Wx999JHVsWNH6+9//7sVzGpjrVUf6m/GW2+9Zf3www/WG2+8YaWmplqff/65Fcxm10CtFdW/+rug/j7MmjWrzH12vTcaG3pUcdUfgvnz5/uOHT161LrkkkusxYsXV2i/adMm/UKULvDq1aut1q1bW5mZmfpn9Q9j7NixZR5300036T8+dvURjGprrXv37q2DT2kTJ060brnlFitY1dZae61atcrq2bOnNXjw4KAPPbW11qqu6g3I4/H42jz77LPW6NGjrWBVW2v9yCOPWNddd12ZPoYMGaKDfbAqqoFaK+np6frvwoABA/SH0fKhx673RmMvb2VkZEh+fr706NHDdywuLk7atm0rGzZsqNB+48aNkpSUJCkpKb5jahjP4XBIenq6HpLbtGlTmf6Ubt26+fqzo49gVFtrPX36dLnuuuvK9OF0OiUvL0+CVW2stVd2drZMnDhRpk2bJgkJCRLsamut16xZoy+3qGNeY8aMkb/97W8SrGprrevXry/ffvutrF27Vg0gyLp162Tnzp368kuwyqiBWisrV67Ul9PU5cHY2Ngybe18bwwRQ2VmZurbRo0alTmenJzsu6+0gwcPVmgbFhYm9erVkwMHDug3yuPHj0vDhg0r7c+OPoJRbay1Cjfl/wPav3+/vj4/dOhQCVa1sdZekyZNkn79+kn//v3llVdekWBXG2t97NgxOXTokH7TeOCBB2TVqlX6DUvNfxgxYoS4XC4JRrWx1sqtt96q50/ddttturZut1tGjx4t1157rQSrzBqotTJu3LhKz8nO90ZjR3q8k6zUi1NaeHi4FBUV+W1fvm3p9oWFhaftz44+glFtrHV5hw8f1pP11Ce3P/zhDxKsamutFyxYoD8Bq5GeuqI21lqFHkWNYp5//vny0ksv6UmhL774ot+JocGiNtZaUW/qahLv5MmTZeHChXpyvgr07777rgSrghqo9enY+d5o7EhPRESEbyWJ93tFFTAyMtJve9W2PNU+KipKF9/bX/n7vf3Z0Ucwqo21Lm3Xrl1yxx136E9pr7/+uv5kHKxqY61VfWfMmCHz5s2rUPtgVhtrHRJy8k96z5495a677tLft2nTRl9afP7552Xs2LFlLnsFi9pYa+Xuu+/WlxLVSjlvrY8ePar/vV9//fV6RDnYRNRArU/HzvfG4HtFbOIdjsvKyipzXP3coEGDCu3VsFr5tuoFyM3N1UNsaihPvcC/1J8dfQSj2lhrL3XNWV3OUv/hqNGICy64QIJZbaz10qVL9RyB22+/XTp27Ki/1DyAxYsX6++DVW2stZorpd4gWrVqVaZNy5Yt9eUBFX6CUW2staqlCvQXX3xxmTZqibdqo76CUaMaqPXp2PneaGzoSU1NlZiYGD3xrPR1w61bt+q9BspTx9S1wz179viOrV+/Xt927txZf3rq1KmT75iX6r9Lly629RGMamOtFXUtXg39qzeE+fPnB3WwrM21HjZsmCxbtkxPUPR+XXTRRXpuTzDvaVIba63mlag+vvrqqzJ9bN++XY9gqjePYFQbax0fH68/LKna+qt1YmKiBKPUGqj16dj63mgZbObMmVZaWpq1YsWKMnsRFBcXWyUlJVZWVpZVUFCg26rln0OHDtXLE7/66iu9Z4Dai+D+++8vs0yvTZs21ssvv6yX702fPl0v8/Mu5bOjj2BV22p94sQJ64orrtDLI9X+Gur5vV9Hjhyxglltq3Vl+3oE+5L12lrrtWvX6j7Ukl+1/5Tah6pz585675VgVhtr/dRTT+nl3WpvL/V3RN2qn+fOnWsFs5kBrnV56vHll6zb9d5odOhRL94TTzxhde/e3erQoYM1atQoa+/evfo+dav2Hli4cKGv/eHDh627775bt1UbNz300ENWYWFhmT7VP3r1ZnrxxRfrfwRqo6bS7OgjGNW2Wqs9IdRz+vtS/8EFs9pW67ocemprrdV+SOqxajO3vn37Wi+++KLldrutYFYba63OSb0JDxo0SG8IqfaZefPNN8vskRSMSmqg1qcLPWfbR2Uc6v/ObmwIAAAg+Bg7pwcAAJiF0AMAAIxA6AEAAEYg9AAAACMQegAAgBEIPQAAwAiEHgAAYARCDwAAMAKhBwAAGIHQAwAAjEDoAQAAYoL/D67KNtMzhR3fAAAAAElFTkSuQmCC",
"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",
"\n",
"linkage_data = linkage(data_x, method='single', metric='euclidean')\n",
"dendrogram(linkage_data, labels=data_x)\n",
"\n",
"plt.show()\n",
"\n",
"#Calcul de la partition de l'espace\n",
"hierarchical_cluster = AgglomerativeClustering(n_clusters=5, metric='euclidean', linkage='complete')\n",
"\n",
"labels = hierarchical_cluster.fit_predict(data_x) # type: ignore\n",
"\n",
"#Représentation Graphique\n",
"y = np.zeros_like(data_x)\n",
"plt.scatter(data_x, y, c=labels, cmap='viridis')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "6ace7bc5",
"metadata": {},
"source": [
"### Regroupement de zones selon (fréquence; le coût moyen)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "16103b5b",
"metadata": {},
"outputs": [],
"source": [
"#Complétez avec votre code"
]
},
{
"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": 23,
"id": "5b42c2b5",
"metadata": {},
"outputs": [],
"source": [
"#Complétez avec votre code"
]
}
],
"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
}