{ "cells": [ { "cell_type": "code", "execution_count": 2, "id": "f83f6a03", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import sklearn\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 3, "id": "32405c3b", "metadata": {}, "outputs": [], "source": [ "from sklearn.neighbors import KNeighborsClassifier" ] }, { "cell_type": "code", "execution_count": 4, "id": "4765f8dc", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA4m0lEQVR4nO3dfWxVd37n8c/x47WNwdBFO61tQjoRTai6o4237gR3gC6ebrQMdGcIjRaogvvXBGnbUnXGTdRB2lI1Gs+o0FQC5o8dkh0TKYsy2SakyiZYBWWcpKFM2qlKEjazQ4LdroYuxgY/XsPZPy7HXF/f63ueH98vKf/c63PvCb7y73t/D5+vYZqmKQAAkFk1Ud8AAACIFsUAAAAZRzEAAEDGUQwAAJBxFAMAAGQcxQAAABlHMQAAQMZRDAAAkHEUAwAAZBzFAAAAGUcxAABAxlEMAACQcRQDAABkHMUAAAAZRzEAAEDGUQwAAJBxFAMAAGRcXdQ3ACCZTNPU2FRek7Pzamms0+rmehmGEfVtAXCBYgCAI+PTeb10cUTPv31Fn1yfWnj8vjXNemLTeu3q6tCqpvoI77CAYgWwzzBN04z6JgAkw/nL1/Tk4EVNz92WJBX/8bCG2aaGWh3f16UtG9baek2/B+2kFCtAnFAMALDl/OVr6jv5nkxJy/3VMIxCYXCyr3vZgiCIQTuIYgXIAooBAFWNT+f1yDNDms7fXrYQsBiG1FRfq3ee2lZ2QA9i0Pa7WAGyhNMEAKp66eKIpufsFQJSYTCenrut7/9wZMlz1qA9nb9dGLhLr73733T+tvpOvqfzl69Vfb/x6byeHLxYtRCw7s2U9OTgRY1P5+39DwEpRzEAYFmmaer5t6+4uva54SsqnnwMatB2U6xMzd3Wqb/5xN4FQMpRDABY1thUXp9cn1ryDb4aU9In16d0Y+reQO7nDMO9n3FfrHzr9Y907qOfuroWSBOKAQDLmpyd93T9rbvX+znDUMxtsSIVCpa+kxdsLUUAaUYxAGBZLY3e4khW3L3ezxmGYl6LFfYPABQDAKpY3Vyv+9Y0y+nJf0OFY4JtzYXTBH7NMJTyWqxI1ZcigLSjGACwLMMw9MSm9a6u3d+zfiFAyK8ZhlJui5VSyy1FAGlHMQCgql1dHWpqqJXdYMAao5AT8JWHOxYe82uGYcnzHooVS7WliIrXmaauT87p6vUpXZ+co5hAYtGbAEBVq5rqdXxfl/pOvicZ1UN9JOnEvq5FgUPWoH34zCXH7188w1DOrq4OffuNjwonFRy/+j23Zue1uqWh6s8ReYy0YWYAgC1bNqzVyb5uNdXXypCWfMO3Hmuqr9Vzfd3aXCbdz48ZhnKsYsVrH6JKSxHFzl++pkeeGdLhM5f0aVEhIEmfXp/S4TOX9MgzQ5xQQKIQRwzAkfHpvL7/wxE9N7z0W/H+nsK34pW5yt+KncYGVyosyjn30U/Vd/KC49kBQ9K6Nc0697Wty85AEHmMtKIYAOCKaZq6MZXXrdl5rWisU5uDboN2exOc2NdluxCwHPvrjzXwvz5ydI0h6dCOjerrub/iz/jdnwGIE5YJALhiGIZWtzSoc02zVrc0OGo7vGXDWr3z1DYd2rFR69Y0L3pu3ZpmHdqxUe8+vc1xISBJez9/n5obam3/vN2liCDSE4G4YGYAQKS8zDBU4vdShGma2vqtc/rUYWiS3eUHIGrMDACIlJcZhkr82OxYLKj0RCAuOFoIIJWspYhymx3X2dzsaPEjPdHOkUUgKhQDAGLLNE2NTeU1OTuvlsY6rXa4hLCqqV59Pfdr/6b1npYigkpPBOKCTyiA2PE71MdainD77dxKT3S7Z6BSeiIQF2wgBBArdo8dHt/XFeoZ/u/+4Cc6fOaS42Kg2pFFIA7YQAggNqxTANP5Qqxw6cBrPTadv62+k++FmvIXVHoi4ieLPSeYGQAQC0kI9QkyPRHRy3LPCYoBALGQlGn4INMTEZ24Lk+FhWIAQOSSFurjtT8D4oWeExQDAGLg+uScHj78puvr3//GFyM5xx9EeiLClYTlqTCwgRBA5PwI9YlCEOmJCBc9JwooBgBEjlAfRME0TT3/9hVX1z43fCVVpwwoBgBEzgr1cfq92lBhnZ5QH7jhd8+JJB9JpJwGEDnDMPTEpvU6fOaS42v396xP3fS81xhm2ONXz4k0HElkAyGAWHC6kavGkHIp28iVhkElSfzYuPqj0fFUHEmkGAAQG1kO9cn6OfcoeD3S+l9/4xf1289dSMWRRPYMAIiNLRvW6mRft5rqa2VIS/YQWI811demrhCIawxzmlnLU2483t2pA6d+WLUQ0N3nTUlPDl7U+HR++R+OCMUAgFjZsmGt3nlqmw7t2Kh1a5oXPbduTbMO7diod5/elppCYHw6rycHL6ZmUEkatz0ndPeIYVqOJLJMACC2shDqk5QY5jRznEC4/5d16C//MTGJmXYwMwAgttIe6sM593hwujz1Sx1tvh5JjAOOFgJARKxz7k4VDypRxDCnkbU8Va7nxLqSnhNXXfzOillHEuOEYgAAIuLXOXf4Y1VTvfp67tf+TeuXXZ5KY2Jm/O4IADIijYNKGljLU5UKLSsx0+2egTgmZrJnAEDokhzb6idimJPJy5HEuCZmUlYCCA0Je4sRw5xcu7o69O03PnKcmPmVhzuCvzkXOFoIIBQk7JVHDHNypSkxk2UCAIEjYa+yVU31Or6vq3B8rcoXfev5E/u6KARiIE2JmcwMAAiU02++hlH445m1b752Z05O7OuK9aCSRePT+bJHEu8rOZIYZxQDAAJFwp59aRhUsizJiZkUAwAC47UrXBxjW8OQ5EEFycRpAgCBIWHPnWrn3AG/sYEQwLK8ZAL4kbAHIHjMDAAoy49MABL2gOWZpqmxqbwmZ+fV0lin1REtCbFnAMASfmUCsGcgenEZbLBY3AK4KAYALOK4t3tf97IFAacJohG3wSbuwiya4hjARTEAYEEQmQAk7IUvjoNNXIVdNPldbPuFDYQAFrx0cUTTc/YGbanwx2x67ra+/8ORij9Dwl64SHu07/zla3rkmSEdPnNJn5acevn0+pQOn7mkR54Z8u3faHw6rycHL1YtBHT3eVPSk4MXNT6d9+X9l0MxAEBSYZr0+bevuLr2ueEry54ySFNsa5zFebCJmyiKpiCKbb9QDACQdC8TwOm6YXEmwHK2bFird57apkM7NmrdmuZFz61b06xDOzbq3ae3UQh44Haweeni1Uy1lI6iaAqy2PYD53YASPInE6BaSM6qpnr19dyv/ZvWxzJhL8k7790ONqakP/2rD/XHZz5YeCztmwwXiiabP1/8Dd3tpta4B3BRDACQ5D0T4EcjN9RZ8o2/krgl7KVh573bwUaS5u8sHhat9fJvv/FR6jYZev2Gvn/TelcFYhjFthcsEwCQJK1urtd9a5qXrOfb9Qen/z6Ra89hbyILitfBpliaNxkGvRxWSdwDuCgGAEgqfFt/YtN619fP5O+EstHJT2naee91sCknjZsMo4rIdltsGyrMULU1BzszRTEAYMGurg41NdS6vj6MjU5+SdvOe68zO5WEuaM9DFF9Q/dSbO/vcbc04QTFAIAFq5rqNfDYv3F1rddp1LDF+ZiXG15ndqpJUqG3nCi/oVvFtt1xvcYohEN95eEO1+9pF8UAgEU+19Hm6fokdBqM+zEvt5wONnYlrdBbTpTf0OMcwEUxAGARv6ZRvbQ+rsbra0e1iSxoTgYbN5JQ6NkR5Tf0uAZwcbQQwCLWNKrbToOGUWhOFMQxPb+OAMb9mJcX1mBTqTeBF2lpKW0VTX0n35OM6j0CJH+/oVsBXN//4YieG178WV63pln7ewqf5ZU5uhYCiJDbToN7fmWdXn5/NJAGOX4237k+OaeHD7/p6P2Lvf+NL3oqBsIINxqfzpcdbOpqjCW5AtWktaW03c/UiX1dgX1DN00zFgFcFAMAlnDTabC+tkZz83dsfdNy2o3N705vpmlq67fOuZ79cDsoRhFuVDrYvPz+iA6f+YCW0ndVKprui+gbelQoBgCU5XQArq+t0dztO761PrYE0VZZcj/74XZQjEtbYVpKlxeXb+hRYQMhgLKcbHT6z93rNDdvrxCQnB3TC+oIYJibyOIUbhTnHe1RsiKyO9c0a3VLQ6YKAYliAMAy7HQafOepf68f/O9/cfX61Y7pBXkEMKxBMY7hRnHd0Y7opGNrKIDAVOs0eH1yzvdubNYGu3+6MR1op7dqO+8Xpu/r3W8ii6JDnh1x3NGO6FAMALClUqdBP4/pVdpg58drVxLkoBhVhzy74t5SGuGhGADgiV8hRaUb7Pxg91x8UINi3HvYW+LWUhrhY88AAE/8yHqvtsHOKbc58n5vIouqQx7gFMUAAE+8Zr1PzMzb3mDn9LWjnuqOew97wEIxAGRIUP0CvBzTc3p00MlrRy3uPewBC2UnkAFBJ9+5zXpfmatzvcGu2mvH4Vy8NWty+Mwlx9fGYWYD2UECIZByYSbfOc1699ojYLnXjos4Jf6F0RMByUQxAKSY35n+djjJer96fUpfGPhrT+9X6bXjxOnvwe+gnyh6IiBZKAaAlAoq098uO1nvXmcGzvyXX1V7W1MizsVH1SEvLj0REG9sIARSKqhMf7vsHNPzusHuF39uZWJy5O1EO7/79DbfC4G49ERAvDEzAKRQVC163Qi7e2AchNEhz++ZIa/7DdivEG+cJgBSKCnJd1LhWOK33/jI8Qa7OBwddCuMxD+/eiJ43W/AfoVkYGYASCGvG/Pe+vqvqbNkKjtIUW+wSxu/Zoa87jdgv0JysGcASCE/ku+CCigqh5a6/rJmhpz+xopnhrzuN2C/QrIwMwCkkJdvhu2rm9S3ab3++zufhD6t6+RYIirzOjP0V7/zq3rsxDuu9xtEfZIFzlEMACnldmNeXa2h+duFq6Ka1g1jg12aeT2y+bVf/wV9+42PXG/qzOKm0KRjmQBIKaf9AgwVBv/8bTPyaV2/uwdmjZcjm+tWN+nFv73q6n2fG76iO3fuuI6Yfm74SqDLUaiMYgBIKatfgCFVLQisQsAO0yz87JODFzU+nfd2kwiEl06Sj/9yp+PlJenefoMr/2/K834FhI9iAEgxuxvz6mqdfYf0O6AI/nPbSfLXHvrXnt73X27Nerr+1uy8p+vhDsUAkHLVku++8aWN+kxrzvGUssS0bpw5mhkq6vb4mZU5T+/7r1Y0erp+hceTMHCHf3UgA1Y11auv537t37R+yca8sam8/thFi90oAorgjDUzVPWsf/29ngimaeq+Nc2uMwrW/0yzp+vbmjlNEAVmBoAMKbcxb9LjtCzTuvHmtCeCl/0G+3vWq6amxtP1bBaNBjMDQMb5EVCEeFtuZqjc4Os1IjqLEdNJx8wAkHFeOwcyrZscdo9sOtlvIBU2lJ7Y17UQGOR2vwKBQ9GhGAAyzuu0sDWghBlfjOBZ+w0aaqsPEw11NUv2BxAxnSwkEAJwHB9rTeu+89Q2SQqtK52bNri0znXP6i9wp8pnwmogdbKve0kyJRHTyUAxAECSu86BVvhQ0F3p3LTBpXWuN373FyBiOt4oBgAssNty9sS+LpmSo+Kh3LdGP++puOCgda539BfIFooBAIvYmdY1TYXSlc7pbMXJvm5J4RQpaeal6+W6Nc0697WtfOtPGIoBAGUtN60bxrdGN9PUubpaSaZm5u/QOtcDr10P3//GFwmiShhOEwAoq9IxNNM0Q+lK99LFEU3P2SsECvdV6Kg4nbdXCCxcQ4+FJQiiyh6KAQCOjE3lA+9K56XgcIMeC4sRRJU9FAMAHAnjW6PbgsMNWucuRRBV9lAMAHAkjG+NXgsON5javsevICokB8UAAEfC+NboteBwg6ntxXZ1daipodZWHLFUCKJqaqC/QFJRDABwJIxvjW4LDjfSMrXtdxx0cX8Bu+gvkFyUwgAcC7ornVVw/PGZSx7v1J4kT20HmbS4ZcNa/f4XN+jbb1yu+rO//8UN9BdIMGYGADgWRle6z6zKObonq+lNU31NZqa2z1++pkeeGdLhM5f0aVEhIEmfXp/S4TOX9Pk/HdK5j37q+vX/7M3LVWcHDEl/9uZlnb98zdX7IHoUAwBcCbIr3fh0Xn9w+u8d3Y8p6c8e/5xO/Na/y0TrXCudcTp/u5C2WPK89dh0/rb2n7ygp7//Dxqftn9iYnw6rycHL5Z97VLWzzw5eNHReyA+KAYAuLZlw1q989Q2HdqxUevWNC96bt2aZh3asVHvPr3N8fSxFTjk1P8dn8lE69xFA7XNrQEvvPepPv+nZ21/e3cV+kSAU2IRRwzAF351pfMrFz/NrXPdxEFbaozq/RjoTZA9bCAE4AsrvthrJr0VOORUcXjQ6pYGrWqqV1/P/dq/aX2qWud6TWe8Yxam85frx+DX7wDJwTIBgFjxO+GwUo+FpPIjnbHadD69CbKHYgBArJCLvzy/0hmX68fA7yB7KAYAxAq5+MvzI52xWj8GfgfZQzEAIFbIxV+en+mMlabz+R1kD8UAgNghF78yLwN1qeWm8/kdZAvFAIDYCSPhMMmcDtSl7Ezn8zvIFooBIMFM09TYzJhGb41qbGbMc3OaOMlCeJBbbpoIlbIznc/vIDsIHQISaGJuQq98/Ipe+PAFXb15deHxztZO7Xlwj3Y+sFMrG1YGfh+maWpsKq/J2Xm1NNZpdQBn+NMcHuTV+cvX9NXvXdR03n5ao9U0armcgVL8DtKPYgBImOHRYR08d1Az8zOSJLPoxLlx97tbri6nI1uPqKe9x9V7VBvkg+yUt9w9pSk8yC/j03kNvP6hTv3Np1V/1jAK3+Tdfovnd5BeFANAggyPDuvA0AGZprmoCChlyJBhGDq27ZijgsDOIP93V2/oycGLC70Diu/CGhaaGmp1fF/XspG38Ne5j35a+L3k7yx5rvj3cmJfF9P5WIJiAEiIibkJ9Z7u1cz8zLKFgMWQoVxdTmd3n7W1ZHD+8rWqg3xDXY3yt+9UbZBjfQOtloEPfzGdD7coBoCEGLw0qIELA7YKAYshQ/3d/dr70N5lf85qh+ukC17V9zYKG8ucrE3DH0znwylOEwAJYJqmXvjwBVfXnvrg1LKnDNy0w7WDlrbRSVs/BgSPYgBIgBuzN3T15lVHswJSYXPh1ZtXNT47XvFnnPatd2q5DHwA8UAxACTA1LzzdrLFJucnyz7utR1uNdUy8AHEA8UAkADNdc2erm+payn7uB/tcO2gpS0QbxQDQAK0Nbaps7VzIUfALkOGOls7tapxVdnn/WqHWw0tbYF4oxgAEsAwDO15cI+ra/c+tLfiBjI/2uEuh5a2yWWapq5Pzunq9Sldn5xj30fKUa4DCbHzgZ169v1nbecM1KhGjXWN2vHZHRV/xmqH+2mASwVpbGkbRgxzVKJIl0T0yBkAEsRpAuHxbce1qX3Tsq/53R/8RIfPXPK9GHCTgR/3QTbtA6Wd4CnSJdOJYgBIGLu9CY5uPVq1EJAKA9wjzwxpOu/f8UKnGfhJGGTTPlDaDZ4iXTKdKAZ8YJqmbsze0NT8lJrrmtXW2BarbzNIn4m5Cb3641d16oNTS7oW7n1or3Z+dqdaG1ptv56TgUBmIZZ4br6QgV9pULSbgZ+EQTbtA6XTgpB0yfShGPAgLm1kkV2maWp8dlyT85NqqWvRqsZVrgtRu4PyiX1d+lxnmy8Z+GEPsm6WIbIwULpZKjIkHdqxUX099wd1WwgRxYBLYbSRBcLmtNGNlwz8MAdZL8sQaR8oTdPU1m+dc7yJ1JC0bk2zzn1tKzOhKUAx4ELQbWSBqFUb5P1YGgtrkPWyDJGFgfL65JwePvym6+vf/8YXtbqlwcc7QhTIGXBoYm5CB88drFoISIXZAtM0dfDcQU3MTYR0h4B3lRrdTMxNaPDSoLa/vF2bX9ysR196VJtf3KztL2/X4KVB259zLzHITnodWMsQ0/nbhaWI0vu4+990/rb6Tr6n85evLXrebUJjkmKYvQZPkS6ZDhQDDr3y8Su2z3lLhYJgZn5Gr/741YDvDAjW8Oiwek/3auDCgEZuLu5EOHJzRAMXBtR7ulfDo8NVXyuMQdZJN0bTLLz2k4MXNT5977WzMFB6DZ4iXTIdKAYcCLKNLBBn1tKYVQiXFsPWYzPzMzowdKBqQeB1kP3n8emqP+O0G2O5lstZGCit4CmnixmkS6YLxYADQbaRBeIqiKUxr4PsruPvLJnSX3QfPi1DZGGgNAxDT2xa7+raNKZLZhXFgANBtZFFMEzT1NjMmEZvjWpsZoyZGZeCWBpzO8haZubLr/Fb/FqGyMpAuaurQ00NtbJ7uzVGYdPlVx7uCPbGEBqKAQeCaiMLf/m1yQ3BLY15GWQL91V+jd/i51p/FgbKVU31Or6vS4ZU9f/Tev7Evq7E5CigOooBB4JqIwv/+LnJDcEujTkdZJe8R5k1foufa/1ZGSi3bFirk33daqqvLfy/ljxvPdZUX2s7ZhrJQTHgQFBtZOEPvze5IdilseJB1otyRw39XuvPykC5ZcNavfPUNh3asVHr1iyeCV23plmHdmzUu09vS+z/HyojdMihibkJ9Z7uddxG9uzus0QTB8jp78WQoVxdjt9LFWMzY9r84mbX17/1+Ftqy7Ut+zPnL1/TV7/3t5rO33H9PuWCb4IINXKa0JhkXtIlkTzxP/cSMysbVurI1iM6MHRAMrXswGOoEKh+dOtRBpyAednktvehvQHfXXJZS2MjN0ccLRUYMtTR2mFraWzLhrV66UCP/uOfv+X6Pm/Nzi8pBnZ1dejbb3xkO+7Yarm83Fr/qqZ69fXcr/2b1qd+oLSCp0gXzAaWCVzoae/RsW3HlKvLFSKHSyYNrcdydTlb/eThDfkPwQlraewzK3Ou3sNS7jx/kGv9lRIagaSiGHCpp71HZ3efVX93vzpaF3+T6GjtUH93v4Z2D1EIhID8h2DtfGDnQuFrR41qlKvLacdnd9h+j6DO82dlrR/wij0DPvCzjSycG701qkdfetT19a/vel3tK9p9vKP0cdqcy82MWJCNi7K01g+4QTGAxAtjkxvst+0+uvWoqxkxpy2NrTV+Jy2N2RQHlMcyARKP/IdwBL00FsZ5ftb6w2Oapq5Pzunq9Sldn5xjb07MMTOAVBi8NKiBCwOOd7z3d/dzmsCFIJfGzl++picHL2p67nbhvYqes96hqaFWJ/Z1ZWaN3zRNjU3lNTmb19xtU/U1hlbk6rU6hjMb49N5vXRxRM+/vXRJ5olNhSWZpAUyZQHFAFKB/Id0YY2/wBpYvzv8E42MLe3U2NnWpL5fvT82A6zdQu74vi5tyUghlxQUA0iNMDa5IVxZXuO3BtapuwPrcppjMMCev3xNfSffkyktu+fDKMSv6GRfNwVBjFAMIFWC3uQGhGFhYDVle+GrxohugHW6+dMwCsc5nWz+RLDYQIhUIf8BUfBzs9z4dF5PDl50VAhI0h2zchfHoL10cUTTc/YKAWn5JlOIBjMDSC3yH8JhmqZuzN7Q1PyUmuua1dbYlpl/5yA2y7nJW7DYzV3wk2ma2vqtc/r0+pTjjIh1a5p17mtbM/N5iTOKAWRWlgcxP0zMTeiVj1/RCx++oKs3ry483tnaqT0P7tHOB3amenNmEJvl3A6sxe4LeYC9Pjmnhw+/6fr6ck2mED4aFSFzsj6I+aF0b0axkZsjGrgwoGfff1ZHth5RT3tPBHcYrEWb5co8bz02nb+tvpPv2V7LH5vKL5phcOOT61O6MZUPbYCdnJ33dH25JlMIH3sGkCnDo8PqPd2rgQsDGrm5eL3SGsR6T/dqeHQ4ojuMP+vUhnWMs/TkhvXYzPyMDgwdSN2/5cKavpbfNa+7z5uyv5bvdWC13PLpdexoKdMkyolyTaYQPooBZEbWBzE/TMxN6OC5g1WPb0p3/z1NUwfPHdTE3ERIdxi8IDfLeR1YLWEOsEE1mUK4KAaQCQxi/njl41dsBztJWiiuXv3xqwHfWThM09Tzb19xde1zw1eqnjJwO7AWC3uANQxDT2xa7+ra/T3r2acTExQDyISsD2J+ME1TL3z4gqtrT31wKhXZ9NaavtP/E1P31vKX42VglQrftqMYYHd1daipobZqTwlLjVHYXPmVhzuq/zBCQTGA1GMQ88eN2Ru6evOqo/4PUqGwunrzqsZnxwO6s/D4sVmumoWB1eFrG4pugA2jyRSCRTGA1GMQ88fUvLdd7pPzkz7dSXTC2Cy3MLAaclQQGEa0A+yWDWt1sq9bTfWFQqb03q3Hmupr9VxfdyybTGW50yLbOJF6fgxibWrz52YSrLmu2dP1LXUtPt2JP+51ApxXS2OdrQ6A1pq+24Adu2v51sBq5RhUe6/mmHRx3LJhrd55alvZJlPrYtxkik6LhA4hA8ZmxrT5xc2ur3/r8bfUlmvz74YSyjRNbX95u0ZujjhuFd3R2qHXvvxaLDaLef3D7yYh0G0yoNW98b/9oHLXwt/+wv2xHGCT0mSKTosFFANIvbQMYnEweGlQAxcGHP879nf3a+9DewO8M3v8+MPvtClPjSHlPDbluTew5jV/21RtjaHWXH1sB9ikoNPiPewZQOoZhqE9D+5xde3eh/byx7bIzgd2KleXW+gAWU2NapSry2nHZ3cEfGfVWX/4p/O3yyYHWo9ZqYHnL18r+zpRbJYzDEOrWxrUuaZF969doXU/06LVLQ18Nj0IMjwqiSgGEAnTNDU2M6bRW6MamxkLfKNOkgexOFnZsFJHth6RYRhV/y0NFb5OHd16NPJ4Z7//8Kdhs1zW0WlxMZYJEKoo+wJYCYTVgocMGTIMQ8e3HU91q2MvjZpKexMU/3taRUKuLqejW4/G4t8wqHV+a02/dLPcfTHeLAc6LZZDMYDQ2B1Agmxuk7RBLAh+FWQTcxN69cev6tQHp5a8zt6H9mrnZ3eqtaE1kP8HJ8L4w5+UzXIooNPiUhQDCIXTb+XHth0LrCBIyiAWhCAKMtM0NT47rsn5SbXUtWhV46pYDYT84Uepq9en9IWBv3Z9/Vtf/zV1rvF21DZuKAYQuIm5CfWe7rUdB2zIUK4up7O7zwa61hz3QcxvcSrIwsQffpSiQFyKDYQIXFz7AhiGobZcm9pXtKstZ3+9PImibNQUdaobLXZRik6LS/EpR6C89gXY8+CeVA/SYfFSkLnNB4hLqltYqYFIDqsh1OEzlxxfm9ZOi8wMIFD0BYheFI2azl++pkeeGdLhM5f06fXFcdCfXp/S4TOX9MgzQxXP8vuJFrsoh06Li1EMpFTY5/groblN9MIuyPwK9/FTlv/wR71ME1d0WlyMZYKUifIcfzlpa26TRGE2anIa7iOjEO7jJarXDusPf9/J9ySjevSslPw//HFZpomz0oZQUoWI6vp4NIIKEqcJUiQO5/hL0RcgemE2agqziY8bdnsTJP0PP813nCE8imIgNeJ8bCzpzW2SLqyCLCmpbmn/w0/zHfeyHB5FMZACcT3H7/b+alSjxrrG0O5P8hbNmwRhFGRJO7udxj/8TjsqGkZhCjzoZRrEHxsIUyCu5/gtcW5uMzE3ocFLg9r+8nZtfnGzHn3pUW1+cbO2v7xdg5cGfTlnHwdhNGqanJ13e3uSpFser3fqXifA5tR0AKT5DtyiGEi4KI6NudHT3qNj244tDEilg5L1WK4uF1qDoOHRYfWe7tXAhQGN3Fz8x3Dk5ogGLgyo93SvhkeHA7+XoIVRkBHuEy3TNPX821dcXfvc8BVOGWQcxUDCJekcf097j87uPqv+7n51tC4+stXR2qH+7n4N7R4KrRA4MHRgYUal9N/PemxmfkYHhg6koiAIuiAj1S1aY1N5feJwv4ZU2Fz4yfUp3Zgq364Z2UApnnBhHhvzw8qGldr70F7teXBPZH0BnEbzypQOnjsY6h6GoFgFWblGTR2tHZ4aNZHqFi0/lmnSlrcP+ygGEmxibkKv/fg1T68R1Tl+qy9AmIWIJYpo3jgJsiDb1dWhb7/xke0NbDWGlKtPR7hP1FimgRcsEySUtd79F3/3F66uN2Sos7VTqxpX+Xxn8ZaUPRZhCKJRE6lu0WGZBl5QDCRQ8Xq3F3sf2pu5qdkk7bFIKivVram+tlAUlDxvPdZUX6vn+roTHe4TJ/RggBcUAwnjZL27EjfHxtKCXgnh2LJhrd55apsO7diodWsWR1KvW9OsQzs26t2nt1EI+CzLPRjgDYtECeN0vbtU2Of444ZeCeFZ1VSvvp77tX/T+tSF+8RVFnswwB/MDCSIl/VuSaGf44+jtsY2dbZ22g7fsWR1j4Uf0hjuE2cs08ANioEEcbvebfmdf/s7oZ3jjyvDMLTnwT2urs3iHgskE8s0cIreBAkxMTeh7/3j93TiRydcv8bru15X+4p2H+8qmZLQKwHwSxp7MMB/zAwkgHWM8Ds/+o6n12G9uyDOvRIAv7FMAzsoBmKuNDbXDda7l3ITzWuapsZmxjR6a1RjM2OpyhwAkG0sE8SY0+nsSpy2os2SibmJstG8na2dC9G8pky98vEreuHDF5b8zJ4H92jnAzuZNQCQaBQDMeamB30p1rvtMU2zbDTv8OiwDp47uBDwVPy7sGYTcnU5Hdl6RD3tPZHcOwB4FWkxYJqmbsze0NT8lJrrmtXW6E8kahqYpqntL2/XyM0RT8sDhmFk+iihF9YSTbWAJ+vf+di2YxQEABIpkmJgYm6CadcqxmbGtPnFzZ5eo6muSUe3HqUQcMHpEo21v4AZGABJFPoGQmtn/MCFAY3cHFn03MjNEQ1cGFDv6d5U9I/3wmts7lc/99XMZwp44aWzIQAkTajFQOnO+NI/tNZjM/MzOjB0INMFgdfY3L0P7nXVkx50NgSQPaEVA04a7JgyZZqmDp47qIm5iZDuMF6IzY0OnQ0BZE1oxQDTrs4QmxsdOhsCyJpQigGmXd3Z+cDOhVAcO7LcmthPdDYEkDWhFANMu7pDbG40WKIBkDWhFANMu7rnJjYX3rBEAyBrQikGmHb1pqe9R2d3n1V/d786WjsWPdfR2qH+7n6OEfqMJRoAWRJK6JDbND1DhjpaO/Tal19L1LetIJMVK8Xmwn9OEwiZmQGQVKElELrJ2U9agx2SFaPndyFmtzcBSY/hMk1TY1N5Tc7Oq6WxTqub6ymKAQ9CKwacxrsmrcEODW2iYQ3+P536qc5fPa+XP35ZI7fuJVv6UYjZ6WxIwFM4xqfzeuniiJ5/+4o+uX5vL9J9a5r1xKb12tXVoVVN9RHeIZBMofYmSOu0a9Ib2iSxYVSlWZhS5Qoxt/+/LNH4y+nv4fzla3py8KKm524Xri96zrqqqaFWx/d1acuGtcHdOJBCoTcqStu0a5Ib2iR1WaP4M2R32cn6bD224TG9+8/vLvr//dmWn9VjGx7T47/wOMcCQ+Dmc3f+8jX1nXxPpqTl/mIZhRO2OtnXTUEAOBBZ18K0TLsmdS9EUpc17M7CLMeQUfZaQ4Ye2/CYfq/r92JZBKWBm8/d+HRejzwzpOn87WULgYXXMaSm+lq989Q2lgwAmyIpBixJn3ZN6imJpC5rOJ2FcauhpkHP/vtnbf0/J3GJJSpuP3ff/cFPdPjMJUe/cUPSoR0b1ddzv+f7BrIg0mIg6cZmxrT5xc2ur3/r8bfUlmvz74ZsSPKyhptZGLcMGTree7xiQZDUJZaouP3cvfnYm9r55z/Up9enHBcD69Y069zXtlKcATaE2sI4bZKYrJjUhlFe+lu4ej9V7po5PDqs3tO9GrgwoJGbI4ueG7k5ooELA+o93ZvpFtyl3H7uXrz0mj5xWAgUrpc+uT6lG1N5x/cKZBHFgAdJS1ZMcsMot/0tvJien15SBFlT3dbAVno/1mMz8zM6MHSAgkDePnf/48O/9PTet2bnPV0PZAXFgAdJa2iT5IZRXmdh3CougibmJnTw3EFbmxdNmTLNyrMLWeLlc/fPU1c8vfeKxjpP1wNZQTHgQdIa2iRxWcPidRbGreIiKKlLLFHz8rkzaqfUvrrBYbld2DNw35pmtTVzmgCwg2LAoyQ1tEnaskYxt7Mwfpicn0z0EkvUvHzuDEPa8yvtrq7d37OezYOATRQDHq1sWKkjW4/IMJa2Fy5lqJCIcnTr0Uh2midtWWPRPXiYhfGqpa4l0UssUfP6udvX/YCaGmpld1yvMQpJhF95uKP6DwOQRDHgi572Hh3bdmxhhqD0j571WK4uF2nEctKWNUo5nYXxqrgISvISS9S8fu5WNTfo+L4uGVLVgsB6/sS+LgKHAAcoBnzS096js7vPqr+7Xx2ti7+RdLR2qL+7X0O7hyKPWI7jsoZpmhqbGdPorVGNzYxVnFJ3MgvjF6sISvISSxx4/dxt2bBWJ/u61VRfWygKSn7eeqypvlbP9XVrM1HEgCOEDgUg7smKcWkY5Ta4Z7lIW7+Uds1MatpknPjxuRufzuv7PxzRc8NLuxbu7yl0LVyZY0YAcIpiIKOibhjltTdCpf4WP9fyc/qnyX/ydG+VBqOg+lBYkcaT+Unl7+RVX1OvlvqWVEYb+/W5M01TN6byujU7rxWNdWprrk/dvxUQJoqBDIuqYZSfvRFKZ2FWNqzUl/7nlxx/gy/WVNdUdjByGqlbOrtQypoZGfxgUKO3Rpc8376iXfse2pe6aOM0NSoD0oJiAKEua4TRG8FtD4O2xjZ99XNfXXYw8muJxfqGPD0/XfW+muqaYtc90g9xX04DsoQNhJBhGGrLtal9RbvacsFOTYcR3ON0s5ohQ011TTrz5TPa+9DeZb+V+nFypDjS2I7p+elURhuH+bkDsDxmBjIuzBa8bjfhSYUpZCeb8ILeJOl2qttLG+amuqZYdI8EkD4UAxkVRQvesFs+h7FJ0ulUt5c2zHY2IwKAGxQDGeR1J79bo7dG9ehLj7q+/k96/kS/8cBvOLomTpvVvMyMWJzOkACAHRQDGePnTn6nvM4MeJkmj8NmNa///xanMyQAUA0bCDMk6ha8XpsNeekAGIfNan61Yc5ytDGAYFAMZEjULXitjHoviYFJ7gDoVxvmrEcbA/AfxUBGxKUF784HdipXm3N1bdI7APrRhjnq7pEA0oliICPi0oJ3ZcNK/dHn/8jTayR1mtxrG2ZDRiy6RwJIH4qBjIhTC97NHd420SV5mtxtG2YryCjI7pEAsotiICPi1ILX7XS5ISPx0+Ru2zAbhqGjW48SOAQgEBQDGRGnAdjLdHkapsmLI43taKprWpKQaJqmxmbGNHprVGMzY4ndVAkgHsgZyJCgWvC64XcHwCSyApG+d+l7FbsW/tbG31oUjOQ1OTLM+GkAyUExkCFxG4CD7h9gifsAaAUi3crf0u07t1VbU6sV9SuWBCN5SY6MIn4aQHJQDAQkrgNQWAOwk/sJqn9AmgZAL8mRQcVPx/UzDsA5igGfJWEACqOBjxNB9A+Iqv9CEJzO6FgnD87uPqt/uPYPvsdPJ+EzDsAZigEfJWkAilMDH4tf/QOi7L8QBLd7PX734d/Vd370HVdFRKXBPEmfcQD2UQz4JKkDUBwa+PjJy7foOH6bddvp0JChVY2rdGP2hqP3W27DaFI/4wCq42ihD6JuAORFHBr4+Cnq/gt+85Ic6bQQsJSLn07yZxxAdRQDPkjbABQWv8/Kx6X/gp/86nRoV6X4aT7jQLrVRX0DSed1ANrz4J7Efxt3KqgNaNa3aKeKB8C2XJvj64PkV6dDpybnJ9WmNkl8xoEsYGbAo7g0AEqK4dFh9Z7u1cCFAY3cHFn03MjNEQ1cGFDv6V4Njw47fu049V/wi5fkSC+K46f5jAPpRzHgURoHIDusKf6RmyP6yfhPNHJzpOpUv7UBzZpuLh1crMdm5md0YOiA44IgTv0X/OIlurmtsc2X+OmsfsaBLGGZwKM0DkDLsab4Bz8YrBihu++hfUum+p1uQJMpHTx30NEuf+tbtJud9x2tHbFtgLTzgZ169v1nHSdHPrHxCT37/rOO36+0/0PWPuNAFjEz4FGcGgAFzZri/+aFb5YtBCRp9Naovnnhm0um+sPYgOblW/T2n9+uG7M3YrmJ0EmnQ0OGZEhHtx7Vbz74m47aJdeopmyb5Cx9xoGsohjwKCsd+Iqn+O2Ynp9emOoPc5f/zgd2OhoApULhceLvT2jzi5u1/eXtGrw0GLsjccWdDg0tLQqsx3J1uYUIabdFROlMTFY+40CWETrkg7g1APKb0/+/YrnanL77H76rPX/lbjCRpLcef8vRLn+74TjlxD1Fz01ypB/x02n/jANZRzHgk7g1APKTmzhcP72+63W1r2h3dM1yA6AdcU/Rc5oc6Uf8dJo/40DWUQz4KG4NgPzgNg7XT05nBiyVBkC74h5V7IbX+Ok0fsYBUAz4Lo4NgLwYmxnT5hc3R/Le1i7/1778mqd1Z2sAPPXBKZ340QnH91Apqz+r0vYZB0AxEJi0NAAavTWqR196NJL39nMg9tLwx4+CJI3S8hkHQM5AYKwGQFaka1JFFYdrbUArPebmVhqjiqOWls84AI4Wogq3Z8y9WO6Ym1uk6AFAZRQDkFS5g6CXM+ZOlTsr7xdS9ACgMpYJMs5OB0GncbhudbR2BLYBLa1RxQDgBzYQZpjdY2JHth6RJNdBPnac+U9ntG7lukA3oLnJS+A0AYAsYJkgo5x2EJS0EIfrJyu/PuhCQHIeVVwpqx8A0oZiIIOcdhA0TVMHzx3UL639JZ3dfVZ/2P2HjhMBlxNWfr1fWf0AkDYsE2SQH9Pl1hnzW/lbun3ntmpramWapna9uiv2+fV+pOiZpqkbszc0NT+l5rpmtTW2ccYeQGJRDGRM0OE7Scmvd5uiZ2fDJTMJAJKGYiBjvMYL2+kTkKT8eicpek42XMaxuREAVEIxkDFe44XtdhBMW3690xkPP7sdsiQBIGgUAxkTxsxAsTTk10/MTaj3dK/tvRB+dTtkSQJAWDhNkDFu44WtI4BOw3es/Pr2Fe1qyyXzG+0rH7/iKHDJOpL56o9fdf2ew6PD6j3dq4ELAxq5ObLouZGbIxq4MKDe070aHh12/R4AYKEYyBgv8cJhHQGME9M09cKHL7i69tQHp+Rm4s1pBgQFAQCvKAYyiPAd+6xuh05TF4u7HTrhNgNiYm7C0fsAQDGKgQwifMe+sLsdRrEkAQAUAxnV096zEC9sdQssFmQHwSQJs9thFEsSACDRtTDTetp7dHb32bJHAIPsIJgUE3MTOvN/zqjWqNVt87aja910O7SWJJwqXpJwctIDACwUAxm3smGl9j60V3se3JP4I4B+Kg4Yctul0emGSz+WJNrU5uk1AGQTxQAk3TsCyGBiP2CoEqvngtMNl2EuSQBAMfYMAEWc7OYvx8uGy7AzIADAQjEAFHG6m7+Y1w2XZEAAiArFAHCXl938tUatvv7LX9fQ7iFPJy/IgCj8HsZmxjR6a1RjM2OckgBCwJ4B4C63u/kl6bZ5W1/6+S95PnlhZUAcGDogmVp2hiJtGRD0YgCiw8wAcFfYAUOVZDEDgl4MQLQoBoC74rSb38qA6O/uV0drx6LnOlo71N/d73lJIi7oxQBEjxbGwF2maWr7y9s1cnPE0QZCK2DotS+/FsgmvjS0ga4kqvbQABZjZgC4K667+dPQBroSejEA8UAxABRhN3946MUAxAfFAFCEjo7hCbs9NIDKKAaAElnczR+FuJzeAEDOAFAWHR2DF6fTG0DWcZoAgTJNUzdmb2hqfkrNdc1qa0zeBrg07+aPUlxPbwBZxMwAApGmNDk6OgbDOr0xcGHA8bX0YgD8xcwAfDc8OqyD5w5qZn5G0uJIXWv9PVeX05GtR9TT3hPJPSIenOYMWO2hyRkA/MUGQviKNLl4imvzH05vAPHAzAB8Q5pc/CRlucbubNLRrUc5vQEEgGIAvhm8NKiBCwOON4P1d/dr70N7A7yzbEracs3E3ETZ0xudrZ2c3gACRjEAX7AzPF6s5RrTXLpUU8yQIcMwdGzbsVgUBBKnN4AosGcAviBNLj4m5iZ08NzBqoWAdHcPh2nq4LmDmpibCOkOl5fmXgxAXFEMwBekycUHzX8AOEUxAF+QJhcPNP8B4AbFAHzR1timztZO293+LIYMdbZ2alXjqoDuLFtYrgHgBsUAfGGlyblBmpx/WK4B4AbFAHyz84GdC53+7KhRjXJ1Oe347I6A7yw7WK4B4AbFQMqFmTxHmlz0WK4B4AaNilIqquS5nvYeHdt2jDS5iND8p7o0dNIE/EboUArFIXmONLno0PynvKREMwNRoBhImbglz5EmFw2nn4Pj246nepYmDgUyEGcUAylCoyAUo/lPQdwKZCCO2ECYIiTPoVhPe4/O7j6r/u5+dbR2LHquo7VD/d39Gto9lOpCIOnRzEBYmBlICRoFRSvum9KyulxDJ03AHk4TpISVPOdUcfJcW67N/xtLuaRsSrOa/7SpLepbCY3XaOY9D+7JRMEESCwTpAbJc+EbHh1W7+leDVwY0MjNkUXPjdwc0cCFAfWe7tXw6HBEd5htRDMD9lEMpATJc+GyNqVZezRKBxzrsZn5GR0YOkBBEAEKZMA+ioGUIHkuPGxKSwYKZMA+ioGUoFFQeDi1kQwUyIB9FAMpQqOg4HndlMbhnfBQIAP2UQykCI2CgsemtGShQAbsoRhIGatRkPUHsPSPoPVYri6X+gjaILApLVkokAF7KAZSyI/kuTBbHycJm9KShwIZqI4EwpRzmjyXlBCdqJD0mFx00gQqoxjAAjq72UPEbbJlNZoZWA7FACTR2c0Jp90ha1SjxrpGukMCiC32DIAQHYfYlAYgbSgGQIiOC2xKA5AmLBNkHBvivGFTGoA0oBjIuLGZMW1+cbPr6996/C1aH4tNaQCSrS7qG0C0/AjRaVObPzeTYIZhqC3Xxr8FgERiz0DGEaIDAKAYyDg6uwEAKAYyjs5uAACKAdDZDQAyjmIAaq1v1eFNh239LCE6AJA+nCbIsEpNicop7k1wdOtRQnQAIEUoBjKqtClRNR2tHYToAEBKUQxkkNOmRANfGNCvr/91NgsCQEqRQJgxTjvuWfn6dNwDgPRiA2HG0JQIAFCKYiBDTNPUCx++4OraUx+cEpNIAJBOFAMZcmP2hq7evOqoO6FUmB24evOqxmfHA7ozAECUKAYyxI+mRACA9KEYyBCaEgEAyqEYyBCaEgEAyqEYyBCaEgEAyqEYyBiaEgEASlEMZMzKhpU6svWIDMOoWhDQlAgAsoFiIIN62nt0bNuxhRmC0qLAeixXl9PxbcdpSgQAKUcccYZNzE3o1R+/qlMfnFrUtbCztZOmRACQIRQDkGmaGp8d1+T8pFrqWrSqcRWbBQEgQygGAADIOPYMAACQcRQDAABkHMUAAAAZRzEAAEDGUQwAAJBxFAMAAGQcxQAAABlHMQAAQMZRDAAAkHEUAwAAZBzFAAAAGUcxAABAxlEMAACQcRQDAABkHMUAAAAZRzEAAEDGUQwAAJBx/x9kEYL02WhcNwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.datasets import make_blobs\n", "X,y = make_blobs(centers=[[-1,-1],[1,1]], cluster_std=0.75,random_state=0)\n", "colors = ['tab:green','tab:blue']\n", "fig,ax = plt.subplots()\n", "\n", "for k,classe in enumerate(np.unique(y)):\n", " ax.plot(X[y==classe,0],X[y==classe,1],'o',c=colors[k],markersize=\"10\")\n", "\n", "for spine in ax.spines.values():\n", " spine.set_color(\"None\")\n", "ax.set_axis_off()" ] }, { "cell_type": "code", "execution_count": 5, "id": "a9b771d5", "metadata": {}, "outputs": [], "source": [ "k=5\n", "#see https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.distance_metrics.html\n", "metric = 'manhattan'\n", "knn = KNeighborsClassifier(n_neighbors=k,metric=metric)\n", "knn.fit(X,y) #apprentissage\n", "y_pred = knn.predict(X) # prediction" ] }, { "cell_type": "code", "execution_count": 16, "id": "e34511a4", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,ax = plt.subplots()\n", " \n", "for k,classe in enumerate(np.unique(y_pred)):\n", " ax.plot(X[y_pred==classe,0],\n", " X[y_pred==classe,1],'o',c=colors[k],markersize=\"10\")\n", " \n", "for k,classe in enumerate(np.unique(y)):\n", " ax.plot(X[y==classe,0],X[y==classe,1],'s',c=colors[k],markersize=\"6\")\n", " \n", "\n", "for spine in ax.spines.values():\n", " spine.set_color(\"None\")\n", "ax.set_axis_off()" ] }, { "cell_type": "code", "execution_count": null, "id": "1cfdb013", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "mlenv", "language": "python", "name": "mlenv" }, "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.10.6" } }, "nbformat": 4, "nbformat_minor": 5 }