analizaZad2/wizualizacje.ipynb

557 lines
1.8 MiB
Plaintext
Raw Normal View History

2024-11-04 00:46:59 +01:00
{
"cells": [
{
"cell_type": "markdown",
"id": "4ade5e09-a5d6-4d4c-9913-57efe96b4d46",
"metadata": {},
"source": [
"# Metryka euklidesowa z 3 klasami"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "309daac9-9999-4316-9e50-e95cc990cb91",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 150 entries, 0 to 149\n",
"Data columns (total 5 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 sepal_length 150 non-null float64\n",
" 1 sepal_width 150 non-null float64\n",
" 2 petal_length 150 non-null float64\n",
" 3 petal_width 150 non-null float64\n",
" 4 species 150 non-null object \n",
"dtypes: float64(4), object(1)\n",
"memory usage: 6.0+ KB\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 409.5x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 409.5x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEiCAYAAADwEwVaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABmoUlEQVR4nO3dd3xUVfr48c+dOzOZSSa9JwQCCQlIDQSyKkpVFBXUFXT1Z1tRlFUEy+LKqoDKYlldRbGBddWviqKAIiAqsoqEFgktkEB6SO9tyr2/PyaJxBRSJpmEnLeveb3IzC1PrpP73HvuOc+RVFVVEQRBEPocjbMDEARBEJxDJABBEIQ+SiQAQRCEPkokAEEQhD5KJABBEIQ+SiQAQRCEPkokAEEQhD5KJABBEIQ+6pxPAKqqYrPZEOPdBEEQGjvnE4CiKCQkJKAoSqe2cfDgwU5to68Rx6xjxHETutM5nwAcQVVVLBaLuItoB3HMOkYcN6E7iQQgCILQR4kEIAiC0EeJBCAIgtBHiQQgCILQR4kEIAiC0EeJBCAIgtBHiQQgCILQR4kEIAiC0EeJBCAIgtBHaZ0dgNAxpdUWymssrS7jbtDhadR1U0SCIPQ2IgH0UuU1FvanlWCxNV8zRidrGDPASyQAQRBaJBJAL2axKdRaRdEwQRA6RjwDEARB6KNEAhAEQeijRAIQBEHoo0QCEARB6KNEAhAEQeijRAIQBEHoo5yeAIqKirjkkkvYvXv3WZc9fvw4o0aNatOygiAIQuucmgD27dvH9ddfT3p6+lmXra6u5sEHH6SmpqYbIhMEQTj3OS0BrF+/noceeohFixa1aflly5Yxbdq0Lo5KEASh73BaApgwYQLbtm1jxowZZ132yy+/JC0tjXvvvbcbIhMEQegbnFYKwt/fv03LpaSk8OKLL/Lxxx8jy3KH92ez2Tq9bme24WiqoqIoCorSfCkIRbEv46yYe+Ix6w16+nHrzN+g0PP06FpAtbW1LFq0iEcffZSQkJBObSsxMbHT8ThiG44gyzJWFw+ysnOpNlubXcao15JrslKYUebUk0lPOWa9TU89bmPHjnV2CIID9egEkJiYSGpqKkuWLGHJkiUN7999993MmjWLpUuXtnlbI0aM6PDVi81mIzExsVPbcLTskhpCK7QtFoNz0WoIDPAlxGtAN0dm1xOPWW8gjpvQnXp0AoiNjeXgwYON3ouOjub1118nLi6uXduSZbnTf1CO2IajSBoJjUaDpoWnOBqNBkkjOT3ennTMehNx3ITu4PRxAM2JiYlhw4YNzg5DEAThnNYj7gCSkpIa/XzgwIE2LysIgiB0TI+8AxAEQRC6nkgAgiAIfZRIAIIgCH2USACCIAh9lEgAgiAIfZRIAIIgCH2USACCIAh9lEgAgiAIfZRIAIIgCH2USACCIAh9lEgAgiAIfZRIAIIgCH2USACCIAh9lEgAgiAIfZRIAIIgCH2USACCIAh9lEgAgiAIfZRIAIIgCH2USACCIAh9lEgAgiAIfZTTE0BRURGXXHIJu3fvbnGZjz/+mOnTpxMTE8P06dP58MMPuzFCQRCEc5PWmTvft28fjzzyCOnp6S0u89133/HCCy/w1ltvMWrUKBISErjrrrvw8/Nj+vTp3RitIAjCucVpdwDr16/noYceYtGiRa0ul5uby5133sno0aORJImYmBji4uLYs2dPN0UqCIJwbnLaHcCECRO46qqr0Gq1rSaBm266qdHPhYWF7Nmzh3/84x/t2p/NZutQnGeu25ltOJqqqCiKgqIozX6uKPZlnBVzTzxmvUFPP26yLDs7BMGBnJYA/P39271Ofn4+8+bNY/jw4Vx55ZXtWjcxMbHd++uKbTiCLMtYXTzIys6l2mxtdhmjXkuuyUphRplTTyY95Zj1Nj31uI0dO9bZIQgO5NRnAO2RkJDA/fffT2xsLP/617/QatsX+ogRIzp89WKz2UhMTOzUNhwtu6SG0Aottdbm7wBctBoCA3wJ8RrQzZHZ9cRj1huI4yZ0p16RANatW8dTTz3FggUL+Otf/9qhbciy3Ok/KEdsw1EkjYRGo0HTwlMcjUaDpJGcHm9POma9iThuQnfo8Qlgy5YtLF26lNdee42LLrrI2eEIgiCcM5w+DqA5MTExbNiwAYBXXnkFm83GggULiImJaXg9/vjjTo5SEAShd+sRdwBJSUmNfj5w4EDDvzdu3Njd4QiCIPQJPfIOQBAEQeh6IgEIgiD0USIBCIIg9FEiAQiCIPRRIgH0coqqYlNUZ4chCEIv1CN6AQkdczSnjI/i01FV+POYUM4L8XR2SIIg9CLiDqCXKq4089/daVSZbVRbbHy6L5OyaouzwxIEoRcRCaCX+nx/JjUWhUAPF4I9DZitCr+eLHR2WIIg9CIiAfRCqqqy9UguAJOiA5gUHQDAwaxSVFU8DxAEoW3EM4BeKCm3nOySGrQaiaFBHqioyBqJokoz+RW1BLgbnB2iIAi9gLgD6IW2HbZf/UcFuqPXanDRygz0cwMg6XS5M0MTBKEXEQmgF9p5ogCAYSEeDe9FB7oDkJxX4ZSYBEHofUQC6GXMVoXfMksAGOTv1vD+AF9XADKLq8VzAEEQ2kQkgF7mUHYptVYFL6MOf5NLw/tBngZkjUS1xUZRpdmJEQqC0FuIBNDL7EstBmB4qCeSJDW8r9VoCPG0P/zNLK52SmyCIPQuIgH0MgkZJQAMD/Vo8lmod30zUFV3hiQIQi8lEkAvcySnDPj9oe+ZQr2MAOSU1nRrTIIg9E4iAfQiVWYrqYWVAEQGmJp8HuhhfyaQW17brXEJgtA7iQTQixw7XY6qgr+7C95u+iaf1w8Aq6y1UlFr7e7wBEHoZZyeAIqKirjkkkvYvXt3i8vs2LGDq666itGjR3P55Zfzww8/dGOEPcfRuuafocFN2/8B9FoN3q46AE6LZiBBEM7CqQlg3759XH/99aSnp7e4TGpqKvfddx/3338/e/fu5b777mPhwoXk5uZ2Y6Q9w5Hs+gTQtP2/XqCH/S7gdJlIAIIgtM5pCWD9+vU89NBDLFq06KzLxcbGMm3aNLRaLTNmzGDcuHF88skn3RRpz1F/B3BeC3cA8HsCyBUJQBCEs3BaMbgJEyZw1VVXodVqW00CycnJREVFNXovMjKSY8eOtWt/NputQ3GeuW5nttFZiqJyrK7OT3SgCVVRURQFRVEaLefrZm8CyiurQVVUp8XcE45Zb9TTj5ssy84OQXAgpyUAf3//Ni1XWVmJ0Whs9J7BYKCqqn193RMTE9u1fFdto6NyK61UmW1oNVCZc5IKoydZ2blUmxs/7LVV2X/OLa0mNy+Xwowyp55MnHnMerOeetzGjh3r7BAEB+rx5aCNRiM1NY2bM2pqanBzc2thjeaNGDGiw1cvNpuNxMTETm2js35MygcKGORvYvSokWSX1BBaoaXW2vgOwLvWyldJSVSYFbx8/BjoN8Ap8faEY9YbieMmdKcenwCioqI4fPhwo/eSk5MZPnx4u7Yjy3Kn/6AcsY2OOlVov+OJDDAhyzKSRkKj0aD5w1Mcd4MOF62GWqtCdmktkYEtPy/oDs48Zr2ZOG5Cd3B6N9CzmTlzJvHx8XzzzTdYrVa++eYb4uPjmTVrlrND61Yp+fYBYBH+TQeAnUmSJPzqisSJkhCCILSmRyaAmJgYNmzYAEBERASvvvoqb7zxBuPGjWP16tWsWrWKgQMHOjnK7pWSb6/zf7YEAOBrsg8SE0XhBEFoTY9oAkpKSmr084EDBxr9fNFFF3HRRRd1Z0g9zsn2JAA3+x1AhrgDEAShFT3yDkBorKTKTEGFvcb/mZPAtMRP3AEIgtAGIgH0AvXt/8GeBtxczn7T1vAMoEgkAEEQWiYSQC/QnvZ/+P0ZQH5FLdXmnjmgSBAE5xMJoBf4PQG0beyDq16LUWfvQpheJJ4DCILQPJEAeoGT9V1Am5kDoCX1zwHq5w8QBEH4ow4lgIyMDEfHIbSi/g5gkF/bE4Bv3XOA9EJxByAIQvM6lAAuv/xybr75Zr766qsmZRoEx7LYlIaTeERA28tf+NZNGJNWJO4
"text/plain": [
"<Figure size 409.5x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAicAAAGsCAYAAAAGzwdbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAwe0lEQVR4nO3de1hVdaL/8Q+bi0gIiiIqWWkmRlGiCFNWqJlOanlJ7IyOlqlplje8lXazsbLyklmYpl1Mc+yip/JSjhzzaVIxUwvv6WQidBAVEUSFvff6/eFxT/y0iW3A+up+v56nB9lr7bU+bReuD99187MsyxIAAIAhHHYHAAAA+DXKCQAAMArlBAAAGIVyAgAAjEI5AQAARqGcAAAAo1BOAACAUQLsDuAtt9stp9Mph8MhPz8/u+MAAIBysCxLbrdbAQEBcjj+89jIJVdOnE6nMjMz7Y4BAAAuQlxcnIKCgv7jPJdcOTnXtuLi4uTv729zGgAAUB4ul0uZmZm/O2oiXYLl5NyhHH9/f8oJAACXmPKcksEJsQAAwCiUEwAAYBTKCQAAMArlBAAAGIVyAgAAjGLL1TqfffaZnnnmmTKvlZaWSpK2b99uRyQAAGAIW8rJvffeq3vvvdfzfW5uru677z6NHTvWjjgAAMAgtt/nxLIsjR07Vm3atFHXrl3L/T6Xy1WJqQAAQEXyZr9tezn59NNPtW/fPqWlpXn1Pm5hDwDA5cnWcuJ2uzV79mwNGTJEoaGhXr2X29cDAHDpOHf7+vKwtZxkZGTo8OHD6tmzp9fv5fb1AABcnmy9lPjLL7/UXXfdpZCQEDtjAAAAg9haTr777ju1atXKzggAAMAwth7WOXTokOrWrWtnBACA4XJzc1VcXGx3DNuFhIQoKirK7hhVwtZysnXrVjtXDwAw3IkTJ5SamirLsuyOYjuHw6G0tDSFhYXZHaXS2X4pMQAAvyUsLEzTp0+3deQkOztbaWlpGjp0qKKjo23LERIS4hPFRKKcAAAMZ8qhjOjoaDVq1MjuGD6BB/8BAACjUE4AAIBRKCcAAMAolBMAAGAUygkAADAK5QQAABiFcgIAAIxCOQEAAEahnAAAAKNQTgAAgFEoJwAAwCiUEwAAYBTKCQAAMArlBAAAGIVyAgAAjEI5AQAARqGcAAAAo1BOAACAUSgnAADAKJQTAABgFMoJAAAwCuUEAAAYhXICAACMQjkBAABGoZwAAACjUE4AAIBRKCcAAMAolBMAAGAUygkAADAK5QQAABiFcgIAAIxCOQEAAEahnAAAAKNQTgAAgFEoJwAAwCiUEwAAYBTKCQAAMArlBAAAGIVyAgAAjEI5AQAARqGcAAAAo1BOAACAUSgnAADAKJQTAABgFMoJAAAwii3l5Pjx4xo3bpySkpLUqlUrDR06VIcPH7YjCgAAMIwt5WTYsGEqLi7WP/7xD61du1b+/v566qmn7IgCAAAME1DVK9y+fbu+//57rV+/XqGhoZKkv/3tb8rLy/NqOS6XqzLiAQBQhtvt9nxl33PxvPnsqryc/PDDD2rSpIk+/PBDLV68WKdOndLtt9+u8ePHe7WczMzMSkoIAMC/5ebmSpL27Nmj48eP2xvGR1R5OSkoKNCePXt04403atmyZTp9+rTGjRun8ePHa86cOeVeTlxcnPz9/SsxKQAA0oEDByRJMTExuuaaa2zNcilzuVzlHlio8nISFBQkSZo4caKqVaum0NBQjRw5Ur169dLJkyd1xRVXlGs5/v7+lBMAQKVzOByer+x3qkaVnxDbpEkTud1ulZaWel47dzzPsqyqjgMAAAxT5eXk1ltvVcOGDTVhwgSdPHlSx44d04wZM9S+fXvPCbIAAMB3VXk5CQwM1Pvvvy9/f3917NhRHTt2VL169fTCCy9UdRQAAGCgKj/nRJKioqI0Y8YMO1YNAPDCkSNHVFhYaHcMW2VnZ5f56stq1KihOnXqVPp6bCknAADzHTlyRKPHjFFpSYndUYyQlpZmdwTbBQYFadrUqZVeUCgnAIALKiwsVGlJiZre3F4hobXsjgObFRfla+/3a1RYWEg5AQDYKyS0lkLDI+2OAR/CU4kBAIBRKCcAAMAolBMAAGAUygkAADAK5QQAABiFcgIAAIxCOQEAAEahnAAAAKNQTgAAgFEoJwAAwCiUEwAAYBTKCQAAMArlBAAAGIVyAgAAjEI5AQAARgmwOwAAwGzFRfl2R4ABqnI7oJwAAP6jvd+vsTsCfAzlBADwHzW9ub1CQmvZHQM2Ky7Kr7KiSjkBAPxHIaG1FBoeaXcM+BBOiAUAAEahnAAAAKNQTgAAgFEoJwAAwCiUEwAAYBTKCQAAMArlBAAAGIVyAgAAjEI5AQAARqGcAAAAo1BOAACAUSgnAADAKJQTAABgFMoJAAAwCuUEAAAYhXICAACMQjkBAABGoZwAAACjUE4AAIBRKCcAAMAolBMAAGCUALsDADBHbm6uiouL7Y5hhJCQEEVFRdkdwwjFRfl2R4ABqnI7oJwAkCSdOHFCqampsizL7ihGcDgcSktLU1hYmN1RbFOjRg0FBgVp7/dr7I4CQwQGBalGjRqVvh4/6xL7l8jlcmnbtm1q3ry5/P397Y4DXFbsHjnJzs5WWlqahg4dqujoaNtySIycnHPkyBEVFhbaHcNWJm2XdqtRo4bq1KlzUe/1Zv/NyAkAD1N2xtHR0WrUqJHdMSCpTp06F70zutywXVYd206IXblypWJjYxUfH+/5b+zYsXbFAQAAhrBt5CQzM1Ndu3bViy++aFcEAABgIFvLyd13333R73e5XBWYBoAJ3G635ys/4zAF22XF8Oazs6WcuN1u7dixQ9WrV9e8efPkcrmUnJysMWPGKDw8vFzLyMzMrOSUAKpabm6uJGnPnj06fvy4vWGA/8N2WfVsKSfHjh1TbGysOnbsqNdee035+fkaP368xo4dq7lz55ZrGXFxcVytA1xmDhw4IEmKiYnRNddcY2sW4By2y4rhcrnKPbBgSzmpU6eOFi1a5Pm+evXqGjt2rHr16qWioiKFhob+7jL8/f0pJ8BlxuFweL7y8w1TsF1WPVuu1tm9e7emTp1a5mZPJSUlcjgcCgoKsiMSAAAwhC3lpGbNmlq0aJHmzZsnp9OpnJwcvfLKK+revTvlBAAAH2dLOalXr57mzJmj9PR0JSYm6r777lNcXJyefvppO+IAAACD2HYpcWJiov7+97/btXoAAGAo2+4QCwAAcCGUEwAAYBTKCQAAMArlBAAAGIVyAgAAjEI5AQAARqGcAAAAo1BOAACAUSgnAADAKJQTAABgFMoJAAAwCuUEAAAYhXICAACMQjkBAABGoZwAAACjBNgdAMBZR44cUWFhod0xbJWdnV3mq6+rUaOG6tSpY3cMoMpRTgADHDlyRGNGj1ZJaandUYyQlpZmdwQjBAUGauq0aRQU+BzKCWCAwsJClZSW6q8xEYoK4ccSUm6xUwv3HFNhYSHlBD6HfwUBg0SFBKhhaJDdMQDAVl6Xk3379mnKlCnKysqS0+ksMy09Pb3CggEAAN/kdTl54oknVKtWLQ0YMECBgYGVkQkAAPiwixo5ycjIUFAQQ88AgMqXm5ur4uJi29ZvylVkISEhioqKsjVDVfG6nFx99dUqKipSREREZeQBAMDjxIkTSk1NlWVZdkex/Soyh8OhtLQ0hYWF2ZqjKpS7nHz77beSpOTkZD322GN66KGHFB4eXmaeVq1aVWw6AIBPCwsL0/Tp020dOTFFSEiITxQTyYty0rdv3zLfb9mypcz3fn5+2rVrV8WkAgDg//jKoQz8W7nLye7duyszBwAAgKSLeLZOt27dLvh6u3bt/mgWAACA8o2cHDx4ULNnz5Z09mqdJ554osz0oqIinT59uuLTAQAAn1OukZOrrrpKtWrV+s3pERERmjFjRoWFAgAAvqvc55yMGzdOktSwYUMNHTq00gIBviy3mAf/4Sy2Bfgyr+9z0qBBA/33f//3ea8HBgYqIiJCzZs3V/Xq1SsiG+BzFu7JtzsCANjO63KyZMkSbdu2TbVr11Z0dLR++eUX5eXlqV69ejp
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABRYAAASeCAYAAACzT3LfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzddZxUVf/A8c90b3cSS3eqSAkoooio6ONjYvtgdz124mPx8zEfUezuQBEDRAUB6V5yu3tndnfi98eVhXFnNmdr+L598RLumXvvuWdmz9753nPOV+XxeDwIIYQQQgghhBBCCCFEC6g7uwJCCCGEEEIIIYQQQojuRwKLQgghhBBCCCGEEEKIFpPAohBCCCGEEEIIIYQQosUksCiEEEIIIYQQQgghhGgxCSwKIYQQQgghhBBCCCFaTAKLQgghhBBCCCGEEEKIFpPAohBCCCGEEEIIIYQQosUksCiEEEIIIYQQQgghhGixoA8sejweXC4XHo+ns6sihAgy0r8IIdqT9DFCiPYi/YsQQohACfrAotvtZv369bjd7oAec+PGjQE9ZmcIhusIhmuA4LiOYLgGOHQdzX1toPuX9hQs71F7kjZqmrRR0wLVRt2tj2kp+Sz5J23jn7SNfy1pk7b2L/I+BJa0Z2BJewaWtKdoSqcEFrds2cK5557L6NGjGT9+PA899BC1tbU+X7ts2TJOOeUUhg8fzowZM/jpp586uLYNeTwe6urquv0TvmC4jmC4BgiO6wiGa4BD1xGMguU9ak/SRk2TNmqatFHzSDv5J23jn7SNfx3ZJvI+BJa0Z2BJewaWtKdoSocHFt1uN1dccQXTp0/njz/+4KOPPmLFihX873//a/Daffv2cc0113DdddexZs0arrnmGq6//nry8vI6utpCCCGEEEIIIYQQQojDdHhgsaysjIKCAtxud33EW61WYzKZGrz2008/ZfTo0UybNg2tVstJJ53EmDFjeP/99zu62kIIIYQQQgghhBBCiMNoO/qE4eHhzJ07l/nz5/P444/jcrmYOnUqc+fObfDa9PR0+vbt67UtLS2N7du3t/i8LpertVX2e6xAHrMzBMN1BMM1QHBcRzBcA7Su/t3lmoPlPWpP0kZNkzZqWlNtpNFoWnW8YCOfJf+kbfyTtvHP5XJ1WP8i70NgSXsGlrRnYB3eni3tY8SRQeXp4InybrebBQsWEBsby5w5c9i/fz9XX301M2bM4Prrr/d67dy5cxkxYgTXXXdd/bZnnnmG9evXs2jRomadz+VysX79+sBdgBDiiDBq1KgmXyP9ixCiNZrTv4D0MUKIlpP+RQjRnprbx4gjS4ePWPz+++/57rvv+PbbbwHo06cPV111FQ8//HCDwKLJZMLhcHhtczgcWCyWFp93yJAhAYuuu1wuNm3aFNBjdoZguI5guAYIjusIhmuAQ9fREt3lmoPlPWpP0kZNkzZqWqDbKFjbWj5L/knb+Cdt419rRme1th3lfQgsac/AkvYMrMPbUwhfOjywmJOT0yADtFarRafTNXht37592bJli9e29PR0Bg8e3OLzajSagHcq7XHMzhAM1xEM1wDBcR3BcA0t1d2uubvVtzNIGzVN2qhpgWqjYG/rYL++tpC28U/aJjDa2o7yPgSWtGfgGAwGac8Ak7YU/nR48pbx48dTUFDAiy++iMvlIiMjgxdeeIFTTjmlwWtnzZrFH3/8wTfffIPT6eSbb77hjz/+4NRTT+3oagshhBBBodhezLaibXyw4wOW7l9KVmUWda66zq6WEEK0m7yqPFbnruaDHR+wKmcVuVW5nV0lIUQ7qK6rJqMig8X7FrNFvYV9Ffsorynv7GoJEfQ6fMRiWloaL730Es888wyvvPIKNpuNWbNmcdVVVwEwYsQI7r//fmbNmkXv3r157rnneOKJJ7jrrrtITEzk2WefpWfPnh1dbSGEEKLby6/O564Vd7EyZ2X9NoPGwP9N+T9Gx45Gr9F3Yu2EECLwDpQf4LIll5FdlV2/LdYcy8snvEyv0F6dWDMhRCBV1Fbw7b5veWjlQ7g97vrtZ/U7i3nD5hFpiuzE2gkR3Do8sAgwbtw4xo0b57Ns3bp1Xv+eMGECEyZM6IhqCSGEEEGrzlXHO9ve8QoqAtS4arj6h6v5YvYXJNmSOql2QggReMX2Ym5adpNXUBEgrzqP63+8nldPfJUoU1Qn1U4IEUhZlVk88PsDDbZ/sOMDxsaOZXrP6Z1QKyGODB0+FVoIIYQQHa/IUcS729/1WVbnrmN17uoOrpEQQrSvYkcx24u3+yzbW76XYntxB9dICNEeXG4X7+9432/5K5tfocRR0oE1EuLIIoHFI9yBsjp25FZ0djWEEEK0M6fbSbWz2m95dmW23zIhhOiO7C57o+WN9YlCiO6jzl1HTmWO3/JCeyF1bllPWoj2IoHFI9jn67O5YUkRJz37K5+uy+zs6gghhGhHRq2RHiE9/JaPih3VcZURQogOEGYIQ6vyvfKTWqUmwhjRwTUSQrQHg8bAsQnH+i0fET0Ci87SgTUS4sgigcUjVGWNkwe/3saAKB1jeoTzwJdbqaxxdna1hBBCtJMoUxQ3j77ZZ1mPkB70CpMkBkKI4BJpjOQf/f/hs+y0tNMksChEkFCpVExJnUKoIbRBmVal5cphV0pgUYh2JIHFI9QX67Mps9dxYm8z545NprS6jm82+R8+LoQQovsbGTuSpyc/TZwlDgCNSsP01Om8dPxLxJhjOrl2QggRWGadmcuGXMZVw6/CqrMq27RmLh96OVePuBqr3trJNRRCBEqCJYE3TnyDsXFj67f1CevDqye+SmpoaifWTIjg1ylZoUXn+2xdFoMTQggzqom2GRiYEMIX67M5a3RyZ1dNCCFEO7HpbUxLncbQ6KFU1VWhU+sIN4bLU3whRNCKNEVy6eBLmdV7Fg6XA6PGSLQpGp1G19lVE0IEkEqloldYL56a/BSlNaVUV1cTHRJNlFkyvwvR3iSweAQqq65jzf5iLhrXAygDYHRqOO/8cQB7rQuTXtOp9RNCCNG+ZHSiEOJIotVoSbAmdHY1hBAdINQQilVrZf2u9YRHh3d2dYQ4IshU6CPQr7sLcXtgaFJI/bbBiaHUuTys3lfciTUTQgghhBBCCCGEEN2FBBaPQCv3FBEfaiTKaqjflhhmIsyk44+9ElgUQgghhBBCCCGEEE2TwOIRaPW+YvrG2ry2qVQqekdbWZdR0km1EkIIIYQQQgghhBDdiQQWjzBVNU525FY0CCwC9I6xsiGjDLfb0wk1E0IIbx6PB7fH3ap93e7W7QcQFh7W6n27k7a0kRBCdBWt/T3RFKfL6f+c0n8K0eWFhYW1af/m9C2N9RNCHEkkecsRZkt2OW4P9I5umAG0d7SFyhonB4qr6RElGUKFEJ2jyF7EvrJ9fLzrY9weN6f1OY3eYb2JMjWd1S+7Mpvfsn7j1+xfSQlJYVbvWSRYEzBpTY3uV1FbQU5VDp/t+oycqhymeKYwOm408Zb4QF1Wl5FblcufeX+y9MBSYswxnJZ2GgnWBGz6hg+chBCiK9JoNBQ6CtlatJWv93yNTW/jjL5nkGxNJtQY2urj5lfnk1OZw6fpn1JRW8GUlCkMjR5Ksi2Zqroqsiuz+WzXZ2RXZTM5eTJj48YSbw2+3xNCdFcljhL2l+/n410f43A6mGWYRf+I/kSbo5t9jPzqfLYUbeHr3V9j1Vvr+5YwYxgAhfZCcqty+TT9U0ocJUxMnMio2FEkhyS301UJ0fVJYPEIszmrDL1GTVK4GfB+CpMSYQZge265BBaFEJ2iyF7Ew6se5vv939dv+3rv1xwTfwwPj3+40RvDvWV7uXDxhZTUHFrS4bXNr/H4xMeZnDwZo9boc7+q2iq+2fMND616qH7b0gNLiTXHsujERSTZkgJwZV1DVkUWF393MdlV2fXb3t72NreNuY3ZabOx6q2dWDshhGiekMQQ5v0wj50lO+u3fbTrIy4YeAGXDbmsPgDQEvnV+by19S1e2/Ja/bYl+5fQM6Qnz019jtW5q7n393vryw4+nHlt+mukhKS06XqEEG1X7Ch
"text/plain": [
"<Figure size 1309.5x1200 with 20 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1b44dcc1f40>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"iris = pd.read_csv(\"iris.csv\")\n",
"x = iris.iloc[:, [0, 1, 2, 3]].values\n",
"iris.info()\n",
"iris[0:10]\n",
"iris_outcome = pd.crosstab(index=iris[\"species\"], # Make a crosstab\n",
" columns=\"count\") # Name the count column\n",
"\n",
"iris_outcome\n",
"iris_setosa=iris.loc[iris[\"species\"]==\"Iris-setosa\"]\n",
"iris_virginica=iris.loc[iris[\"species\"]==\"Iris-virginica\"]\n",
"iris_versicolor=iris.loc[iris[\"species\"]==\"Iris-versicolor\"]\n",
"sns.FacetGrid(iris,hue=\"species\").map(sns.distplot,\"petal_length\").add_legend()\n",
"sns.FacetGrid(iris,hue=\"species\").map(sns.distplot,\"petal_width\").add_legend()\n",
"sns.FacetGrid(iris,hue=\"species\").map(sns.distplot,\"sepal_length\").add_legend()\n",
"plt.show()\n",
"sns.boxplot(x=\"species\",y=\"petal_length\",data=iris, palette=\"Set2\")\n",
"plt.show()\n",
"sns.violinplot(x=\"species\",y=\"petal_length\",data=iris)\n",
"plt.show()\n",
"sns.set_style(\"whitegrid\")\n",
"sns.pairplot(iris,hue=\"species\",size=3);\n",
"plt.show()\n",
"from sklearn.cluster import KMeans\n",
"wcss = []\n",
"\n",
"for i in range(1, 11):\n",
" kmeans = KMeans(n_clusters = i, metric='manhattan'init = 'k-means++', max_iter = 300, n_init = 10, random_state = 0)\n",
" kmeans.fit(x)\n",
" wcss.append(kmeans.inertia_)\n",
"plt.plot(range(1, 11), wcss)\n",
"plt.title('The elbow method')\n",
"plt.xlabel('Number of clusters')\n",
"plt.ylabel('WCSS') #within cluster sum of squares\n",
"plt.show()\n",
"kmeans = KMeans(n_clusters = 3, init = 'k-means++', max_iter = 300, n_init = 10, random_state = 0)\n",
"y_kmeans = kmeans.fit_predict(x)\n",
"#Visualising the clusters\n",
"plt.scatter(x[y_kmeans == 0, 0], x[y_kmeans == 0, 1], s = 100, c = 'purple', label = 'Iris-setosa')\n",
"plt.scatter(x[y_kmeans == 1, 0], x[y_kmeans == 1, 1], s = 100, c = 'orange', label = 'Iris-versicolour')\n",
"plt.scatter(x[y_kmeans == 2, 0], x[y_kmeans == 2, 1], s = 100, c = 'green', label = 'Iris-virginica')\n",
"\n",
"#Plotting the centroids of the clusters\n",
"plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:,1], s = 100, c = 'red', label = 'Centroids')\n",
"\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"id": "3c2b0a8a-a8b0-4672-b84e-c461cc7b4ead",
"metadata": {},
"source": [
"# Metryka euklidesowa z 2 klasami"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "582abad7-f34d-41d9-99cd-2f440af65cdb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Liczba elementów w klasach:\n",
" species\n",
"setosa 50\n",
"versicolor 50\n",
"Name: count, dtype: int64\n",
"\n",
"Centroidy:\n",
" {'setosa': [5.006, 3.418, 1.464, 0.244], 'versicolor': [5.936, 2.77, 4.26, 1.326]}\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlYAAAH4CAYAAACIW6McAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABsXUlEQVR4nO3dd3gU1f7H8ffuZpNsegFCh9AJQogUUWnGjuUq6M8CKApyFRDFBjbA67VeUBFsIIpeRBThIqKo2BuigIJSpfcAIZVskt3s/P6IWQ0ECMlmZ5N8Xs+TRzIze+a7B9x8cubMGYthGAYiIiIiUmlWswsQERERqSkUrERERER8RMFKRERExEcUrERERER8RMFKRERExEcUrERERER8RMFKRERExEcUrERERER8RMFKpBK0vm751dS+qqnvS0QqRsFKaqxx48aRmpp63P2DBw9m8ODBx/3+ZFauXMk///nPStVYW2zevJnrrrvulF93sr+TBQsW0LZtW3bv3l2Z8irs888/Z+zYsd7vly9fTtu2bVm+fLkp9YiI+YLMLkAkUEyYMOGUjp83bx6bN2+uompqliVLlvDLL7+YXYbPzZo1y+wSRCTAKFiJ/KlVq1ZmlyAiItWcLgWK/Onoy04//PAD11xzDSkpKXTr1o0RI0awdetWoPgy4//+9z/27NlD27ZtWbBgAQA5OTk88cQTnHfeeXTs2JFLL72U9957r9R5XC4XkyZNonfv3nTq1ImhQ4eycOHCUpe0xo0bx4033siECRPo2rUrV155JW63m8OHD/PII49wzjnncNppp9G9e3dGjhxZ6lLY4MGDGT9+PC+99BK9evUiOTmZW265hUOHDjF//nzOP/98UlJSGDJkyAkvoe3evZu2bdvy4Ycfcuutt5KcnEyfPn2YOnUqHo+n1LHz5s3jkksu4bTTTqNv375MnToVt9sNwNSpU5k2bRoAbdu2ZerUqQDlei8VsWLFCgYNGkRycjLdu3dn7NixHD582Lt/wYIFJCUlsXr1aq655ho6duxI3759mTFjRql2Dhw4wJgxY+jevTvdunVj/PjxPPvss97Ly4MHD+ann37ip59+Ouby39atWxk6dCjJycmcffbZTJo0ydsfIlKzacRKarzj/UAzDAOLxVLmvl27dnHbbbcxYMAAxowZQ1ZWFs8++yzDhw/n008/ZcSIERw+fJh169Yxbdo0mjZtSn5+Ptdffz2HDh3i9ttvp0mTJnz22Wc8+OCDHDp0iFtvvRWA8ePHs3jxYm6//Xbat2/P4sWLefjhh4+pYcWKFVgsFqZOncqRI0ew2Wz885//JCsri7vvvpu6deuyfv16pkyZwvjx43nttde8r/3www9JSkriscceY+/evTz66KMMGjSI0NBQxo4dS2ZmJo899hj/+te/mD59+gn7b+LEid5AtXLlSl588UWOHDnCuHHjAHjllVd49tlnGTRoEPfffz/r169n6tSp7Nu3j8cff5yrr76a/fv389577/HOO+9Qv359DMMo93s5FT///DM33XQTPXr04LnnniMrK4spU6Zwww038N577xEaGgqAx+PhzjvvZMiQIdx555289957TJo0iXbt2tGrVy8KCwu58cYbycvL44EHHiAiIoLp06ezfv166tatCxRfOr733nu9f27VqhVr164F4IknnuDWW29l2LBhfPrpp8yYMYP69eszaNCgCr0vEak+FKykRtuzZw8dOnQ47v7u3buXuX3NmjXk5+fzz3/+k4SEBAAaNGjA559/Tl5eHk2bNiUuLo7g4GA6d+4MwJw5c9i0aRNz5syhS5cuAPTq1Qu3282LL77ItddeS3Z2Nv/73/8YO3YsN910k/eYQ4cO8d1335Wqwe1288gjj9CsWTMA0tLScDgcjB07lq5duwJwxhlnsHv3bubOnVvqtS6Xi2nTphEdHQ3A0qVL+e677/jss89o0qQJAOvXr+f9998/aR8mJSUxadIkAHr37k1eXh6zZ89mxIgRWCwWXnrpJa655hoeeughAHr27ElMTAwPPfQQN910E61bt6Z+/foA3r46lfdyKiZPnkxiYiKvvPIKNpsNgOTkZC655BLmz5/PwIEDgeJQPWLECK6++moAunTpwtKlS/nqq6/o1asXixYtYuvWrcyfP5/TTjsNgB49enDeeed5z9WqVSsiIiJKva8SN9xwAyNGjPC+7ssvv+THH39UsBKpBRSspEarW7cuL730Upn7TjRZPTk5mZCQEK666ir69etHnz596Nq1K506dTrua3766ScaNWrkDVUlLr/8ct577z1Wr17NgQMHMAyDiy66qNQxl1566THBKjQ0lKZNm3q/T0hI4M033wRg79697Nixgy1btrBq1SpcLlep17Zs2dIbqkr6IS4uzhuqAGJiYsjJyTnu+/l7/X934YUX8uabb/Lrr78C4HQ6SU1NLTUyWHK57Pvvv6d169bHtHkq76W8nE4nq1evZujQoRiG4a2nSZMmtGzZku+//94brABSUlK8fw4ODiYuLo68vDwAfvzxR5o0aeINVQARERGcc8455brjryQsAlgsFho1akR2dnaF3peIVC8KVlKjBQcH07FjxzL3hYeHH/d1jRs3Zvbs2UyfPp13332XWbNmERUVxfXXX88dd9yB1Xrs9MSsrCzq1KlzzPaSbdnZ2d65PvHx8WUe83fx8fHHXKpctGgRzzzzDPv27SMmJoZ27dp5L2/9XclIyt85HI7jvt8TqVevXqnv4+LigOL3UzLXavjw4WW+9sCBA8dtt7zvpbxK6pkxY8Yx86UAQkJCSn1/9LmsVqt3TaqMjIxj/o6g7L+nshzd139vW0RqNgUrkePo1KkT06ZNo7CwkJUrV/LOO+/w8ssv07ZtW/r163fM8dHR0ezYseOY7QcPHgQgNjaWoqIiANLT02nQoIH3mPT09JPWs2LFCsaOHcugQYMYOnSo9/La008/zcqVKyv0HssjMzOz1PcltcbHx1NQUADApEmTaN68+TGvPV4QqYr3Eh4ejsViYciQIVxyySXH7D+VYJmQkFDm32V5/p5EpHbTXYEiZZg1axapqakUFhYSHBzMmWeeyaOPPgrAvn37AI4ZterWrRt79uw5JhgsWrQIu91Op06d6NKlCzabjU8//bTUMUd/X5ZffvkFj8fD6NGjvUGkqKiIH374AeCYO/V85Ysvvij1/SeffILD4SA5OZnk5GTsdjtpaWl07NjR+2W325k8ebL3Dr+j+6oq3ktERARJSUls3bq1VC2tW7dm2rRpp7RoZ/fu3dm1axfr16/3bisoKOCbb74pdVxZI5ciUrtpxEqkDD169GDSpEmMHDmSQYMGYbPZmDt3LsHBwZxzzjkAREVFcejQIb7++mvat29P//79mTNnDqNGjWL06NE0adKEL774gvnz5zNq1CiioqKIiopiwIABPPPMM7hcLtq1a8fSpUv58ssvgRP/oC6Z3/Wvf/2LAQMGkJ2dzezZs9mwYQMAeXl5ZV4CrKyPP/6YOnXq0KdPH3766SfeeustxowZQ1hYGGFhYQwbNowpU6aQm5vLGWecQVpaGlOmTMFisdCuXTtvXwEsXryY5OTkKnsvd911F8OHD+fuu+/m8ssvp6ioiNdee43Vq1dz2223lbudSy+9lOnTpzNy5EjuuOMOoqKieO2110hPT6dhw4be46Kiovjll19YtmwZSUlJp1yviNQ8+nVLpAzt2rXj5ZdfJjc3l7vuuotRo0aRmZnJa6+9RosWLQDo378/jRo1YuTIkSxcuBCHw8F///tfUlNTef7557nttttYuXIljz32GLfffru37Ycffphrr72W1157jREjRrB//37vD/2wsLDj1nTGGWcwfvx4fvnlF2655RaeeOIJGjZs6F0jqqouB95xxx1s2bKFESNG8MknnzB+/PhSc6ruvPNOxo0bx9KlS7nlllv4z3/+Q5cuXZg9ezaRkZEAXHDBBXTs2JFx48Yxc+bMKnsvPXv2ZObMmezfv5/Ro0dz3333YbPZeP3114+5c+9EgoKCmDlzJklJSUycOJH77ruPNm3acP7555f
"text/plain": [
"<Figure size 620.625x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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vv3229897sCBAzV9+nRlZGTo0KFD2rhxoxYuXChJysrKsivjbdu2bZPFYlFYWJg1S3Z2tsLDw5WSkpJrsVtQUJC1pEq3SrQkZWZm6sSJE/rpp5/UoUOHXMd//PHHbcpRq1Yta0mVpHvvvVfSrdIPoHjijCoAUyhTpoyCgoJybXvooYeUkZGht99+W3369LHOQ/315fvbKlasmKuweHp6qn379nrrrbfUvHlzeXh45HlM5cqVc31evnx5Sbduj/Rbly9f/t3n/b3H/JHfPrckVahQQQcOHJAkpaam6sSJE787fSAzMzPf13Tp0iWNGzdOn332mSwWi6pXr24t1wW9L2lqaqoMw/jds7Hnz59XvXr1JClPJheXW+dDcnJydOnSJUm3XuevVapUyaYcnp6ev3tsAMUTRRWAqdWrV08rV67U6dOnVbZsWUnShQsXrNMBbktJSVHVqlWtnyclJem9995TvXr19MEHH6hz585q2rRprsekpqbm+vzixYuS8hYpSSpbtqxOnDiRZ3tKSookqVy5cna9rt8+t3Trdd1+bm9vb4WGhurll1/O9/Hu7u75bh85cqSOHTumd955R40bN5a7u7syMzO1cuVKu/L9mre3tzw9PbV48eJ891evXt2m49w+u3r763zbbz8HgNu49A/A1Pbs2aNSpUqpatWqatiwodzd3bV+/fpcY3bu3KmffvrJesYvOztbo0aNkr+/v5YvX64GDRrolVdeUUZGRq7HbdmyJdfnmzZtkoeHhxo2bJgnR7NmzXTmzBnrpfnb4uLi5ObmpuDgYEn/O8v3Z06ePKmkpCTr5+fOndPevXvVokULSVJoaKiSk5NVo0YNBQUFWf/ExcVp5cqV1svrv32+Xbt2qX379mrevLm1zH711VeSCn7mMTQ0VBkZGTIMI1eWo0ePav78+TYvZrr77rtVrVo1ffrpp7m2b9q0Kdfnv546AKBk44wqAFNIT0/PNTc0KytLmzdv1vr169WzZ0/rZfnBgwdr3rx5cnNzU5s2bXT69GnNmTNHtWrVUrdu3SRJb775pg4cOKAlS5bIw8NDEydO1FNPPaUZM2ZYV5RL0scff6yKFSsqLCxMCQkJWrp0qUaMGJHnErMkdevWTcuWLdOwYcP0wgsvqGrVqtqyZYtWr16tYcOGWRdf+fj4aM+ePdZbLt0+C/xbhmEoMjJSL774okqVKqV58+bJx8fHejumfv36ad26derXr5/69++vcuXKKT4+Xh988EGu+ba3n++7775T06ZNFRwcrPXr1yswMFB333239uzZozfffFMWi6XAbwwQFhamZs2aKTIyUpGRkapZs6b27dunuXPn6qGHHrL+t/kzFotFL7zwgkaOHKlx48apbdu2OnTokObPny/pf6Xb29tb0q07GJQtW5aFUkAJRlEFYAoHDx5Uz549rZ+XLl1a1apV04gRIzRgwADr9ueff14VK1bUkiVLtHLlSvn6+qpDhw568cUX5eHhoUOHDik2NlZPP/209VJ/QECA+vXrp0WLFqlt27bWKQLDhw9XQkKC3n//fVWpUkVjx47V3//+93zzeXh46L///a9mzpyp6Ohopaen6/7779fkyZPVvXt367jevXvrhx9+0KBBgzR16tQ8C79uu+eee/TMM89oypQpyszMVMuWLRUbG2tdLOT
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1320.62x1200 with 20 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAImCAYAAABZ4rtkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACrg0lEQVR4nOzde1wU5f4H8M8suyu7QnLJVMQbIIqKoBWoea+kNDsmHe1oib8ssxROYmUdrbTSTjdNsata4SnqUJrp0aKLHs2OSaaoBUlctMgyBVbBXdiFnd8fAwiCsPfL8Hm/XryU2efZ+c7Ms8t+d2a+jyCKoggiIiIiIiKymMLdARAREREREXkbJlJERERERERWYiJFRERERERkJSZSREREREREVmIiRUREREREZCUmUkRERERERFZiIkVERERERGQlJlJERERERERWYiJFREQOwfnd3Yf7nojI9ZhIERHJwLFjx/Dwww9j7NixGDx4MK6//nosXboUv/76a5N2d911F+666y6Hrvv8+fNYvHgxDh486NDn9ST9+vVDWlpam+3Onz+PdevWYfLkyRgyZAiGDx+OWbNm4auvvnJabF999RUWL17skOfasmUL+vXrh5KSksu2KSkpQb9+/bBlyxaHrJOIyFsxkSIi8nLvvfce7rjjDpSWlmLRokVYv3495s2bh++++w6JiYn48ccfnbr+vLw8bN26FWaz2anr8XSFhYWYMmUKPvroI9x222145ZVX8PTTTyM4OBgPPPAA1q5d65T1vvPOO/j9998d8lxjx47Fv//9b1x11VUOeT4iIjlTujsAIiKy3ffff48VK1Zg5syZWLJkScPy+Ph4XH/99Zg6dSoee+wxbNu2zY1Ryp/JZMKDDz4IlUqFjIwMBAcHNzx2ww03ICAgAK+88gquv/56DBw40I2Rti4oKAhBQUHuDoOIyCvwjBQRkRfbuHEj/P39kZqa2uyxoKAgPProo5gwYQIqKytb7N/SJWtpaWno169fw+9lZWV46KGHcN111yE6Ohp/+ctfsHXrVgDAgQMHMGvWLADArFmzmlw2+OWXX2Lq1KmIjo7Gddddh2eeeQZ6vb7Jem688UasW7cO8fHxuOGGG1BeXo4ff/wRSUlJuPrqqzFkyBDMnj0bR44caXU/lJWVYfny5Rg3bhwGDRqEuLg4zJ8/v8klanfddReWLFmC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
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.datasets import load_iris\n",
"from sklearn.cluster import KMeans\n",
"\n",
"# Load the Iris dataset\n",
"iris_data = load_iris()\n",
"iris = pd.DataFrame(data=iris_data.data, columns=iris_data.feature_names)\n",
"iris['species'] = iris_data.target\n",
"\n",
"# Map target integers to class names\n",
"iris['species'] = iris['species'].map({0: 'setosa', 1: 'versicolor', 2: 'virginica'})\n",
"\n",
"# Remove the 'virginica' class\n",
"iris = iris[iris['species'] != 'virginica']\n",
"\n",
"# Liczba elementów w klasach\n",
"class_counts = iris['species'].value_counts()\n",
"print(\"Liczba elementów w klasach:\\n\", class_counts)\n",
"\n",
"# Centroidy (actual centroids will be computed by KMeans later)\n",
"centroids = {\n",
" 'setosa': [5.006, 3.418, 1.464, 0.244],\n",
" 'versicolor': [5.936, 2.770, 4.260, 1.326]\n",
"}\n",
"print(\"\\nCentroidy:\\n\", centroids)\n",
"\n",
"# FacetGrid z histogramem\n",
"g = sns.FacetGrid(iris, hue=\"species\", height=5)\n",
"g.map(sns.histplot, \"petal length (cm)\", bins=20, kde=True)\n",
"g.add_legend()\n",
"plt.title('Histogram petal length')\n",
"plt.show()\n",
"\n",
"# Boxplot\n",
"plt.figure(figsize=(8, 6))\n",
"sns.boxplot(x=\"species\", y=\"petal length (cm)\", data=iris, palette=\"Set2\")\n",
"plt.title('Boxplot petal length')\n",
"plt.show()\n",
"\n",
"# Violinplot\n",
"plt.figure(figsize=(8, 6))\n",
"sns.violinplot(x=\"species\", y=\"petal length (cm)\", data=iris)\n",
"plt.title('Violinplot petal length')\n",
"plt.show()\n",
"\n",
"# Pairplot\n",
"sns.pairplot(iris, hue=\"species\", height=3)\n",
"plt.suptitle('Pairplot of Features by Species', y=1.02)\n",
"plt.show()\n",
"\n",
"# KMeans Elbow Method\n",
"X = iris.iloc[:, :4].values\n",
"wcss = []\n",
"\n",
"for i in range(1, 11):\n",
" kmeans = KMeans(n_clusters=i, init='k-means++', max_iter=300, n_init=10, random_state=0)\n",
" kmeans.fit(X)\n",
" wcss.append(kmeans.inertia_)\n",
"\n",
"plt.plot(range(1, 11), wcss)\n",
"plt.title('Elbow Method For Optimal k')\n",
"plt.xlabel('Number of clusters')\n",
"plt.ylabel('WCSS') # Within Cluster Sum of Squares\n",
"plt.show()\n",
"\n",
"# KMeans Clustering\n",
"kmeans = KMeans(n_clusters=2, init='k-means++', max_iter=300, n_init=10, random_state=0)\n",
"y_kmeans = kmeans.fit_predict(X)\n",
"\n",
"# Wykres rozrzutu z klastrami\n",
"plt.figure(figsize=(10, 6))\n",
"plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s=100, c='purple', label='setosa')\n",
"plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s=100, c='orange', label='versicolor')\n",
"\n",
"# Plotting the centroids of the clusters\n",
"plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red', label='Centroids')\n",
"plt.title('Clusters and Centroids')\n",
"plt.xlabel('Sepal Length (cm)')\n",
"plt.ylabel('Sepal Width (cm)')\n",
"plt.legend()\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "d72759c2-b154-4362-b990-4d58f43f13a1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Liczba elementów w klasach:\n",
" species\n",
"setosa 50\n",
"versicolor 50\n",
"virginica 50\n",
"Name: count, dtype: int64\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAH3CAYAAABnxCF6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABzDElEQVR4nO3dd1yV5f/H8dc5h3VYAorg3ltU3JYjzZbZUOvbcJYjR1lpqWU5srLhyLSsTBs/MyszUxtm+S2/mrkyKzU3blFAQPaBc35/ICcRVMYNB+T9fDx8CPf83JcCb677uq/b5HA4HIiIiIiIYcyuLkBERETkWqOAJSIiImIwBSwRERERgylgiYiIiBhMAUtERETEYApYIiIiIgZTwBIRERExmAKWiIiIiMEUsETyQfPy5t212lbX6nWJiLEUsOSaMWHCBLp163bZ9f3796d///6X/fxqtm/fziOPPFKoGsuKAwcO8MADD+R7v6v9myxfvpwGDRpw/PjxwpRXYD/99BPjx493fr5582YaNGjA5s2bXVKPiJRcbq4uQMRVJk+enK/tv/jiCw4cOFBE1VxbvvvuO3bs2OHqMgz34YcfuroEESklFLCkzKpbt66rSxARkWuUbhFKmXXp7ahff/2V++67j/DwcNq0acPIkSM5dOgQkHn78auvvuLEiRM0aNCA5cuXA3D+/HmmT59O9+7dCQsLo2fPnixbtizbeWw2GzNmzKBz5840a9aMwYMHs2LFimy3uiZMmMDAgQOZPHkyrVu3plevXqSnpxMTE8PUqVPp2rUrTZs2pW3btowaNSrbLbL+/fszadIk5s+fT6dOnWjevDlDhw4lKiqKL7/8kptuuonw8HAGDRp0xVtrx48fp0GDBnzzzTcMHz6c5s2b06VLF+bOnYvdbs+27RdffMHtt99O06ZNueGGG5g7dy7p6ekAzJ07l3nz5gHQoEED5s6dC5CnaymIbdu20a9fP5o3b07btm0ZP348MTExzvXLly+ncePG7Ny5k/vuu4+wsDBuuOEGFixYkO04Z86c4cknn6Rt27a0adOGSZMmMXv2bOdt5/79+7Nlyxa2bNmS47bgoUOHGDx4MM2bN+f6669nxowZzvYQkbJJPVhyzbncDzaHw4HJZMp13bFjxxgxYgR9+vThySefJC4ujtmzZzNs2DB++OEHRo4cSUxMDLt372bevHlUr16dlJQUHnzwQaKionjssceoVq0aP/74IxMnTiQqKorhw4cDMGnSJFavXs1jjz1Go0aNWL16Nc8//3yOGrZt24bJZGLu3LkkJiZisVh45JFHiIuLY+zYsQQHB7Nnzx7mzJnDpEmTWLRokXPfb775hsaNG/PSSy9x8uRJpk2bRr9+/fDy8mL8+PHExsby0ksv8cILL/Dee+9dsf2mTJniDFbbt2/n7bffJjExkQkTJgDw7rvvMnv2bPr168czzzzDnj17mDt3LqdOneLll1/m3nvv5fTp0yxbtozPPvuM0NBQHA5Hnq8lP7Zu3cpDDz1E+/bteeONN4iLi2POnDkMGDCAZcuW4eXlBYDdbueJJ55g0KBBPPHEEyxbtowZM2bQsGFDOnXqRFpaGgMHDiQpKYlnn30WX19f3nvvPfbs2UNwcDCQeUv56aefdn5ct25ddu3aBcD06dMZPnw4Q4YM4YcffmDBggWEhobSr1+/Al2XiJR+ClhyTTlx4gRNmjS57Pq2bdvmuvzPP/8kJSWFRx55hJCQEAAqVarETz/9RFJSEtWrVycoKAgPDw9atGgBwJIlS9i3bx9LliyhVatWAHTq1In09HTefvtt7r//fuLj4/nqq68YP348Dz30kHObqKgoNmzYkK2G9PR0pk6dSo0aNQCIjIzEarUyfvx4WrduDUC7du04fvw4S5cuzbavzWZj3rx5lCtXDoC1a9eyYcMGfvzxR6pVqwbAnj17+Prrr6/aho0bN2bGjBkAdO7cmaSkJBYvXszIkSMxmUzMnz+f++67j+eeew6Ajh07EhAQwHPPPcdDDz1EvXr1CA0NBXC2VX6uJT9mzpxJrVq1ePfdd7FYLAA0b96c22+/nS+//JK+ffsCmeF65MiR3HvvvQC0atWKtWvX8vPPP9OpUydWrlzJoUOH+PLLL2natCkA7du3p3v37s5z1a1bF19f32zXlWXAgAGMHDnSud9///tffvvtNwUskTJMAUuuKcHBwcyfPz/XdVca1N68eXM8PT2555576NGjB126dKF169Y0a9bssvts2bKFKlWqOMNVljvvvJNly5axc+dOzpw5g8Ph4NZbb822Tc+ePXMELC8vL6pXr+78PCQkhI8//hiAkydPcuTIEQ4ePMjvv/+OzWbLtm+dOnWc4SqrHYKCgpzhCiAgIIDz589f9nourv9it9xyCx9//DF//PEHAMnJyXTr1i1bT2HWbbSNGzdSr169HMfMz7XkVXJyMjt37mTw4ME4HA5nPdWqVaNOnTps3LjRGbAAwsPDnR97eHgQFBREUlISAL/99hvVqlVzhisAX19funbtmqcnBLNCI4DJZKJKlSrEx8cX6LpE5NqggCXXFA8PD8LCwnJd5+Pjc9n9qlatyuLFi3nvvff4/PPP+fDDD/H39+fBBx/k8ccfx2zOOVwxLi6OChUq5FietSw+Pt45Fqh8+fK5bnOx8uXL57iFuXLlSmbNmsWpU6cICAigYcOGztteF8vqWbmY1Wq97PVeScWKFbN9HhQUBGReT9ZYrGHDhuW675kzZy573LxeS15l1bNgwYIc46kAPD09s31+6bnMZrNzTqtz587l+DeC3P+dcnNpW198bBEpmxSwRC5o1qwZ8+bNIy0tje3bt/PZZ5/xzjvv0KBBA3r06JFj+3LlynHkyJEcy8+ePQtAYGAgGRkZAERHR1OpUiXnNtHR0VetZ9u2bYwfP55+/foxePBg52231157je3btxfoGvMiNjY22+dZtZYvX57U1FQAZsyYQc2aNXPse7lAUhTX4uPjg8lkYtCgQdx+++051ucnYIaEhOT6b5mXfycRkdzoKUIRMuc36tatG2lpaXh4eNChQwemTZsGwKlTpwBy9GK1adOGEydO5AgIK1euxN3dnWbNmtGqVSssFgs//PBDtm0u/Tw3O3bswG63M3r0aGcgycjI4NdffwXI8WSfUdatW5ft8zVr1mC1WmnevDnNmzfH3d2dyMhIwsLCnH/c3d2ZOXOm84nAS9uqKK7F19eXxo0bc+jQoWy11KtXj3nz5uVr8s+2bdty7Ngx9uzZ41yWmprK+vXrs22XW0+miEhu1IMlQubA5BkzZjBq1Cj69euHxWJh6dKleHh40LVrVwD8/f2Jioril19+oVGjRvTu3ZslS5bw6KOPMnr0aKpVq8a6dev48ssvefTRR/H398ff358+ffowa9YsbDYbDRs2ZO3atfz3v/8FrvwDO2v81wsvvECfPn2Ij49n8eLF/PPPPwAkJSXlemuwsL7//nsqVKhAly5d2LJlC5988glPPvkk3t7eeHt7M2TIEObMmUNCQgLt2rUjMjKSOXPmYDKZaNiwobOtAFavXk3z5s2L7FrGjBnDsGHDGDt2LHfeeScZGRksWrSInTt3MmLEiDwfp2fPnrz33nuMGjWKxx9/HH9/fxYtWkR0dDSVK1d2bufv78+OHTvYtGkTjRs3zne9IlJ26NcxEaBhw4a88847JCQkMGbMGB599FFiY2NZtGgRtWvXBqB3795UqVKFUaNGsWLFCqxWK//3f/9Ht27dePPNNxkxYgTbt2/npZde4rHHHnMe+/nnn+f+++9n0aJFjBw5ktOnTzt/+Ht7e1+2pnbt2jFp0iR27NjB0KFDmT59OpUrV3bOMVVUtwkff/xxDh48yMiRI1mzZg2TJk3KNubqiSeeYMKECaxdu5ahQ4fy+uuv06pVKxYvXoyfnx8AN998M2FhYUyYMIGFCxcW2bV07NiRhQsXcvr0aUaPHs24ceOwWCx88MEHOZ70uxI3NzcWLlxI48aNmTJlCuPGjaN+/frcdNNN2f6N+vbti7u7O0OHDs3RuyUicjGTQyMxRYpMbGw
"text/plain": [
"<Figure size 620.625x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABJ4AAAHkCAYAAAB/kuXqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUZfr/8feZySSZ9BBCL6H3XlUQRVwVG6KuDQvY1gK7dvzZdRULiAiClcWyil3Rxc6uflU6CEjvnYSQXqed3x/DDIQESJnJpHxe18UFmTlzzj3nJOSe+zzP/RimaZqIiIiIiIiIiIgEmCXUAYiIiIiIiIiISN2kwpOIiIiIiIiIiASFCk8iIiIiIiIiIhIUKjyJiIiIiIiIiEhQqPAkIiIiIiIiIiJBocKTiIiIiIiIiIgEhQpPIiIiIiIiIiISFCo8iYiIiIiIiIhIUKjwJCIBY5pmqEOoNWr7uart8YuIiASLfkfKsfQ9IfWdCk8i9cTEiRMZPnz4cZ+/9tprufbaa4/79cksX76cW2+9tUox1hdbtmzhqquuqvDrKnpNTuazzz6jU6dO7Nmz57jb7Nmzh06dOvHZZ58B4HA4mDRpEl999ZV/m5N9b4mIiNQUyofqlmPzlLIEOn+qCOVNIl5hoQ5ARGqmxx57rELbf/zxx2zZsiVI0dQt33zzDStXrgx1GJxxxhl8+OGHNGrUqNyvSUtLY86cOUyaNCmIkYmIiNQMyoekKpQ3iXip8CQiZWrfvn2oQ5Aga9CgAQ0aNAh1GCIiIjWW8iERkarTVDsRKdOxw5J///13rrjiCvr06cOAAQO4/fbb2bZtG+AdMvz555+zd+/eEsOdc3NzmTRpEiNGjKBHjx5ccMEFfPLJJyWO43Q6mTx5Mqeffjo9e/bkxhtv5IsvvigxBWzixIlcf/31PPbYY/Tv359LLrkEl8tFRkYGTzzxBGeeeSbdu3dn4MCB3HHHHSWmjl177bU8+uijzJo1i6FDh9KrVy9uvvlm0tPT+fTTTzn77LPp06cPN9xwQ7mmnP3nP//hb3/7G7169WLYsGFMnz4dj8dTYtuPP/6Y888/n+7du3PGGWcwffp0XC4XANOnT2fGjBkAdOrUienTpwOU672cyI8//kinTp1Yt26d/7GvvvqKTp06MXfuXP9jW7dupVOnTixatKjMqXbff/89F110ET179uSSSy5hw4YNJc7BWWedBcCDDz5Yapj4Z599xjnnnEOPHj246KKL+OWXX8oVu4iISE2lfKi0+fPn+3OFwYMHc++995KWllZimxPlQr73cu211/LJJ59w5pln0qdPH6677roSeQzA0qVLufHGGxkwYADdu3dn+PDhZeZeFeHxeHj99dc5++yz6d69O+eccw7vvvtuiW2uvfZaHnroIV5//XXOOOMMevTowZVXXsmqVatKbPe///2P0aNH07NnT8455xy+/vprzj77bKZPn668SeQoGvEkUs8c/Uv/aKZpYhhGmc/t3r2b2267jUsvvZS77rqL7Oxspk6dyi233ML333/P7bffTkZGBuvWrWPGjBm0atWKoqIirr76atLT0xk/fjwtW7bkxx9/5KGHHiI9PZ2//e1vADz66KN8/fXXjB8/ni5duvD111/zyCOPlIph2bJlGIbB9OnTyc/Px2q1cuutt5Kdnc0999xDcnIy69evZ9q0aTz66KPMnj3b/9r//Oc/dO3alaeffpp9+/bx1FNPMWbMGCIjI3nggQfIysri6aef5sknn+T1118/4fl7/PHH/QWn5cuXM3PmTPLz85k4cSIAr732GlOnTmXMmDE8+OCDrF+/nunTp7N//36eeeYZLr/8cg4cOMAnn3zChx9+SJMmTTBNs9zv5XhOPfVUwsPD+f333+natSsAixYtArxJ25VXXgnAL7/8QlxcHP3792fevHkl9rFgwQImTJjA+eefz7333suGDRu47777/M83atSIGTNmcOedd3Lbbbfxl7/8xf/c/v37ef311/n73/+O3W7nxRdfZPz48SxYsICkpKSTxi8iIlKdlA9VLh9avnw59957L7fffjsDBgzgwIEDvPDCC9xzzz3+4s3JciGf9evXs23bNu6++27i4+N5+eWXufbaa5k/fz6NGzdmw4YN3HDDDZx77rlMnToV0zT58ssvmTFjBikpKVx44YXlu9jHePzxx/nss8+49dZb6dOnD0uXLuWZZ54hJyeHO+64w7/dd999R7t27Xj44YcxTZPnnnuOCRMmsGDBAqxWK4sWLeL222/nzDPP5O9//zs7d+7kscceo7i4GFDeJHI0FZ5E6pG9e/fSrVu34z4/cODAMh9fvXo1RUVF3HrrrTRu3BiApk2b8tNPP1FQUECrVq1o0KAB4eHh9O7dG4D333+fTZs28f7779OvXz8Ahg4disvlYubMmVx55ZXk5OTw+eef88ADDzB27Fj/Nunp6fz6668lYnC5XDzxxBO0bt0agNTUVOx2Ow888AD9+/cHYNCgQezZs6fECB/w3kWcMWMG8fHxAPzwww/8+uuv/Pjjj7Rs2RLwJj9ffvnlSc9h165dmTx5MgCnn346BQUFvPfee9x+++0YhsGsWbO44oorePjhhwEYMmQICQkJPPzww4wdO5YOHTrQpEkTAP+5qsh7OZ6oqCgGDhzIwoULuemmmwBYuHAh3bp1Y8mSJf7tfvnlF4YOHUpYWOn//l955RW6devGlClT/O8P8H8dHh5Oly5dAGjVqpW/wAXeu4evvPIK7dq1AyAiIoKxY8fyxx9/+O/2iYiI1ATKhyqfDy1fvpyIiAhuvvlmIiIiAEhISGDNmjWYpkleXl65ciHwjgSbNWsWAwYMAKBnz56MGDGCOXPm8MADD7BhwwZOPfVUXnjhBSwW70Sd0047jf/9738sXbq0UoWn7du389FHH3H33Xdzyy23+OMzDIPXXnuNq6++msTERP+5fuutt4iJiQEgPz+fBx54gPXr19O9e3emT59O+/btmTFjhr9YmZSUxN133w0obxI5mgpPIvVIcnIys2bNKvO5EzXP7NWrFxEREVx22WWMHDmSYcOG0b9/f3r27Hnc1yxZsoTmzZv7kyyfiy66iE8++YRVq1aRlpaGaZqce+65Jba54IILSiVakZGRtGrVyv9148aNeeeddwDYt28fO3fuZOvWraxYsQKn01nite3atfMnWb7z0KBBA3+SBd6kKTc397jv5+j4j3bOOefwzjvv8McffwBQWFjI8OHDS9xJ9Q2t/u233/zJ1tEq8l5O5IwzzmDy5Mk4HA5SU1PZu3cvEydOZPz48ezYsYNGjRqxbNmyEncbfYqKili7di0TJkwo8fh5553nLzydSGJioj95AvzntjznVEREpDopHzpyHiqaDw0YMICpU6dy4YUXct5553H66aczZMgQhg0bBsDKlSvLnQs1a9bMX3QC7wihPn36sHz5cgBGjRrFqFGjKC4uZteuXezcuZO1a9fidrsrlB8dbdGiRZimWWZ8s2bNYvny5YwYMQLw9vfyFZ0Af7GxsLAQh8PBypUrueOOO0qMkDvnnHPKvLl3LOVNUt+o8CRSj4SHh9OjR48yn4uOjj7u61q0aMF7773H66+/zkcffcScOXOIi4vj6quv5u9//7v/LtTRsrOzadiwYanHfY/l5OSQkZEBUGpIcVmvS0pKKjX0fd68ebz44ovs37+fhIQEOnfuTGRkZKnXHp00+Njt9uO+3xM5dgU4X3PunJwcf78B3x20Yx3b/+Bo5X0vJ3LGGWfwz3/+kxUrVrBr1y5SUlI466yziI6OZsmSJSQlJeF2u/0jmY6WnZ2NaZqlmo2Xd8W7qKioEl/7rlVVejCIiIgEg/KhIyqaD/Xp04fXX3+dOXPm8NZbb/Hqq6+SnJzMzTffzPXXX09WVhZQvlyorBwjKSmJtWvXAt6bYk899RRffvklLpeLFi1a0KdPH8LCwjBNs0Jx+/jiO//888t8PjU11f/vY8+N7/p6PB6ysrJwu92lrllYWJh/xNSJKG+S+kaFJxEpl549ezJjxgwcDgfLly/nww8/5NVXX6V
"text/plain": [
"<Figure size 1200x500 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAqoAAAImCAYAAACb96jJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABKLUlEQVR4nO3de3yPdePH8fd3trHZ5jSW5pAwx405LFSWySFRiFvRUA5pKJY74s7hJlQOOW1SbnI7Fckhcyt0UGHOZGPmGGVOjbFhs+v3h4fvr7WpfWdzXbbX8/HwmF3X9f1839/Zd3v7XCebYRiGAAAAAItxMjsAAAAAkBWKKgAAACyJogoAAABLoqgCAADAkiiqAAAAsCSKKgAAACyJogoAAABLoqgCAADAkiiqAJDL7vV9VPLrfVvy6+sCkH0UVQCmCw0NVbVq1TL8adCggbp3767o6GjTcoWEhGjYsGEOPWbjxo0aOnRoHiXKLDIyUnPnznXoMdu2bVO1atW0bdu2O26Tk9eeWy5fvqyhQ4dqx44d9mWhoaEKDQ01JQ8A81BUAVhCzZo19emnn+rTTz/V4sWLNXHiRLm4uKhXr146fPiw2fGybf78+frtt9/u2fN98MEHSklJuWfPdy/ExsZq5cqVSk9PNzsKAJM5mx0AACTJw8NDdevWzbCsSZMmaty4sVasWHFPZykBANbAjCoAy3Jzc1PhwoVls9kyLI+KilLHjh0VGBioRx99VCNHjtSlS5ckSVeuXFFISIhat26tGzduSLp1rOPLL7+sxo0b6/z58zp16pSqVaumtWvXql+/fqpTp46Cg4M1Y8aMv5zFS0pK0oQJE/Tkk0/K399fbdu21fLly+3rQ0NDFR0drejo6L/ctT5s2DCFhoZq+fLlatasmQIDA9W9e3fFxMRk2O7XX39VeHi4goKCVKdOHfXo0SPDNtWqVZMkzZw50/53SdqwYYO6du2qwMBA1a5dW61bt9bChQuz8yW/o+vXr+u9995TcHCwateurXbt2ikqKirDNiEhIZo+fbreffddNWnSRAEBAerVq5eOHTuWYbsvvvhCbdq0kb+/v5555hlt2bJFNWvW1IoVK7Rt2zZ1795dktS9e/cMu/sNw9BHH32kJ554QgEBAerSpYv2799/V68LgLVRVAFYgmEYSktLU1pamlJTU3Xu3DlNmTJFN27c0HPPPWffLiIiQoMHD1adOnU0ffp09e/fX+vXr1doaKiuXbsmDw8PvfPOOzp+/Lhmz54tSVq8eLF+/PFHvfPOO/L29raPNXr0aHl4eGjGjBlq3769IiIi9N5772WZ79q1a+ratatWr16tl19+WREREapfv75GjBhhf55Ro0apZs2a9sMYatWqdcfXGxsbq6lTp2rAgAF6//33lZiYqNDQUCUkJEiSLl68qOeff14HDhzQ22+/rcmTJys9PV3dunXTkSNHJEmffvqpJKlTp072v3/77bfq37+/atWqpYiICM2YMUO+vr4aO3asdu3aleN/m/79+2vp0qV66aWXFBkZqcDAQA0ePFgrV67MsO2CBQt09OhRTZgwQePGjdPPP/+c4VjXlStXatiwYapXr54iIiLUqlUrhYWF6ebNm5KkWrVqaeTIkZKkkSNHatSoUfbH7ty5U19//bXefvttvfvuu0pISFC/fv2UlpaWo9cFwPrY9Q/AErZv355lsQsPD1flypUlSZcuXVJkZKQ6d+6cocD4+fmpW7duWrFihbp27arGjRura9eumjNnjurWratJkyapS5cuCgkJyTB2zZo1NWnSJElS06ZNlZycrIULFyosLExeXl4Ztl2xYoXi4uK0ePFi1a9fX5L0+OOPKy0tTREREXr++edVpUoVeXh4SFKmwxj+LCkpSZGRkWrYsKEkKSAgQE8++aTmz5+voUOH6pNPPlFiYqKWLFkiX19fe8Y2bdpo2rRpmj59uv05HnjgAfvf4+Pj1b59e40YMcL+XIGBgXrkkUe0fft21atX7y9zZeWnn37S5s2bNXXqVLVp08b+2lNSUjRp0iS1bdtWzs63fp14eXkpIiJChQoVkiSdPHlSM2bM0O+//64SJUpo2rRpatasmcaNG2cfx8XFRZMnT5Z06xCQKlWqSJKqVKli/7skubq6as6cOSpevLikW7Pn//rXvxQfH6/q1as7/LoAWB8zqgAsoVatWlq+fLmWL1+uZcuWae7cuerRo4emTp2qqVOnSpL27NmjGzduqF27dhke26BBA/n6+mbY1T5kyBCVLVtWr7zyisqUKaO33nor03M+88wzGT5v1aqVUlNTtWfPnkzbRkdHy9fX115S/zjG9evXtXfvXode74MPPmgvqZJUpkwZBQYGaufOnZKkLVu2qEaNGvLx8bHPNDs5Oalp06b66aef7jhu79699e677yo5OVkHDx7UunXrNGfOHElSamqqQxlv27Jli2w2m4KDg+1Z0tLSFBISonPnzmU42c3f399eUqVbJVqSUlJSdOLECf36669q3bp1hvGffvrpbOWoUqWKvaRKUrly5STdKv0A8idmVAFYQtGiReXv759h2WOPPabk5GR9/PHH6t69u/041D/uvr/N29s7Q2Fxd3dXq1at9NFHH6lRo0Zyc3PL9JgyZcpk+LxkyZKSbl0e6c8uXbp0x+e902P+yp+fW5JKlSqlAwcOSJISExN14sSJOx4+kJKSkuVrunjxokaNGqUNGzbIZrOpYsWK9nKd0+uSJiYmyjCMO87Gnj17VjVq1JCkTJmcnG7Nh6Snp+vixYuSbr3OPypdunS2cri7u99xbAD5E0UVgKXVqFFDy5Yt06lTp1SsWDFJ0vnz5+2HA9x27tw5lS9f3v55fHy8PvnkE9WoUUOfffaZ2rVrpwYNGmR4TGJiYobPL1y4IClzkZKkYsWK6cSJE5mWnzt3TpJUokQJh17Xn59buvW6bj+3p6engoKC9Oabb2b5eFdX1yyXDxkyREeOHNG8efNUr149ubq6KiUlRcuWLXMo3x95enrK3d1dCxYsyHJ9xYoVszXO7dnV21/n2/78OQDcxq5/AJa2e/duFSpUSOXLl1edOnXk6uqqNWvWZNhmx44d+vXXX+0zfmlpaRo6dKh8fX21ZMkS1a5dW2+99ZaSk5MzPG7Tpk0ZPl+/fr3c3NxUp06dTDkaNmyo06dP23fN37Z69Wq5uLgoICBA0v/P8v2dkydPKj4+3v55QkKC9uzZo8aNG0uSgoKCdOzYMVWqVEn+/v72P6tXr9ayZcvsu9f//Hw7d+5Uq1at1KhRI3uZ/f777yXlfOYxKChIycnJMgwjQ5bDhw9r1qxZ2T6Z6YEHHlCFChX09ddfZ1i+fv36DJ//8dABAAUbM6oALOHKlSsZjg1NTU3Vxo0btWbNGnXp0sW+W75v376aOXOmXFxc1Lx5c506dUrTpk1TlSpV1LFjR0nShx9+qAMHDmjhwoVyc3PT2LFj9dxzz2nSpEn2M8ol6X//+5+8vb0VHBys6OhoLVq0SIMHD860i1mSOnbsqMWLF2vAgAF67bXXVL58eW3atEmff/65BgwYYD/5ysvLS7t377Zfcun2LPCfGYahsLAwDRo0SIUKFdLMmTPl5eVlvxxTz549tWrVKvXs2VMvv/yySpQooaioKH322WcZjre9/Xzbt29XgwYNFBAQoDVr1qhWrVp64IEHtHv3bn344Yey2Ww5vjFAcHCwGjZsqLCwMIWFhaly5crat2+fZsyYoccee8z+b/N3bDabXnvtNQ0ZMkSjRo1SixYtdPDgQc2aNUvS/5duT09PSbeuYFCsWDFOlAIKMIoqAEuIiYlRly5d7J8XLlxYFSpU0ODBg9WrVy/78oEDB8rb21sLFy7UsmXLVLx4cbVu3VqDBg2Sm5ubDh48qMjISD3//PP2Xf3Vq1dXz549NXfuXLVo0cJ+iMDrr7+u6OhoffrppypbtqxGjhypF154Ict8bm5u+u9//6vJkydr+vTpunLlih5++GG988476tSpk327bt266eeff1afPn00YcKETCd+3fbggw/qpZde0vjx45WSkqImTZooMjLSfrK
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAqoAAAImCAYAAACb96jJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB4pklEQVR4nO3dd3RU1f428OdMS28kIXRCEpKQkEDoCIIEQUUQQbiiiKAiKtgr6mu7XsF7UbkCgvUnckUUVCIoWCgiKL2XFFIIHdLbJFP3+8eQgUiAmWRmzkzyfNZiJTlln2+GlCf77L2PJIQQICIiIiJyMwq5CyAiIiIiqg+DKhERERG5JQZVIiIiInJLDKpERERE5JYYVImIiIjILTGoEhEREZFbYlAlIiIiIrfEoEpEREREbolBlYjIRVz9fJWm+jyXpvp5EdHlGFSJyCXuu+8+9OnTB3q9/orHjB49GuPHjwcAxMXFYf78+XZd49Jztm/fjri4OGzfvr3hRdtwHVutWLEC//73vx1eS330ej1mz56N1atX23Xe999/j7i4OJw8efKKxzTkc3eUs2fP4qGHHsKpU6es21JTUzFz5kxZ6iEi52NQJSKXGDduHMrKyvDHH3/Uuz8jIwMZGRkYN24cAOCbb76xhtaGSExMxDfffIPExMQGt+FIixYtQmlpqUuudf78eSxevBhGo9El13OVv/76C7///rvcZRCRCzGoEpFLDBs2DEFBQVi1alW9+9PS0uDr64tbb70VANC9e3e0atWqwdfz9/dH9+7d4e/v3+A2iIhIXgyqROQSGo0Go0aNwsaNG1FRUVFnn8lkwo8//oibb77ZGiz/fov5/PnzePHFFzF48GAkJydj3LhxWL9+/RWv9/db//Pnz8ewYcPw+++/Y9SoUejatStuuukmrFy58rJztmzZgokTJyI5ORnDhg3Dl19+edXP7Vq1paam4tSpU1i5cuVVb61PmjQJM2fOxEcffYQBAwagR48eeOSRR3DixIk6x2VlZeGhhx5Cjx490KNHD8yYMcN6zMmTJzF06FAAwIsvvojU1FTreStWrMDYsWPRvXt3JCcnY/To0VizZs1VP7drKS0txauvvorrrrsOSUlJ+Mc//oGtW7fWOSYuLg5Lly7Fyy+/jD59+iAlJQWPP/44CgsL6xz32WefYejQoUhOTsaECROwYcMG6//h999/jxdffBEAMHTo0Dq3+w0GA/7zn/9gwIAB6N69O+6//37k5+c36vMiIvfAoEpELjNu3Djo9Xr8/PPPdbZv2bIFBQUF1tv+f1dYWIhx48Zhx44deOqppzB//ny0bdsWM2bMuGIPbX0KCgrwz3/+E/feey8+/vhjtGvXDjNnzkROTk6d45566ikkJCTggw8+wIABA/Dmm2/if//7X4NrW7BgAcLDwzF48GB88803aNmy5RVrXL9+Pb777ju8/PLL+Oc//4mMjAzce++90Gq1AIC8vDxMmDABRUVFePvtt/HWW2/hxIkTuOuuu1BUVISWLVtiwYIFAIBHHnnE+v7SpUvx6quvYujQofjoo48wZ84cqNVqPPfcczh9+rTNr+GldDodJk+ejPXr1+Opp57CggUL0KpVK0ydOvWysDp37lyYzWa89957eP755/H7779j1qxZ1v0LFizAO++8g1tuuQULFy5Et27d8NRTT1n333DDDXjkkUesx06fPt26b82aNTh69CjefvttvPrqqzh48GCdc4nIc6nkLoCImo8uXbogISEBq1evrjP+dOXKlYiOjkbPnj3rPe/zzz9HcXEx1q5di/bt2wMABg8ejClTpuA///kPRo4cCYXi2n93V1dX46233kL//v0BAJGRkRgyZAg2bdqE6Oho63E33ngjXn75ZQDA9ddfj/Pnz2PRokWYOHHiZdexpbaEhARoNBq0aNEC3bt3v2qNWq0W3333HTp06AAAiIqKwpgxY7By5UpMnDgRCxYsgLe3NxYvXmztfe7fvz9uvPFGfPrpp3jhhRfQpUsXAECHDh2QkJAAADhx4gTuv/9+zJgxw3qtdu3aYezYsdizZw/atGlzzdfv73744QdkZGRg+fLl6NatGwBg0KBBmDRpEt555x1899131mNjY2Mxe/Zs68cHDhyw/sGi1WrxySefYOLEiXj22WcBAAMHDkR1dTW++eYbAECLFi2sr0mXLl3Qrl07a1sRERFYuHAh1Go1ACA/Px8ffvghKisrOfSDyMOxR5WIXGrcuHHYuXMnzp49CwCoqKjAhg0brtibCgA7duxASkqKNQjWuu2221BQUIDc3Fybr39pUKwdA1vbW1lr9OjRdT4ePnw4ioqKkJeX59TaACAlJcUayAAgISEB7du3x65duwAA27ZtQ9++feHt7Q2j0Qij0Qh/f3/06tULf/311xXbnTlzJp577jlUVFTg4MGDWL16NZYuXQrAcuu8IbZu3Yrw8HAkJiZaazGZTBgyZAgOHTqEsrIy67F/D+itWrVCdXU1AGDfvn2oqanBzTffXOeYkSNH2lRHcnKyNaQCsP5flJeXN+TTIiI3wh5VInKpUaNG4d///jd+/PFHTJ06FWvWrIHZbL4sHF6qrKysTg9arbCwMAD2BRIfHx/r+7W9o39fl/Pvt+ZDQ0OveB1H1lbftWuvX9tOaWkp1qxZU+/Y0hYtWlyx3ePHj+PVV1/Ftm3boFKpEBUVhbi4OAANX5e0tLQUBQUFV1xZoaCgAEFBQQDqvu6A5bWvvW5xcXG99de+htfi6+t7WdsAYDabbTqfiNwXgyoRuVRgYCCGDRuG1atXY+rUqUhLS0Nqaqo1DNYnKCjosok3gCUIAUBISIhDa/z7MlJFRUUAUG+Njq6tviWsCgsLrb2sAQEBuO6663DfffdddpxKVf+PdLPZjGnTpkGtVmP58uVISEiASqVCdna2XWN8/y4gIACRkZF455136t1fX4CvT23PdnFxMaKioqzbawMsETVfvPVPRC43btw4ZGRkYMeOHdi7d+9Vb/sDQO/evbF3797LZr+vWrUK4eHh6Nixo0Pr27BhQ52Pf/75Z7Rt27bOLXl7a7NlDC0A7N27t05AO3z4ME6ePGkdV9unTx9kZ2ejS5cuSEpKQlJSErp27YrFixfjt99+AwAolco6bZaUlCAvLw/jxo1DcnKyNdDWrmnb0J7HPn364MyZMwgNDbXWkpSUhK1bt+LTTz+9rI4riY+PR0BAAH799dc623/55Zc6H9v6GhJR08EeVSJyuX79+qFdu3Z45ZVX0KpVKwwcOPCqx993331YtWoV7rvvPjz66KMICQlBWloatm3bhlmzZjk8wCxevBje3t7o3r07fv31V2zcuBHvvvtuo2oLDAzEkSNHsGPHDiQnJ8Pb27ve9qqrq/Hggw/ikUceQVVVFebOnYvY2FjreM3p06djwoQJeOihh3DXXXfBy8sL33zzDdatW4d58+YBsPR0ApYxpNHR0ejWrRvatm2LpUuXolWrVggMDMSWLVvwxRdfWK/ZEGPHjsWXX36J++67Dw8//DBat26Nv/76C5988gnuueeeOuNGr8bf3x9Tp07FvHnz4OPjgz59+mDHjh1YtmwZANR5DQHgt99+w6BBg+pMgCOipol/nhKRy0mShLFjx+LYsWMYO3bsNYNmeHg4li1bhq5du+Ktt97CE088gTNnzmDhwoW44447HF7fSy+9hE2bNuGRRx7B/v37MW/evCtO7LG1tvvvvx+FhYV44IEHcOjQoSteu1evXhgyZAhefvllzJo1C/3798eSJUug0WgAWHofly5dCkmS8Pzzz+Pxxx9HQUEBPvjgAwwfPhyAJfjdd999WLduHaZOnQq9Xo+FCxciIiICM2fOxJNPPol9+/Zh0aJFiIqKsk7Uspevry+WLl2Knj17Ys6cOXjwwQfx66+/4plnnrGueWqrhx56CI8++ijS0tLw0EMPYdeuXdYVAGrHoPbt2xfXXXcd3n33XZc9jpaI5CWJho6iJyJqYrZv3457770XS5YsQd++fV1+/UmTJgHAFddsbaqMRiN+/PFH9O3bF61bt7ZuX7p0Kf71r39h+/b
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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5sxh6NChdOvWjerqai666CL+/e9/061bNy6//HJGjBjB+++/z/nnn09RUVHk+H/961+RgN2FF17I7Nmz2b9/PzfffHMkQNqQ9evX84c//IFu3bpx0UUXoVKpeOyxx7jtttsi+9QuAPT555/XOf6zzz7DaDQyY8aMuOcYNWoUBoOBr7/+muuvv57vvvsOj8cTtc/JJ5/MCSecUOfYxYsXc8stt9C9e3cuvPBCAB5++GHuuuuuqP0WLVrEhRdeyPLly5k8eTKXXnopiqJw7733cvfdd0ftu3TpUn71q18xb948xowZw4UXXojb7eauu+7iqaeeqre+br/9du69916CwSAXXnghM2fOZPXq1Vx44YWRextg5cqVXHvttezevZvTTjuNSy65BI1GwxNPPME999xT7zmEEEIIISIUIYQQQnQqTz31lJKbm6t88MEHMdM3btyoDBo0SBk6dKhSUlKiKIqifP7550pubq7y2GOPRe1bXV2tjB8/Xhk4cKDidrsVRVGUAwcOKLm5ucq1114b2e/SSy9VcnNzlYceeqjO+XJzc5Xc3Fzlvvvui2wLBALKDTfcUKecubm5yllnnVXns9x1111KMBiMbF+1apUyaNAgZfz48YrP54tbrobqKNH51n6GUaNGKU899VTMf99++21k3/z8fGXIkCHKaaedppSXl0e2e71e5aKLLlIGDBigbN++XVEURSkoKFAGDBigXHLJJVFlVhRFueaaa5Tc3Fxl8eLFkW233367kpubq2zZsqXO5z6yDLUmTZqkjBo1KvLzBx98oOTm5ioTJ06MXPta9957r5Kbm6u88847UdsXLFig5ObmKjfddFNk29ixY5WpU6cqgUCgzueeNWtWfVUZqfvc3Fzltddei2z3eDzKnDlzlNzcXGXJkiWKoiiK0+lUhg8frsycOTMqj6KiImXgwIHKzTffXO+5FEVRPv74Y2Xw4MGRcw4ePFi54IILlCeeeELZvHlzveV76aWXItvdbrdy4YUXKrm5ucry5csj244//njlxBNPVA4dOhTZNxQKKTfddJOSm5urfPfdd4qiKEowGFQmTZqkDBs2TFm/fn3U5z7jjDOUQYMGKaWlpYqi1L1uc+fOVXJzc5Vbb7016j45cOCAMnbsWGXixImK3+9XFEVRrr/+eiU3N1fZv39/ZL9AIKCcffbZysCBA5WqqqoG60wIIYQQQno+CiGEEJ3UvHnzePrppyP/Hn/8cW688UYuueQSgsEgf/rTnyJz2w0aNIgHHnigzgrNVquVIUOGEAqFqKysbPCc06dPj7ndbDZHhmEDaLVabrvtNlQqFZ999lnc/D7++GPMZjN33XUXGo0msn306NHMmjWL4uJiFi9e3GC5WivfWtXV1TzzzDMx/x055PnTTz/F7/dz44034nA4ItsNBgPXX3894XA4Mnxcr9fzyCOP8Oc//zmqzADjxo0DoKysrNlljmfixImYTKbIz8FgkI8//pjc3NxIL79akyZNYuTIkXzzzTc4nU6gZghwWVkZu3btiuyXlZXFl19+yTvvvNOoMnTv3p1LLrkk8rPRaOSWW24BiNw/FouFqVOnsnv3brZu3RrZ94svviAUCnH22Wc3eJ6zzz6b//3vf5x55plYrVYCgQDr1q3jueeeY9asWfz+97+PmqqgVteuXaN
"text/plain": [
"<Figure size 1320.62x1200 with 20 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAImCAYAAABZ4rtkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAADYoElEQVR4nOzde1xU1drA8d8eLjIj6ACZN8wLqKmpaAlp3isxTVMpLa0w7a5wUk9Zr1ZWandNsLLUTniKio5WerToYmmWQZaoJy0CL2WaJjAqziADs98/RkgEZS57YGCebx8/6Z691jxrr5k988zaey1FVVUVIYQQQgghhBAO09V1AEIIIYQQQghR30giJYQQQgghhBBOkkRKCCGEEEIIIZwkiZQQQgghhBBCOEkSKSGEEEIIIYRwkiRSQgghhBBCCOEkSaSEEEIIIYQQwkmSSAkhhBBCCCGEkySREkKIWibroNcdXzz2vtjmc8kxEEJ4giRSQgifsmvXLh588EEGDx5Mjx49uPrqq5k7dy6///57pf1uu+02brvtNk2f+8SJE8yePZtt27ZpWq836dy5MykpKTXud+LECZYuXcqoUaPo1asXffv25fbbb+eLL77wWGxffPEFs2fP1qSuNWvW0LlzZw4ePHjefQ4ePEjnzp1Zs2aNJs/pSly5ubnccsstlfZxtI/O5Wy5w4cPc8UVV5CZmVnjvkOHDqVz587MmjXrvPuMHz/epdgd7feHH36YoUOHOlW3EMK3SSIlhPAZb7/9NjfffDP5+fnMmjWL5cuXc++99/L9998THx/PTz/95NHn37NnDx9++CE2m82jz+Pt8vLyGDNmDP/5z38YO3YsL7/8Mk899RTh4eHcf//9JCcne+R533zzTQ4fPqxJXYMHD+a9997j4osv1qQ+rZwb18cff8z27dtrPY4//viDO+64g5MnTzpcRqfTsXHjRk6fPl3lsYMHD7Jjxw6XYnG03++//36WLl3q0nMIIXyTf10HIIQQteGHH35gwYIFTJo0iTlz5lRsj42N5eqrr2bcuHE88sgjrF27tg6jbPisVisPPPAAAQEBpKWlER4eXvHYNddcg9Fo5OWXX+bqq6+mW7dudRjphYWFhREWFlbXYVRR13HZbDY++OADnnvuOafL9u7dm23btrFp0yaGDRtW6bENGzbQpUsX9uzZo1WoVVxyySUeq1sI0TDJiJQQwiesXLmSkJAQZs6cWeWxsLAwHn74YYYNG0ZRUVG15au7pCglJYXOnTtX/LugoIB//vOfXHXVVXTv3p0bbriBDz/8EIDMzExuv/12AG6//fZKlw1+/vnnjBs3ju7du3PVVVcxf/58zGZzpee59tprWbp0KbGxsVxzzTUUFhby008/kZCQwOWXX06vXr2YPHlyjb/aFxQU8MQTTzBkyBAuu+wyYmJimDZtWqVL1G677TbmzJnD66+/zuDBg+nevTs333xzlbqzsrKYMGECPXv2JC4ujm+//faCzw2wadMmcnJy+Mc//lEpiSo3ffp0Jk2aRFlZWcW2Q4cOMXPmTGJiYujZsycJCQns3r274vHyS+g+/vhjkpKS6NWrF3369GHOnDmcOnWqok1ZWVlkZWXRuXNnMjMzyczMpHPnzrz77rsMGTKEfv36sWXLFgC++eYbJk6cyOWXX05sbCyzZs2qNKpR3aV9n376KaNHj6ZHjx6MHTuWn3/+uUr7/v3vfzN8+HC6d+/OgAEDmDdv3nlfc59//jmdO3eu1NZ169ZVxFwuLy+Pzp07891331WKKyUlpWKE5dzXb1FREXPmzCEmJoZevXqRlJREfn7+eXrNcb/88gvz5s1jzJgxTidTbdq04bLLLuPjjz+u8tiGDRsYOXJkle2nT5/mueeeY9CgQVx22WWMGjWKDRs2VDzuTL+fe2mfqqq8/fbbjBw5kh49enDttdeyfPlyud9KCFFBEikhRIOnqipbtmyhb9++6PX6avcZPnw406dPJzg42OXnefDBB8nNzeWJJ57g9ddfp2vXrsyePZvMzEy6devGY489BsBjjz3G448/Dti/GE+bNo0OHTrw8ssvM336dNauXcv9999f6QvboUOH+Oyzz1i0aFHFiM6dd95JaGgoycnJLF68GIvFwtSpU897OZWqqtxzzz188803zJo1i5UrV3L//ffz7bffVsRWLiMjgy+++IK5c+eyaNEijh07RlJSUkWC89NPPzFlyhSCg4NZsmQJCQkJ1Sap59q8eTN+fn4MGjSo2sfDw8N57LHH6NGjB2BP/G6++WZ++uknHn30UV588UVsNhuTJk0iLy+vUtnHH3+c1q1b88orr3DnnXeyevVqli1bVvFY165d6dq1K++9916l0a7Fixcze/ZsZs+eTXR0NB999BFTpkyhefPmLFq0iEceeYTt27czYcKE8yYbGzduJCkpiY4dO7J06VKuu+46HnzwwUr7rF+/nmeffZZJkyaxcuVKpk2bxkcffcT8+fOrrbNfv34EBgZWSlC/++47AL7//vtKx7RJkyZcccUVlcrfdNNN3HjjjQC899573HTTTRWPrVq1CqvVypIlS5gxYwYbN27kiSeeqDYOZ7Rs2ZLPPvuMRx55hKCgIKfLjxgxgq+++ori4uKKbXv37uXnn39mxIgRlfZVVZVp06bx7rvvcscdd/Dqq6/Sq1cvZsyYUfEDhjP9fq5FixaxYMECBg0axKuvvspNN93E4sWLeeWVV5xulxCiYZJL+4QQDV5hYSGnT58mIiLCo8+TlZXF/fffzzXXXAPYLxs0Go34+fkRHBxMVFQUAFFRUURFRaGqKi+88AIDBgzghRdeqKinXbt2TJ48mU2bNjF48GAASktLmT17Nv369QMgOzubgoICbrvtNi6//HIAOnTowLvvvktRUREhISFV4jt69Ch6vZ7Zs2dXfOmOjY3l4MGDlUY4yp9v5cqVFYnlqVOnmD17Nnv27OGyyy7jtddeIywsjFdffZXAwEAAjEYjM2bMuOAxOnLkCKGhoTRu3NihY5qamorJZOKdd96hdevWAAwcOJARI0awZMmSSvdTDRo0qGJSgb59+/LNN9/w1VdfMWvWLKKioiracu6X5ptvvpnhw4cD9kvTnn/+efr168fixYsr9unduzcjRozgjTfeqJIgAbz88st069aNF198sSJGoOLfYB+VbN26NZMmTUKn0xETE4PBYKCwsLDathsMBmJiYti6dSt33nknAFu3bqVbt25kZWVV7Ld582YGDBiAv3/lj/QWLVrQokWLatvcvXv3ihGjvn37snPnTjZv3lxtHM4wGo1ulb/uuut4/vnn2bRpE3FxcYB9NKpXr14V/V/u22+/5euvv2bx4sUVSdaAAQOwWCy88MILXH/99Q73+7lOnDjBv/71L2677TYeeughAK666ioKCgr44Ycf3GqjEKLhkBEpIUSDp9PZT3VnXy7mCbGxsaSkpPCPf/yDNWvWUFBQUClpOdfevXv5888/GTp0KKWlpRV/+vTpQ3BwMN98802l/Tt16lTx944dOxIWFsZ9993H448/zsaNG2nWrBkPPfQQLVu2rPb5mjdvzqpVq7jiiis4dOgQW7du5a233uLHH3/EarVW2vfsL6DlZQEsFgtgv+dswIABFUkUwLBhw/Dz87vgMVIUxal+2Lp1K126dKF58+YVx0en0zFw4MAqlxKe+0W5RYsWlS6RPJ+zL8/ct28ff/31F6NGjaq0zyWXXEKvXr2qnYGuuLiYn376iauvvrrS9uuuu67Sv6+88kr279/PuHHjeOWVV9i9ezejRo0iISHhvLENHjyYbdu2UVJSwu+//84ff/zBvffey9GjR9m/fz9ms5lt27YxZMiQGtt5tvLku1ybNm04ceKEU3V4QqtWrYiOjq50ed+GDRu4/vrrq+y7detWFEVh0KBBld4/Q4cO5a+//uLXX3+94HOd3e/nys7Oxmq1cu2111ba/vDDD/PGG2842SohREMlI1JCiAbPaDTSuHFjDh06dN59zGYzJSUlbv2ivnjxYpYtW8bHH3/MJ598gk6no1+/fsybN482bdpU2d9kMgH
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.datasets import load_iris\n",
"from sklearn.cluster import KMeans\n",
"\n",
"# Load the Iris dataset\n",
"iris_data = load_iris()\n",
"iris = pd.DataFrame(data=iris_data.data, columns=iris_data.feature_names)\n",
"iris['species'] = iris_data.target\n",
"\n",
"# Map target integers to class names\n",
"iris['species'] = iris['species'].map({0: 'setosa', 1: 'versicolor', 2: 'virginica'})\n",
"\n",
"# Liczba elementów w klasach\n",
"class_counts = iris['species'].value_counts()\n",
"print(\"Liczba elementów w klasach:\\n\", class_counts)\n",
"\n",
"# FacetGrid z histogramem\n",
"g = sns.FacetGrid(iris, hue=\"species\", height=5)\n",
"g.map(sns.histplot, \"petal length (cm)\", bins=20, kde=True, stat=\"density\")\n",
"g.add_legend()\n",
"plt.title('Histogram petal length')\n",
"plt.show()\n",
"\n",
"# Histogramy dla petal width i sepal length\n",
"fig, axes = plt.subplots(1, 2, figsize=(12, 5))\n",
"\n",
"# Histogram dla petal width\n",
"sns.histplot(data=iris, x=\"petal width (cm)\", hue=\"species\", bins=20, kde=True, stat=\"density\", ax=axes[0])\n",
"axes[0].set_title('Histogram petal width')\n",
"\n",
"# Histogram dla sepal length\n",
"sns.histplot(data=iris, x=\"sepal length (cm)\", hue=\"species\", bins=20, kde=True, stat=\"density\", ax=axes[1])\n",
"axes[1].set_title('Histogram sepal length')\n",
"\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"# Boxplot\n",
"plt.figure(figsize=(8, 6))\n",
"sns.boxplot(x=\"species\", y=\"petal length (cm)\", data=iris, palette=\"Set2\")\n",
"plt.title('Boxplot petal length')\n",
"plt.show()\n",
"\n",
"# Violinplot\n",
"plt.figure(figsize=(8, 6))\n",
"sns.violinplot(x=\"species\", y=\"petal length (cm)\", data=iris)\n",
"plt.title('Violinplot petal length')\n",
"plt.show()\n",
"\n",
"# Pairplot\n",
"sns.pairplot(iris, hue=\"species\", height=3)\n",
"plt.suptitle('Pairplot of Features by Species', y=1.02)\n",
"plt.show()\n",
"\n",
"# KMeans with L1 metric\n",
"X = iris.iloc[:, :4].values\n",
"kmeans = KMeans(n_clusters=3, init='k-means++', max_iter=300, n_init=10, random_state=0)\n",
"kmeans.fit(X)\n",
"\n",
"# KMeans with L1 distance (Manhattan)\n",
"def kmeans_l1(X, n_clusters, max_iter=300):\n",
" # Randomly initialize centroids\n",
" centroids = X[np.random.choice(X.shape[0], n_clusters, replace=False)]\n",
" for _ in range(max_iter):\n",
" # Compute distances using L1 metric\n",
" distances = np.abs(X[:, np.newaxis] - centroids).sum(axis=2)\n",
" # Assign clusters based on the closest centroid\n",
" labels = np.argmin(distances, axis=1)\n",
" # Update centroids\n",
" new_centroids = np.array([X[labels == i].mean(axis=0) if np.any(labels == i) else centroids[i] for i in range(n_clusters)])\n",
" if np.all(centroids == new_centroids):\n",
" break\n",
" centroids = new_centroids\n",
" return labels, centroids\n",
"\n",
"# Execute KMeans with L1 distance\n",
"y_l1_kmeans, centroids_l1 = kmeans_l1(X, n_clusters=3)\n",
"\n",
"# Wykres rozrzutu z klastrami\n",
"plt.figure(figsize=(10, 6))\n",
"plt.scatter(X[y_l1_kmeans == 0, 0], X[y_l1_kmeans == 0, 1], s=100, c='purple', label='setosa')\n",
"plt.scatter(X[y_l1_kmeans == 1, 0], X[y_l1_kmeans == 1, 1], s=100, c='orange', label='versicolor')\n",
"plt.scatter(X[y_l1_kmeans == 2, 0], X[y_l1_kmeans == 2, 1], s=100, c='green', label='virginica')\n",
"\n",
"# Plotting the centroids of the clusters\n",
"plt.scatter(centroids_l1[:, 0], centroids_l1[:, 1], s=300, c='red', label='Centroids')\n",
"plt.title('Clusters and Centroids with L1 Metric')\n",
"plt.xlabel('Sepal Length (cm)')\n",
"plt.ylabel('Sepal Width (cm)')\n",
"plt.legend()\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2c0838f8-dab4-4de5-b0ab-04195daa291a",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}