diff --git a/A1/Cours.md b/A1/Cours.md index a882f3b..e55094e 100644 --- a/A1/Cours.md +++ b/A1/Cours.md @@ -69,3 +69,22 @@ p10: 10000 essais en force brute, 40 avec canal auxiliaire en regardant le temps p15: le pic de courant indique le nombre de portes logiques qui ont changé d'état p58: Si on a pas de connaissances à priori sur le système, on regarde une fenetre temporelle élevée pour déterminer la trace. On réduit la fenêtre quand on cible l'attaque. + +## Reverse Engineering 02/11 + +x = f o g o h. On donne toute la fonction x mais on ne retrouve pas le secret g. + +Regarder les mesures de protection contre les attaques DES. Balance-logic pour le calcul inversé. + +Split des variables : on sépare en plusieurs une variable de plusieurs octets en plusieurs variable de 1 octet. +Inversement pour plusieurs petites variables. + +Remplacer une une instruction par un équivalent moins évident (exemple addition A + B + C -> fonction de xor & et |) + +Garbage code : rajouter du code de bruit pour perdre l'attaquant. + +Code mort : condition toujours vraie pour executer le reste du code. + +Code flattening : remplacer des if par des switch. + +Code tiles loops : Remplacer des boucles 1D par des boucles à plusieurs dimensions. diff --git a/D3/TP/TP1.ipynb b/D3/TP/TP1.ipynb index e3dddf9..1155c15 100644 --- a/D3/TP/TP1.ipynb +++ b/D3/TP/TP1.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 379, "metadata": {}, "outputs": [], "source": [ @@ -23,18 +23,18 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 380, "metadata": {}, "outputs": [], "source": [ "# mean = [1,2,3,4]\n", "# sd = [0.25, 0.25, 0.1, 0.2]\n", - "# clusters = 4\n", - "mean = [1,2]\n", - "sd = [0.25, 0.25]\n", + "clusters = 2\n", + "mean = np.random.randint(5, size=clusters)\n", + "sd = [0.25, 0.25, 0.3]\n", "dim = 2\n", - "nb = 10\n", - "clusters = 2" + "nb = 50\n", + "K= clusters" ] }, { @@ -46,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 381, "metadata": {}, "outputs": [], "source": [ @@ -64,39 +64,72 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 382, "metadata": {}, "outputs": [], "source": [ "def distance(points,Pc): \n", - " return scipy.spatial.distance.cdist(points[:,:], points[:,:])" + " return scipy.spatial.distance.cdist(points[:,:], Pc[:,:])" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 383, "metadata": {}, "outputs": [], "source": [ "def kmeans(points = [0,0], K = 1, nb=1, dim=2):\n", " # Initialisation K prototypes\n", " Pc_index = []\n", + " Pc_save = np.zeros([K,dim])\n", + " clusters = []\n", + " iter = 0\n", + " eps = 0.1\n", + "\n", " for i in range(0,K):\n", " Pc_index.append(np.random.randint(0,nb*dim))\n", " Pc = points[Pc_index,:]\n", "\n", - " return Pc" + " while (np.mean(distance(Pc,Pc_save)) > eps and iter < 10):\n", + " iter += 1\n", + " Pc_save = Pc\n", + " # print(Pc)\n", + " # print(points[:,:Pc.shape[0]])\n", + " dist = distance(points=points[:,:Pc.shape[0]],Pc=Pc)\n", + " clust = np.argmin(dist, axis=1)\n", + " clust = np.expand_dims(clust, axis=0)\n", + " points = np.append(points[:,:Pc.shape[0]], clust.T, axis=1)\n", + " # print(points)\n", + " Pc = np.zeros([K,dim])\n", + " index = np.array([])\n", + "\n", + " for n in range(0,2*nb):\n", + " for k in range(0,K):\n", + " index = np.append(index, (clust==k).sum())\n", + " if points[n,-1] == k:\n", + " # print(points)\n", + " # print(Pc)\n", + " Pc[k,:] = np.add(Pc[k,:], points[n,:-1])\n", + "\n", + " for k in range(0,K):\n", + " Pc[k,:] = np.divide(Pc[k,:],index[k])\n", + "\n", + " # print(Pc)\n", + " return Pc, points\n" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 384, "metadata": {}, "outputs": [], "source": [ - "def visualisation(points, Pc=[0,0], dim=2):\n", + "colors=['red', 'green','yellow','blue','purple', 'orange']\n", + "def visualisation(points, Pc=[0,0], dim=2, K=1):\n", " if(dim==2):\n", - " plt.plot(points[:,0], points[:,1], 'o')\n", + " for k in range(0,K):\n", + " for n in range(0,len(points)):\n", + " plt.plot(points[n,0], points[n,1], 'o', color=colors[int(points[n,-1])])\n", " plt.plot(Pc[:,0],Pc[:,1],'r+')\n", " plt.grid(True)\n", " plt.axis([min(mean)-1,max(mean)+1,min(mean)-1,max(mean)+1])" @@ -104,147 +137,54 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 385, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(20, 2)\n" - ] - } - ], + "outputs": [], "source": [ "points = gen_points(mean,sd,nb,dim,clusters)\n", - "print(points.shape)\n", + "# print(points.shape)\n", + "# print(points.mean(axis=0))\n", "# print(points)" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 386, + "metadata": {}, + "outputs": [], + "source": [ + "dist = distance(points,points)\n", + "# print(dist)" + ] + }, + { + "cell_type": "code", + "execution_count": 387, + "metadata": {}, + "outputs": [], + "source": [ + "Pc, clusters = kmeans(points,K=K,nb=nb,dim=dim)\n", + "# print(Pc)\n", + "# print(clusters)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 388, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[[0. 0.39108103 0.34583518 0.70546644 0.3203134 0.3516725\n", - " 0.67971143 0.12125982 0.61902803 0.25895127 1.56135251 1.16925868\n", - " 0.89449237 1.43352053 1.0743239 0.93510189 1.41988547 1.58011875\n", - " 1.08411331 1.18671248]\n", - " [0.39108103 0. 0.41265824 0.31753789 0.20134828 0.1520557\n", - " 0.29442779 0.48416069 0.32820193 0.29379395 1.92061143 1.55795192\n", - " 1.2792717 1.80777689 1.45979562 1.32616725 1.80571725 1.97050583\n", - " 1.47031622 1.56670796]\n", - " [0.34583518 0.41265824 0. 0.62859739 0.21220435 0.49592519\n", - " 0.67380419 0.31854927 0.73773146 0.51626889 1.8336252 1.37308473\n", - " 1.01281801 1.49334278 1.29787751 1.11001289 1.52748312 1.75952011\n", - " 1.30415796 1.42577374]\n", - " [0.70546644 0.31753789 0.62859739 0. 0.44061757 0.42670666\n", - " 0.13916838 0.7887133 0.38129538 0.58971012 2.2340252 1.87432417\n", - " 1.58220205 2.09814273 1.77707512 1.63872881 2.10818677 2.28550213\n", - " 1.78747095 1.88420608]\n", - " [0.3203134 0.20134828 0.21220435 0.44061757 0. 0.30494113\n", - " 0.46740546 0.36865442 0.52868835 0.37372177 1.88068426 1.46844245\n", - " 1.14902285 1.65807412 1.3803439 1.21975293 1.67330997 1.8710176\n", - " 1.38894595 1.49825024]\n", - " [0.3516725 0.1520557 0.49592519 0.42670666 0.30494113 0.\n", - " 0.35637593 0.46606861 0.27034798 0.16380212 1.81240225 1.48388867\n", - " 1.24193007 1.78456017 1.37947088 1.26763783 1.76514842 1.90097935\n", - " 1.39123292 1.47795072]\n", - " [0.67971143 0.29442779 0.67380419 0.13916838 0.46740546 0.35637593\n", - " 0. 0.77794127 0.24735327 0.51809049 2.16596566 1.83655551\n", - " 1.57217378 2.1022043 1.7339787 1.61275974 2.09839429 2.25219229\n", - " 1.74541605 1.83405921]\n", - " [0.12125982 0.48416069 0.31854927 0.7887133 0.36865442 0.46606861\n", - " 0.77794127 0. 0.73558536 0.38006228 1.52663824 1.09978826\n", - " 0.79543522 1.32585453 1.01264344 0.85309758 1.32192905 1.50347121\n", - " 1.02093103 1.13291852]\n", - " [0.61902803 0.32820193 0.73773146 0.38129538 0.52868835 0.27034798\n", - " 0.24735327 0.73558536 0. 0.38834 1.99112336 1.71317083\n", - " 1.50027904 2.04749497 1.6029451 1.51251266 2.01963574 2.13226014\n", - " 1.61597543 1.69022564]\n", - " [0.25895127 0.29379395 0.51626889 0.58971012 0.37372177 0.16380212\n", - " 0.51809049 0.38006228 0.38834 0. 1.64887732 1.33143897\n", - " 1.11366524 1.66342238 1.22437768 1.12471467 1.63153555 1.74982768\n", - " 1.23666771 1.31925162]\n", - " [1.56135251 1.92061143 1.8336252 2.2340252 1.88068426 1.81240225\n", - " 2.16596566 1.52663824 1.99112336 1.64887732 0. 0.58770443\n", - " 1.02271415 1.15136496 0.58808445 0.83705754 0.94499234 0.6037414\n", - " 0.59102406 0.44614399]\n", - " [1.16925868 1.55795192 1.37308473 1.87432417 1.46844245 1.48388867\n", - " 1.83655551 1.09978826 1.71317083 1.33143897 0.58770443 0.\n", - " 0.44427897 0.64604338 0.12332713 0.27518253 0.47328172 0.41918021\n", - " 0.10638777 0.1741561 ]\n", - " [0.89449237 1.2792717 1.01281801 1.58220205 1.14902285 1.24193007\n", - " 1.57217378 0.79543522 1.50027904 1.11366524 1.02271415 0.44427897\n", - " 0. 0.55487036 0.44065169 0.19125029 0.52649414 0.76267241\n", - " 0.43456127 0.57921824]\n", - " [1.43352053 1.80777689 1.49334278 2.09814273 1.65807412 1.78456017\n", - " 2.1022043 1.32585453 2.04749497 1.66342238 1.15136496 0.64604338\n", - " 0.55487036 0. 0.7423045 0.62079242 0.20929273 0.61317826\n", - " 0.7258323 0.81728057]\n", - " [1.0743239 1.45979562 1.29787751 1.77707512 1.3803439 1.37947088\n", - " 1.7339787 1.01264344 1.6029451 1.22437768 0.58808445 0.12332713\n", - " 0.44065169 0.7423045 0. 0.25088095 0.58359133 0.5339439\n", - " 0.01763323 0.14206747]\n", - " [0.93510189 1.32616725 1.11001289 1.63872881 1.21975293 1.26763783\n", - " 1.61275974 0.85309758 1.51251266 1.12471467 0.83705754 0.27518253\n", - " 0.19125029 0.62079242 0.25088095 0. 0.52473292 0.65180514\n", - " 0.24624553 0.3914113 ]\n", - " [1.41988547 1.80571725 1.52748312 2.10818677 1.67330997 1.76514842\n", - " 2.09839429 1.32192905 2.01963574 1.63153555 0.94499234 0.47328172\n", - " 0.52649414 0.20929273 0.58359133 0.52473292 0. 0.40874924\n", - " 0.56617043 0.63624877]\n", - " [1.58011875 1.97050583 1.75952011 2.28550213 1.8710176 1.90097935\n", - " 2.25219229 1.50347121 2.13226014 1.74982768 0.6037414 0.41918021\n", - " 0.76267241 0.61317826 0.5339439 0.65180514 0.40874924 0.\n", - " 0.51939313 0.48569502]\n", - " [1.08411331 1.47031622 1.30415796 1.78747095 1.38894595 1.39123292\n", - " 1.74541605 1.02093103 1.61597543 1.23666771 0.59102406 0.10638777\n", - " 0.43456127 0.7258323 0.01763323 0.24624553 0.56617043 0.51939313\n", - " 0. 0.14516702]\n", - " [1.18671248 1.56670796 1.42577374 1.88420608 1.49825024 1.47795072\n", - " 1.83405921 1.13291852 1.69022564 1.31925162 0.44614399 0.1741561\n", - " 0.57921824 0.81728057 0.14206747 0.3914113 0.63624877 0.48569502\n", - " 0.14516702 0. ]]\n" + "[[ 2.00659379 2.0037594 ]\n", + " [-0.05586229 -0.02372516]]\n", + "[0 2]\n" ] - } - ], - "source": [ - "dist = distance(points,Pc=[0,0])\n", - "print(dist)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[1.2631266 0.8529462 ]\n", - " [1.1325475 1.17318217]]\n" - ] - } - ], - "source": [ - "Pc = kmeans(points,K=2,nb=nb,dim=dim)\n", - "print(Pc)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ + }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGiCAYAAADA0E3hAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAswUlEQVR4nO3df3RU9Z3/8dckhozUJJq4yQw/xBQUDZFA0ODgOQUsMVA225ye41pPKaxVd+XAHtns0YV+e5qmdJu2imiVBT2u5qwsxWK/4Bd/xE4DgaPEzULILiGVVppC184kK9EJhCZOZ+73D0zMmJmQmdxk5k6ej3NydG4+d+aT97kdX72fz+d+bIZhGAIAALCAlHh3AAAAYKQILgAAwDIILgAAwDIILgAAwDIILgAAwDIILgAAwDIILgAAwDIILgAAwDIILgAAwDIILgAAwDKiCi7bt2/X3LlzlZmZqczMTLlcLr355pvDnrNnzx7ddNNNstvtuuWWW/TGG2+MqsMAAGDiiiq4TJs2TT/60Y907NgxHT16VHfeeae++tWv6uTJk2HbHzlyRPfee6/uv/9+HT9+XBUVFaqoqFBra6spnQcAABOLbbSbLGZnZ+uxxx7T/fffP+R399xzj3p6evTaa68NHLv99ts1b9487dixYzQfCwAAJqArYj0xEAhoz5496unpkcvlCtumsbFRlZWVIcfKysq0b9++Yd+7r69PfX19A6+DwaC6urqUk5Mjm80Wa5cBAMA4MgxD58+f15QpU5SSYs602qiDy4kTJ+RyudTb26urrrpKe/fuVUFBQdi2Xq9XeXl5Icfy8vLk9XqH/YyamhpVV1dH2zUAAJCA/vCHP2jatGmmvFfUwWX27NlqaWmRz+fTK6+8ojVr1ujQoUMRw0ssNm3aFHKnxufz6brrrtNvfvMbZWdnm/Y5E43f79fBgwe1dOlSpaWlxbs7lkYtzUMtzUEdzUMtzdPV1aUbb7xRGRkZpr1n1MFl0qRJmjVrliRpwYIF+s///E899dRTevbZZ4e0dTgc6ujoCDnW0dEhh8Mx7Gekp6crPT19yPHs7Gzl5ORE22V8yu/3a/LkycrJyeF/jKNELc1DLc1BHc1DLc1n5jSPUQ84BYPBkPkog7lcLtXX14ccc7vdEefEAAAADCeqOy6bNm3SihUrdN111+n8+fPatWuXGhoa9NZbb0mSVq9eralTp6qmpkaS9PDDD2vx4sXasmWLVq5cqd27d+vo0aN67rnnzP9LAABA0osquHR2dmr16tXyeDzKysrS3Llz9dZbb6m0tFSSdPbs2ZBZw4sWLdKuXbv0ne98R9/+9rd1ww03aN++fSosLDT3rwAAABNCVMHlX//1X4f9fUNDw5Bjd999t+6+++6oOgUAABAOexUBAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLILgAAADLuCLeHQCAsRYIGmpq71Ln+V7lZthVkp+t1BRbvLsFIAYEFwBJra7Vo+r9bfL4egeOObPsqiov0PJCZxx7BiAWDBUBSFp1rR6t3dkcElokyevr1dqdzapr9cSpZwBiRXABkJQCQUPV+9tkhPld/7Hq/W0KBMO1AJCoCC4AklJTe9eQOy2DGZI8vl41tXeNX6cAjBrBBUBS6jwfObTE0g5AYiC4AEhKuRl2U9sBSAwEFwBJqSQ/W84suyIterbp0uqikvzs8ewWgFEiuABISqkpNlWVF0jSkPDS/7qqvIDnuQAWQ3ABkLSWFzq1fVWxHFmhw0GOLLu2ryrmOS6ABfEAOgBJbXmhU6UFDp6cCyQJgguApJeaYpNrZk68uwHABAwVAQAAyyC4AAAAyyC4AAAAyyC4AAAAyyC4AAAAyyC4AAAAyyC4AAAAy4gquNTU1Oi2225TRkaGcnNzVVFRoVOnTg17Tm1trWw2W8iP3c6mZgAAIHpRBZdDhw5p3bp1evfdd+V2u+X3+3XXXXepp6dn2PMyMzPl8XgGfs6cOTOqTgMAgIkpqifn1tXVhbyura1Vbm6ujh07pi996UsRz7PZbHI4HCP+nL6+PvX19Q287u7uliT5/X75/f5ouoxB+mtHDUePWpqHWpqDOpqHWppnLGo4qkf++3w+SVJ29vDbwl+4cEEzZsxQMBhUcXGxfvjDH2rOnDkR29fU1Ki6unrI8YMHD2ry5Mmj6TIkud3u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DIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwjCvi3QFgLAWChprau9R5vle5GXaV5GcrNcUW724BAGJEcEHSqmv1qHp/mzy+3oFjziy7qsoLtLzQGceeAQBixVARklJdq0drdzaHhBZJ8vp6tXZns+paPXHqGQBgNLjjgqQTCBqq3t8mI8zvDEk2SdX721Ra4EioYSOzh7UYJgOQjAguSDpN7V1D7rQMZkjy+HrV1N4l18yc8evYMPqHtf78wR/1jZY39YN5K3TF1CkxD2sxTAYgWTFUhKTTeT5yaIml3VgbPKyVe6FLG975mXIvdMU8rMUwGYBkRnBB0snNsJvabixdblhLujSsFQiGazH27wcAiYahIiSdkvxsObPs8vp6w/4H3CbJkXVpzke8NbV36c8f/FFzLnRJkgo7Tof8U5I6L2SPeFjLisNkABANgguSTmqKTVXlBVq7s1k2KSS89E9NrSovSIiJqp3ne/WNlje14Z2fhRz/cd3TA//+5B33qvP8nSN+PzPbAUCiIbggKS0vdGr7quIhE1QdCTZBNTfDrh/MWyH3rIWSLt1p+XHd0/qn5X+v1ryZkqTOq7L1U5OHvxJhmAwAYkFwQdJaXuhUaYEjoZcEl+Rn64qpU9Tmyw65M9SaN1MnHbOiHtay0jAZAMSCyblIaqkpNrlm5uir86bKNTMnoUKL9NmwlvTZMFa/WIa1zH4/AEg0BBcgzvqHtRxZdnVelX1pTstV2XJk2bV9VXHUw1qD32+wWN8PABIJQ0VAAggd1rpTPx3lsJYVhskAIBYEFyBB9A9rJer7AUAiYKgIAABYBsEFAABYBsEFAABYBsEFAABYBpNzYTmBoMFqGQCYoAgusJS6Vs+Qx/g7E+wx/gCAscNQESyjrtWjtTubh+x+7PX1au3OZtW1euLUMwDAeCG4wBICQUPV+9vC7r/Tf6x6f5sCwXAtAADJguACS2hq7xpyp2UwQ5LH16um9q7x6xQAYNwRXGAJnecjh5ZY2gEArCnq4HL48GGVl5drypQpstls2rdv32XPaWhoUHFxsdLT0zVr1izV1tbG0FWMlUDQUOPpc3q15QM1nj6XkMMtuRn2yzeKoh0AwJqiXlXU09OjoqIifetb39LXvva1y7Zvb2/XypUr9dBDD+nf//3fVV9frwceeEBOp1NlZWUxdRrmscoqnZL8bDmz7PL6esPOc7Hp0u7HJfnZ4901AMA4ijq4rFixQitWrBhx+x07dig/P19btmyRJN188816++23tXXrVoJLnPWv0vl8EOhfpbN9VXHChJfUFJuqygu0dmezbFJIn/uf4FJVXsDzXAAgyY35c1waGxu1bNmykGNlZWXasGFDxHP6+vrU19c38Lq7u1uS5Pf75ff7x6SfE0F/7fx+vwJBQ9/7fycjrtKxSaref1JLbshJmDDw5dnX6umvF+kHb7wnb/dn14cjK13/Z8VN+vLsa8ft+hhcS4wOtTQHdTQPtTTPWNRwzIOL1+tVXl5eyLG8vDx1d3frT3/6k6688soh59TU1Ki6unrI8YMHD2ry5Mlj1teJwu1267c+m7zdqRHbXFql06dnXq7TDVmJNeflnwqk0902dfulzDRpZmaPAmeO6Y0z498Xt9s9/h+apKilOaijeajl6F28eNH090zIJ+du2rRJlZWVA6+7u7s1ffp0LV26VDk5OXHsmbX5/X653W6VlpYq8OsPpbYTlz3ni3Pm6StzE2O4KJEMrmVaWlq8u2Np1NIc1NE81NI8586dM/09xzy4OBwOdXR0hBzr6OhQZmZm2LstkpSenq709PQhx9PS0riITJCWlibn1V8YUVvn1V+g5sPgmjQPtTQHdTQPtRy9sajfmD/HxeVyqb6+PuSY2+2Wy+Ua64/GMPpX6USavWLTpdVFrNIBACSSqIPLhQsX1NLSopaWFkmXlju3tLTo7Nmzki4N86xevXqg/UMPPaTf/e53evTRR/Xee+/pX/7lX/Tzn/9c//AP/2DOX4CY9K/SkTQkvLBKBwCQqKIOLkePHtX8+fM1f/58SVJlZaXmz5+v7373u5Ikj8czEGIkKT8/X6+//rrcbreKioq0ZcsWPf/88yyFTgDLC53avqpYjqzQh7Y5suwJtRQaAIB+Uc9xWbJkiQwj8iqTcE/FXbJkiY4fPx7tR2EcLC90qrTAoab2LnWe71VuxqXhIe60AAASUUKuKsL4Sk2xyTUzeVZrBYIGQQwAkhTBBUnFKlsYAABiw+7QSBr9WxgMDi3SZ1sY1LV64tQzAIBZCC5ICoGgoer9bRG3MJCk6v1tCbnzNQBg5AguSApN7V1D7rQMdmkLg141tXeNX6cAAKZjjguSQuf5yKEllnajxQRhABgbBBckhdwM++UbRdFuNBJtgjAhCkAyIbggKfRvYeD19Yad52LTpQfrjfUWBv0ThD/fh/4JwuP9YL/+EPXnD/6ob7S8qR/MW6Erpk5hlRUAy2KOC5JCImxhkGgThAevssq90KUN7/xMuRe6WGUFwNIILkga8d7CIJEmCCdaiAIAszBUhKQSzy0MEmmCcFN7l/78wR8158KlkFTYcTrkn5LUeSFbTe1dSfXUZADJj+CCpBOvLQwSaYJw5/lefaPlTW1452chx39c9/TAvz95x73qPH/nmPcFAMxEcAFMkigThKVL4egH81bIPWuhpEt3Wn5c97T+afnfqzVvpiSp86ps/XQcQhQAmIngApikf4Lw2p3Nskkh4WW8Jgj3K8nP1hVTp6jNlx3Sj9a8mTrpmDWuIQoAzMTkXMBE8Z4g3C8RVlkBwFjgjgtgsnhOEP58P7avKlb1/jZ1Xsi+NKflqmw52C0bgIURXIAxEK8Jwp8XGqLu1E95ci4AiyO4AEkuUUIUAJiB4IIRYb8bAEAiILjgshJt00AAwMTFqiIMa/B+N4Ox3w0AIB4ILoiI/W4AAImG4IKIEmnTQAAAJIILhpFImwYCACARXDCMRNo0EAAAieCCYfRvGhhp0bNNl1YXsd8NAGC8EFwQEfvdAAASDcEFw0qUTQMBAJB4AB1GIFE2DQQAgOCCEWG/GwBAImCoCAAAWAbBBQAAWAbBBQAAWAZzXDBmAkGDCb0AAFMRXDAm6lo9qt7fFrLXkTPLrqryApZQAwBixlARTFfX6tHanc1DNmj0+nq1dmez6lo9ceoZAMDqCC4wVSBoqHp/m4wwv+s/Vr2/TYFguBYAAAyP4AJTNbV3DbnTMpghyePrVVN71/h1CgCQNAguMFXn+cihJZZ2AAAMRnCBqXIz7JdvFEU7AAAGI7jAVCX52XJm2YfsJt3Ppkuri0rys8ezWwCAJEFwgalSU2yqKi+QpCHhpf91VXkBz3MBAMSE4ALTLS90avuqYjmyQoeDHFl2bV9VzHNcAAAx4wF0GBPLC50qLXDw5FwAgKkILhgzqSk2uWbmxLsbAIAkwlARAACwDIILAACwDIILAACwDIILAACwDIILAACwDIILAACwjJiCy7Zt23T99dfLbrdr4cKFampqiti2trZWNpst5MduZ58aAAAQvaiDy8svv6zKykpVVVWpublZRUVFKisrU2dnZ8RzMjMz5fF4Bn7OnDkzqk4DAICJKerg8sQTT+jBBx/Ufffdp4KCAu3YsUOTJ0/WCy+8EPEcm80mh8Mx8JOXlzeqTgMAgIkpqifnfvLJJzp27Jg2bdo0cCwlJUXLli1TY2NjxPMuXLigGTNmKBgMqri4WD/84Q81Z86ciO37+vrU19c38Lq7u1uS5Pf75ff7o+kyBumvHTUcPWppHmppDupoHmppnrGoYVTB5cMPP1QgEBhyxyQvL0/vvfde2HNmz56tF154QXPnzpXP59Pjjz+uRYsW6eTJk5o2bVrYc2pqalRdXT3k+MGDBzV58uRouoww3G53vLuQNKileailOaijeajl6F28eNH09xzzvYpcLpdcLtfA60WLFunmm2/Ws88+q82bN4c9Z9OmTaqsrBx43d3drenTp2vp0qXKyWHvm1j5/X653W6VlpYqLS0t3t2xNGppHmppDupoHmppnnPnzpn+nlEFl2uvvVapqanq6OgIOd7R0SGHwzGi90hLS9P8+fP1/vvvR2yTnp6u9PT0sOdyEY0edTQPtTQPtTQHdTQPtRy9sahfVJNzJ02apAULFqi+vn7gWDAYVH19fchdleEEAgGdOHFCTqczup4CAIAJL+qhosrKSq1Zs0a33nqrSkpK9OSTT6qnp0f33XefJGn16tWaOnWqampqJEnf//73dfvtt2vWrFn6+OOP9dhjj+nMmTN64IEHzP1LAABA0os6uNxzzz363//9X333u9+V1+vVvHnzVFdXNzBh9+zZs0pJ+exGzkcffaQHH3xQXq9X11xzjRYsWKAjR46ooKDAvL8CAABMCDFNzl2/fr3Wr18f9ncNDQ0hr7du3aqtW7fG8jEAAAAh2KsIAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABYBsEFAABY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", + "image/png": "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", "text/plain": [ "
" ] @@ -254,7 +194,9 @@ } ], "source": [ - "visualisation(points, Pc, dim=dim)" + "visualisation(clusters, Pc, dim=dim, K=K)\n", + "print(Pc)\n", + "print(mean)" ] } ],