Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
Clustering Notebook
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Franka Ludig
Clustering Notebook
Commits
feb5a12f
Commit
feb5a12f
authored
3 years ago
by
Franka Ludig
Browse files
Options
Downloads
Patches
Plain Diff
Notebook hinzugefügt
parents
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
K-Means/AClusteringExample.ipynb
+241
-0
241 additions, 0 deletions
K-Means/AClusteringExample.ipynb
with
241 additions
and
0 deletions
K-Means/AClusteringExample.ipynb
0 → 100644
+
241
−
0
View file @
feb5a12f
{
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"id": "chicken-minneapolis",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.cluster import KMeans"
]
},
{
"cell_type": "markdown",
"id": "modified-bookmark",
"metadata": {},
"source": [
"## My Dataset"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "chicken-marshall",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAWI0lEQVR4nO3dfbBdVXnH8e8vCYhQlEgCKiEJVEot9QU4g7EwCqKRlxjaqTONhYpWJsWipTqWynQGnfiPVTtl7Kg0k9rR8qZSY1OHl9ABhk7tpZwrQRCkxpBAbrW5JCm+wJDc3Kd/nH30cHJPzj73npe91/59Zu7cc/Za+9y1Zs88Z91nr72WIgIzM0vXvFE3wMzMBsuB3swscQ70ZmaJc6A3M0ucA72ZWeIWjLoBM1m0aFEsX7581M0wMyuN8fHxZyJi8UxlhQz0y5cvp16vj7oZZmalIWlHpzKnbszMEudAb2aWOAd6M7PEOdCbmSXOgd7MLHEO9GZmiXOgN7O+Gt+xly/cu5XxHXtH3RTLFHIevZmV0/iOvVy6YYx9U9McvmAeN12xgjOXLRx1syrPI3oz61mnUfvYtt3sm5pmOmD/1DRj23YP9O9ZPh7Rm1lPDjVqX3HysRy+YB77p6Y5bME8Vpx87ED/XkrGd+xlbNtuVpx8bN/750BvZj2ZadTeDExnLlvITVesyB2w8gS3Q/29VAz6y8yB3sx60m3UfuayhbmCVN7gNoj/Eopm0F9mDvRmBuRPHfQ6au8kb3Dr198rskF/mTnQm1nPqYO8o/ZD6SW49ePvFdmgv8wc6M1sJHnwlEbq/biROsgvMwd6MxtZHjyFkXoZZgU50JtZUqPrVoOcsthUhllBDvRmBqQxum41rJF2GWYF5Qr0krYDPwMOAFMRUWsr/wvg0pbPfC2wOCL2dDvXzGwQhjXSLsN/Q72M6M+LiGdmKoiIzwKfBZD0LuAjEbEnz7lmZnn0moYZ5ki76P8NDSJ18x7glgF8rplV1GzSMGUYaQ9L3kXNAtgsaVzS2k6VJB0JXAD8c6/nmpl1MtvF0s5ctpCrzntNpYM85B/RnxMRE5KOA+6W9IOIuH+Geu8C/qMtbZPr3OxLYC3A0qVLe+yGmaWsDDc8i0wR0dsJ0ieBn0fE52Yo2wh8IyJu7vXcVrVaLer1ek/tMrO0DWOqZJlJGu802aXriF7SUcC8iPhZ9nolsG6Gei8H3gpc1uu5ZmbdFP2GZ5HlSd0cD2yU1Kx/c0TcKelKgIi4Iav3e8DmiPhFt3P71XgzM+uu59TNMDh1Y2bWm0OlbryVoJnZLJRpe0MvgWBm1qMyLGTWyiN6M7MeDWoT9EFxoDcz61FzXv98UYp5/U7dmFlShjHfvmzLKzjQm1kyhpk7L9O8fqduzCwZZcudD4sDvZklo2y582Fx6sbMklG23PmwONCb2awUdZGxMuXOh8WB3sx6VrYHhqrOOXoz65lvepaLA72Z9cw3PcvFqRsz65lvepaLA72ZzYpvepaHUzdmZolzoDczS5wDvZlZ4nIFeknbJT0iaYukg/b4k3SupGez8i2Srmspu0DSE5K2Svp4PxtvZtVSll2ditbOXm7GnhcRzxyi/N8jYlXrAUnzgS8A7wB2Ag9K2hQRj/XeVDOrsrI8pFXEdg46dXMWsDUitkXEPuBW4JIB/00zS1BZHtIqYjvzBvoANksal7S2Q503S3pY0h2STsuOnQA83VJnZ3bsIJLWSqpLqk9OTuZslplVRVke0ipiO/Ombs6JiAlJxwF3S/pBRNzfUv5dYFlE/FzSRcC3gFN6aUhErAfWA9RqtejlXDMrvrkuglaWh7SK2M5cgT4iJrLfuyRtpJGSub+l/Kctr2+X9EVJi4AJ4MSWj1qSHTOzCulX3rosD2kVrZ1dUzeSjpJ0dPM1sBJ4tK3OKyUpe31W9rm7gQeBUySdJOlwYA2wqb9dMLOiK2LeukryjOiPBzZmcXwBcHNE3CnpSoCIuAF4N/BBSVPA88CaiAhgStKHgLuA+cCXI+L7A+iHmRVYM2+9f2q6MHnrKlEjHhdLrVaLev2g6fpmVmJF3agkFZLGI6I2U5kXNTOzoSha3rpKvASCmVniHOjNzBLnQG9mljgHejOzxDnQm5klzoHezCxxDvRmZolzoDczS5wDvZlZ4hzozcwS50BvZpY4B3ozs8Q50JuZJc6B3swscQ70ZmaJc6A3M0tcro1HJG0HfgYcAKbadzGRdCnwl4Cyeh+MiIfznGtmZoPdgauXHabOi4hnOpQ9Cbw1IvZKuhBYD7wp57lmZpU2vmMvl24YY9/UNIcvmMdNV6zoa7DvS+omIr4TEXuzt2PAkn58rplZFYxt282+qWmmA/ZPTTO2bXdfPz9voA9gs6RxSWu71P0AcEev50paK6kuqT45OZmzWWZm5bfi5GM5fME85gsOWzCPFScf29fPV0R0rySdEBETko4D7gY+HBH3z1DvPOCLwDkRsbuXc1vVarWo1+uz6I6ZWTnNNUcvabzTPdBcOfqImMh+75K0ETgLeFGwlvR6YANwYTPI5z3XzKzqzly2sO83YZu6pm4kHSXp6OZrYCXwaFudpcA3gT+KiP/u5VwzMxusPCP644GNkpr1b46IOyVdCRARNwDXAccCX8zqNadRznhu33thZmYd5crRD5tz9Gbpa81JAwObQ14Vc87Rm5n1U+u88QXz50EEU9MxkDnk5iUQzGwE2ueN7z8QA5tDbh7Rm9kINOeN75+aZn42oj8wHQOZQ24O9GY2AmcuW8hNV6wYSo5+kGvIlIUDvZmNRPu88UEE4UGvIVMWztGbWbIGvYZMWTjQm1myBr2GTFk4dWNmyWq/F1DFtA040JtZ4ga5hkxZOHVjZpY4B3ozK6XxHXv5wr1bGd+xt3vlinPqxsxKx9Mme+MRvZmVjqdN9saB3sxKx9Mme+PUjZmVjqdN9saB3sxKydMm83PqxswscQ70ZmaJyxXoJW2X9IikLZIO2uNPDZ+XtFXS9ySd0VJ2uaQfZj+X97PxZmbWXS85+vMi4pkOZRcCp2Q/bwK+BLxJ0iuATwA1IIBxSZsiwk84mJkNSb9SN5cAX42GMeAYSa8C3gncHRF7suB+N3BBn/6mmZnlkDfQB7BZ0riktTOUnwA83fJ+Z3as0/GDSForqS6pPjk5mbNZZmbWTd5Af05EnEEjRXOVpLf0uyERsT4iahFRW7x4cb8/3syssnIF+oiYyH7vAjYCZ7VVmQBObHm/JDvW6bglygtNmRVP10Av6ShJRzdfAyuBR9uqbQLem82+WQE8GxE/Bu4CVkpaKGlhdu5dfe2BFUZzoam/2fwEl24Yc7A3K4g8s26OBzZKata/OSLulHQlQETcANwOXARsBZ4D3p+V7ZH0KeDB7LPWRcSe/nbBimKmhab85KLZ6HUN9BGxDXjDDMdvaHkdwFUdzv8y8OU5tNFKornQ1P6paS80ZVYgXuumoMZ37C3dgk1eaMqsmBzoC6jMmyp4oSmz4vFaNwXkTRXMrJ8c6Auol00VPJ3RzLpJMnVTxvx2q7y57jKneMxseJIL9KkEvzy5bk9nNLM8kkvdVCm/7X0zzSyP5Eb0VZrL7emMZpaHGs86FUutVot6/aD9TXIre47ezKxXksYjojZTWXIjevBc7lHxF6xZMSUZ6MsipcCYyk1wsxQ50I9IaoHRM4DMiiu5WTdlkdrsIM8AMiuuSo/oR5k6SW12kGcAmRVXkrNu8ihC6iSlHL2ZjVblZt3kUYScsmcHmdkwVDZH75yymVVF7hG9pPlAHZiIiFVtZX8LnJe9PRI4LiKOycoOAI9kZU9FxOq5NrofnFM2s6roJXVzNfA48LL2goj4SPO1pA8Dp7cUPx8Rb5xtAwfJqRMzq4JcqRtJS4CLgQ05qr8HuGUujTIzs/7Jm6O/HrgGmD5UJUnLgJOAe1oOHyGpLmlM0u8e4ty1Wb365ORkzmaZmVk3XQO9pFXArogYz/F5a4DbIuJAy7Fl2ZSfPwSul/TrM50YEesjohYRtcWLF+dpu5mZ5ZBnRH82sFrSduBW4G2SbuxQdw1taZuImMh+bwPu48X5e0uQtzc0K5auN2Mj4lrgWgBJ5wIfi4jL2utJ+k1gIfCfLccWAs9FxAuSFtH40vhMX1puhVSEB9HM7MVmPY9e0jpJrVMl1wC3xosftX0tUJf0MHAv8OmIeGy2f9OKL7U1fMxS0NOTsRFxH430CxFxXVvZJ2eo/x3gdbNunZVOamv4mKUgqSUQvHbM6PlBNLPiSSbQOzdcHH4QzaxYklnrxrlhM7OZJRPoy7xImacjmtkgJZO6GVZuuN/3AZxyMrNBSybQw+Bzw4MIykVYF9/M0pZM6mYYBnEfoMwpJzMrh6RG9IM2iDnino5oZoNW2T1jZ8tz9c2siLxnbB8VaY64v3TMLA8H+pLybB0zy8s3Y0vKD4iZWV4O9CXl2TpmlpdTNyXl2TpmlpcDfYkV6cawmRWXUzdmZolzoDczS5wDvZlZ4nIHeknzJT0k6dszlL1P0qSkLdnPFS1ll0v6YfZzeb8abmZm+fRyM/Zq4HHgZR3KvxYRH2o9IOkVwCeAGhDAuKRNEeGF183MhiTXiF7SEuBiYEOPn/9O4O6I2JMF97uBC3r8DDMzm4O8qZvrgWuA6UPU+X1J35N0m6QTs2MnAE+31NmZHTuIpLWS6pLqk5OTOZvVG+/kZGZV1DXQS1oF7IqI8UNU+1dgeUS8nsao/Su9NiQi1kdELSJqixcv7vX0rpprw/zN5ie4dMOYg72ZVUaeEf3ZwGpJ24FbgbdJurG1QkTsjogXsrcbgDOz1xPAiS1Vl2THhs5rw5hZVXUN9BFxbUQsiYjlwBrgnoi4rLWOpFe1vF1N46YtwF3ASkkLJS0EVmbHhs5rw5hZVc16CQRJ64B6RGwC/kzSamAK2AO8DyAi9kj6FPBgdtq6iNgztybPjteGMbOq8g5TZmYJONQOU34ytuI8E8ksfV69ssK8S5VZNXhEX2GeiWRWDQ70FeaZSGbV4NRNhXkmklk1ONBXnHepMkufUzdmZolzoDczS5wDvZlZ4hzozcwS50BvZpY4B3ozs8Q50JuZJc6B3swscQ70ZmaJc6CvCC9HbFZdXgKhAtqXI75u1WnsfW6f17cxq4jcgV7SfKAOTETEqrayjwJX0NhKcBL444jYkZUdAB7Jqj4VEav70XDLr3U54n1T01z3L48yHeE16M0qopfUzdX8atPvdg8BtYh4PXAb8JmWsucj4o3Zj4P8CLQuRzxP4sB0eA16swrJFeglLQEuBjbMVB4R90bEc9nbMWBJf5pn/dBcjvijK09l3SW/zUsO8xr0ZlWSN3VzPXANcHSOuh8A7mh5f4SkOo20zqcj4lsznSRpLbAWYOnSpTmbZXm1Lkd86iuP9hr0ZhXSNdBLWgXsiohxSed2qXsZUAPe2nJ4WURMSDoZuEfSIxHxo/ZzI2I9sB6gVqtF/i5Yr7wGvVm15EndnA2slrQduBV4m6Qb2ytJejvwV8DqiHiheTwiJrLf24D7gNPn3uxq8JRIM+uHriP6iLgWuBYgG9F/LCIua60j6XTg74ELImJXy/GFwHMR8YKkRTS+NFpv1FoH7VMiPTvGzGZr1g9MSVonqTmL5rPArwHfkLRF0qbs+GuBuqSHgXtp5Ogfm1OLK6J1SqRnx5jZXPT0wFRE3Ecj/UJEXNdy/O0d6n8HeN3sm1ddzSmR+6emPTvGzObET8YWVHNKpGfHmNlcOdAXmGfHmFk/eFEzM7PEOdAXkKdVmlk/OXVTMJ5WaWb95hF9wXhapZn1mwN9wbSuNOlplWbWD07dFIynVZpZvznQF5CnVZpZPzl1Y2aWOAd6M7PEOdCbmSXOgd7MLHEO9GZmiXOgNzNLnAO9mVniHOht1rz4mlk5+IEpmxUvvmZWHrlH9JLmS3pI0rdnKHuJpK9J2irpAUnLW8quzY4/IemdfWr3yHgU2+DF18zKo5cR/dXA48DLZij7ALA3Il4jaQ3w18AfSPotYA1wGvBq4N8k/UZEHJhju0fCo9hf8Z62ZuWRa0QvaQlwMbChQ5VLgK9kr28Dzpek7PitEfFCRDwJbAXOmluTR8ej2F9pLr720ZWnVvoLz6wM8o7orweuAY7uUH4C8DRARExJehY4Njs+1lJvZ3bsIJLWAmsBli5dmrNZw+VR7It58TWzcuga6CWtAnZFxLikcwfVkIhYD6wHqNVqMai/MxdeQtjMyijPiP5sYLWki4AjgJdJujEiLmupMwGcCOyUtAB4ObC75XjTkuxYaXkUa2Zl0zVHHxHXRsSSiFhO48bqPW1BHmATcHn2+t1ZnciOr8lm5ZwEnAL8V99ab2ZmXc16Hr2kdUA9IjYB/wD8k6StwB4aXwhExPclfR14DJgCrirrjBszs7JSY+BdLLVaLer1+qibYWZWGpLGI6I2U5mXQDAzS5wDvZlZ4hzozcwSV8gcvaRJYEfO6ouAZwbYnGFzf4ottf5Aen2qan+WRcTimQoKGeh7Iane6QZEGbk/xZZafyC9Prk/B3PqxswscQ70ZmaJSyHQrx91A/rM/Sm21PoD6fXJ/WlT+hy9mZkdWgojejMzOwQHejOzxJUm0EvaLukRSVskHbQQjho+n+1P+z1JZ4yinXnl6M+5kp7NyrdIum4U7cxL0jGSbpP0A0mPS3pzW3nZrk+3/pTt+pza0tYtkn4q6c/b6pTmGuXsT9mu0UckfV/So5JukXREW3nHvbm7iohS/ADbgUWHKL8IuAMQsAJ4YNRtnmN/zgW+Pep29tCfrwBXZK8PB44p+fXp1p9SXZ+2ts8HfkLjAZvSXqMc/SnNNaKx896TwEuz918H3tdW50+BG7LXa4Cv5f380ozoc7gE+Go0jAHHSHrVqBtVBZJeDryFxnLVRMS+iPi/tmqluT45+1Nm5wM/ioj2p89Lc43adOpP2SwAXppt3nQk8D9t5Z325u6qTIE+gM2SxrP9Zdv9ct/aTMf9aQuiW38A3izpYUl3SDptmI3r0UnAJPCPkh6StEHSUW11ynR98vQHynN92q0BbpnheJmuUatO/YGSXKOImAA+BzwF/Bh4NiI2t1V70d7cQHNv7q7KFOjPiYgzgAuBqyS9ZdQNmqNu/fkujX9F3wD8HfCtIbevFwuAM4AvRcTpwC+Aj4+2SXOSpz9luj6/JOlwYDXwjVG3pR+69Kc010jSQhoj9pOAVwNHSWrfyW/WShPos288ImIXsBE4q61Kqfan7dafiPhpRPw8e307cJikRUNvaD47gZ0R8UD2/jYagbJVma5P1/6U7Pq0uhD4bkT87wxlZbpGTR37U7Jr9HbgyYiYjIj9wDeB32mr88vroxfvzd1VKQK9pKMkHd18DawEHm2rtgl4bzZzYAWNf31+POSm5pKnP5Je2cy/STqLxrXKdVGHLSJ+Ajwt6dTs0Pk0to9sVZrrk6c/Zbo+bd5D5zRHaa5Ri479Kdk1egpYIenIrM3nA4+31em0N3dXs94zdsiOBzZm12wBcHNE3CnpSoCIuAG4ncasga3Ac8D7R9TWPPL0593AByVNAc8Da/Je1BH5MHBT9q/0NuD9Jb4+0L0/Zbs+zUHFO4A/aTlW2muUoz+luUYR8YCk22ikm6aAh4D1yrE3dx5eAsHMLHGlSN2YmdnsOdCbmSXOgd7MLHEO9GZmiXOgNzNLnAO9mVniHOjNzBL3/yKMrE06bVFTAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"rng = np.random.default_rng(seed=1)\n",
"x = 7 + rng.random(20)\n",
"x = np.append(x, 5 + rng.random(20))\n",
"y = 5 + rng.random(20)\n",
"y = np.append(y, 4 + rng.random(20))\n",
"plt.plot(x, y, '.')\n",
"\n",
"data = np.stack((x, y), axis=1)\n",
"data_1D = np.append(x, y)\n",
"# print(data)"
]
},
{
"cell_type": "markdown",
"id": "prepared-republic",
"metadata": {},
"source": [
"# Manual K-Means"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "generic-dating",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"25.16143318862738\n",
"2.0092105896679273\n",
"0.0\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x12cd0ee80>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAX6UlEQVR4nO3dfbBcdX3H8fcnCQmGaojkGm1C7s1YtdaJD3QHsTAoRiMIBGudTjQgOjq3WFTQaalMZqDGydTWzpjRqWKG2ioGUFNiA8PjQKmdWhj3SiA8+JCSB0g1uQSMKAyY5Ns/9lzZbHbvnnPvPpxz9vOauZPdc35n7+/kzHz3d7/ne34/RQRmZlZeM/rdATMz6y4HejOzknOgNzMrOQd6M7OSc6A3Myu5Wf3uQDMLFiyIkZGRfnfDzKwwxsbGnoiIoWb7chnoR0ZGqFar/e6GmVlhSNrVap9TN2ZmJedAb2ZWcg70ZmYl50BvZlZyDvRmZiWXy6obMyuovfthxx547nmYMxuWLoKFJ/S7VwPPgd7MOmPvfvjpLjh8uPb+uedr78HBvs8c6M0sm1aj9h17XgjyEw4frm2fTqD3XwnT5kBvZulNNmp/7vnmx7TaPt3fV6Zg3+UvMwd6M0tvslH7nNnNg/qc2c0/K01w69ZfCXnSgy8zV92YWXqTjdqXLoIZDSFlxoza9kYTwW3i8yaC29796X9fWUz2ZdYhHtGbWfrUwWSj9on2aT4n7Ug9618JRdSDLzMHerNBlyV1sHTRkW3hyFH7whPSpRvSBrd2v68MevBl5kBvNuiy5MGzjNonkza4der3ddN0b6T24MvMgd5s0GVNHaQdtU8mS3DrxO/rlk7cSO3Bl5kDvdmg60cevBcj9V7U33eqKqjLX2YO9GaDrl958G4Gt17V3xekKsjllWaDbuEJ8OrhF0bwc2bX3uc1XZJGD0oWgdZ/9eSsKijViF7STuBp4BBwMCIqDfv/Glhd95mvBYYi4sl2x5pZDuQ5Dw7Z0zC9GmkXpCooS+rmjIh4otmOiPgC8AUASecCn4qIJ9Mca2Y2qamkYXp136EIVUF0J0f/fuC6LnyumQ2iqdzw7OVIO+9/DZE+Rx/A7ZLGJI22aiRpLnAm8G9ZjzUza2oqaZgy3neYhrQj+tMiYo+klwF3SPpxRHy/Sbtzgf9uSNukOjb5EhgFWLJkScbTMLPSmmoapgAj7V5JNaKPiD3Jv/uAzcDJLZquoiFtk/bYiNgQEZWIqAwNDaXrvZmVX5bJ0qyptoFe0nGSXjzxGlgBPNik3TzgrcC/Zz3WzKwlp2GmLU3qZiGwWdJE+2sj4lZJFwFExFVJuz8Fbo+I37Q7tlOdN7MB4TTMtCgi+t2Ho1QqlahWq/3uhplZczlc3lDSWKvnlDwFgplZFgVc3tBTIJiZZdGr6RU6yIHezCyLgkxkVs+pGzMrj17kzgu4vKFH9GZWDmkXHJ+uAtb1O9CbWTn0KndewLp+p27MrBx6mTsvWF2/R/RmVg4FWQSkHzyiN7PscvjAUFEWAekHB3ozyyavDwwVZBGQfnCgN7NsprIQSK8ULHfeK87Rm1k2BXxgaNA50JtZNr7pWTgO9GaWTQEfGBp0ztGbWTa+6Vk4DvRmlp1vehaKUzdmZiXnEb2ZFUMeH9JqJof9TDWil7RT0jZJWyUdtcafpLdJOpDs3yrpirp9Z0r6iaTtkj7Tyc6b2YDo1cyU05XTfmYZ0Z8REU9Msv+/IuKc+g2SZgL/BLwTeBz4oaQtEfFw9q6a2cDK80Na9XLaz27n6E8GtkfEoxHxPHA9cF6Xf6eZlU1RHtLKaT/TBvoAbpc0Jmm0RZu3SLpf0i2SXpdsWwQ8Vtfm8WTbUSSNSqpKqo6Pj6fslpkVwt79cM8D8J/V2r9ZUxlFeUgrp/1MG+hPi4iTgLOAiyWd3rD/R8BwRLwB+DLwvawdiYgNEVGJiMrQ0FDWw80srzqRty7KQ1o57WeqQB8Re5J/9wGbqaVk6vf/KiJ+nby+GThG0gJgD3BiXdPFyTYzGxSdWPmpKKs65bSfbW/GSjoOmBERTyevVwBrG9q8HNgbESHpZGpfIPuBXwKvkrSUWoBfBXygs6dgZrnWqbx1UR7SymE/01TdLAQ2S5pof21E3CrpIoCIuAp4H/AxSQeBZ4FVERHAQUkfB24DZgJfj4iHunAeZpZXc2Y3D+p5y6+XmGrxOF8qlUpUq0eV65tZETUuVAK1vHUOUhplImksIirN9vnJWDPrLk+C1ncO9GbWfTnMWw8ST2pmZlZyDvRmZiXnQG9mVnIO9GZmJedAb2ZWcg70ZmYl50BvZlZyDvRmZiXnQG9mVnIO9GZmJedAb2ZWcg70ZmYl50BvZlZyDvRmZiXnaYrNzPpt7/6uztefKtBL2gk8DRwCDjauYiJpNfA3gJJ2H4uI+9Mca2Y20BpX4Hru+dp76FiwzzKiPyMinmixbwfw1oh4StJZwAbgzSmPNTMbXDv2HLnMItTe79jTl0DfUkT8oO7tPcDiTnyumVnpNVs4fbLtU5D2ZmwAt0sakzTapu1HgFuyHitpVFJVUnV8fDxlt8zMCm7O7GzbpyDtiP60iNgj6WXAHZJ+HBHfb2wk6Qxqgf60rMdGxAZqKR8qlUpkPhMzsyJauujIHD3AjBm17R2SakQfEXuSf/cBm4GTG9tIej1wNXBeROzPcqyZ2cBaeAK8eviFEfyc2bX3vay6kXQcMCMink5erwDWNrRZAtwAXBARP81yrJnZwFt4QkcDe6M0qZuFwGZJE+2vjYhbJV0EEBFXAVcAJwBfSdpNlFE2PbbjZ2FmxVJfNz5rZu1O3qFDXakhN1BE/tLhlUolqtVqv7thZt3QWDfeaMaMjqcuBoGksVbPKXkKBDPrrWZ14/UmasitYxzozay30tSHd7CG3DzXjZn12pzZ7QN5p2rIuzyHTFF4RG9mvbV0US0P30qnasgn7gVMfKlMzCGzd//kx5WQA72Z9VZj3fismTBzZu11J2vIJ5tDZsA4dWNmvdflunGgJ3PIFIVH9GZWTj2YQ6YoHOjNrJya3Qvo8BwyReHUjZmV00RqyFU3DvRmVkBpyyZ7cS+gABzozaxYerD0Xtk4R29mxeKyycwc6M2sWFw2mZkDvZkVi8smM3OgN7NicdlkZr4Za2bF4rLJzBzozax4XDaZiVM3ZmYllyrQS9opaZukrZKOWuNPNV+StF3SA5JOqtt3oaSfJT8XdrLzZmbWXpbUzRkR8USLfWcBr0p+3gx8FXizpJcCVwIVasv/jknaEhFPTaPPZmaWQadSN+cB34yae4DjJb0CeBdwR0Q8mQT3O4AzO/Q7zcwshbSBPoDbJY1JGm2yfxHwWN37x5NtrbYfRdKopKqk6vj4eMpumZlZO2kD/WkRcRK1FM3Fkk7vdEciYkNEVCKiMjQ01OmPtx7YuG0jI+tHmPHZGYysH2Hjto397pKZkTLQR8Se5N99wGbg5IYme4AT694vTra12m4ls3HbRkZvHGXXgV0Ewa4Duxi9cdTB3iwH2gZ6ScdJevHEa2AF8GBDsy3AB5Pqm1OAAxHxc+A2YIWk+ZLmJ8fe1tEzsFxYc+canvntM0dse+a3z7DmzjV96pGZTUhTdbMQ2Cxpov21EXGrpIsAIuIq4Gbg3cB24Bngw8m+JyV9Dvhh8llrI+LJzp6C5cHuA7szbTez3mkb6CPiUeANTbZfVfc6gItbHP914OvT6OPA2bhtI2vuXMPuA7tZMm8J65avY/Wy1f3u1qSWzFvCrgO7mm43s/7yk7E5U9Rc97rl65h7zNwjts09Zi7rlq/rU4/MbIIDfc4UNde9etlqNpy7geF5wwgxPG+YDeduyP1fImaDwJOa5UyWXHfeUjyrl612YDfLodKN6Itey90qp924vagpHjPrvVIF+jIEv7S57qKmeMys90oV6MsQ/NLmul3OaGZplSpHX5bglybX7XJGM0urVCP6tPntMnA5o5mlVapAP0jBL2/ljEW/CW5WZqo91JovlUolqtWjFrJKJW8lh60UpZ9pTNwEr78/MveYua6jN+shSWMRUWm6r2yBvgjKFhhH1o80vV8wPG+YnZfu7H2HzAbQZIG+VKmboihDdVC9stwENyurgQ30/cwply0wDtJNcLMiGshA3+8Hq8oWGAfpJrhZEQ1koO936qRsgTFvFUBmdqRSPTCVVr9TJxMBsCxVN+AJzczybCADfR6eKnVgNLNeSZ26kTRT0n2Sbmqy74uStiY/P5X0y7p9h+r2belQv6elbKkTM7PJZBnRXwI8ArykcUdEfGritaRPAG+q2/1sRLxxqh3shjKmTszMWkkV6CUtBs4G1gGfbtP8/cCV0+xX1zl1YmaDIm3qZj1wGXB4skaShoGlwF11m4+VVJV0j6T3THLsaNKuOj4+nrJbZmbWTttAL+kcYF9EjKX4vFXApog4VLdtOHks9wPAekmvbHZgRGyIiEpEVIaGhtL03XLIk5uZ5U+aEf2pwEpJO4HrgbdL+laLtquA6+o3RMSe5N9Hgbs5Mn9vJdLvB9HMrLm2gT4iLo+IxRExQi2Q3xUR5ze2k/SHwHzgf+q2zZc0J3m9gNqXxsMd6rvlTL8fRDOz5qZcRy9pLVCNiImSyVXA9XHkdJivBb4m6TC1L5XPR4QDfUn1+0E0M2suU6CPiLuppV+IiCsa9v1tk/Y/AJZNuXcZlGl+96LKw4NoZna0Usx149xwPvhBNLN8KkWgd244Hzy5mVk+lWKumyLnhsuWcvKDaGb5U4oRfa/md+90jbhTTmbWC6UI9L3IDXcjKDvlZGa9UIpA34vccDeCcpFTTmZWHKXI0UP3c8PdCMouRzSzXijFiL4XunEfwOWIZtYLDvQpdSMoTyfl5MnDzCwtHTljQT5UKpWoVqv97sZR8lIKOXFjuP6ewdxj5rpm3WyASRpLZgo+ep8DffGMrB9pmtsfnjfMzkt39r5DZtZ3kwV6p24KyNU6ZpaFA30B9eoBMTMrBwf6AnK1jpll4UBfQJ48zMyy8M1YM7MS8M1YM7MB5kBvZlZyqQO9pJmS7pN0U5N9H5I0Lmlr8vPRun0XSvpZ8nNhpzpuZmbpZJnU7BLgEeAlLfZ/OyI+Xr9B0kuBK4EKEMCYpC0R8dRUOmtmZtmlGtFLWgycDVyd8fPfBdwREU8mwf0O4MyMn9ERnhvGzAZV2tTNeuAy4PAkbf5M0gOSNkk6Mdm2CHisrs3jybajSBqVVJVUHR8fT9mtdLySk5kNsraBXtI5wL6IGJuk2Y3ASES8ntqo/RtZOxIRGyKiEhGVoaGhrIdPyis5mdkgSzOiPxVYKWkncD3wdknfqm8QEfsj4rnk7dXAHyev9wAn1jVdnGzrKc8NY2aDrG2gj4jLI2JxRIwAq4C7IuL8+jaSXlH3diW1m7YAtwErJM2XNB9YkWzrKc8NY2aDbMp19JLWSlqZvP2kpIck3Q98EvgQQEQ8CXwO+GHyszbZ1lOeG8bMBtnATIGQl0VD8sT/J2bl4YVH7ChepcqsXDzXjR3FlUhmg8OBfkC5EslscDjQDyhXIpkNDgf6AeVKJLPB4UA/oLxKldngcNWNmVkJuOrGzGyAOdCbmZWcA72ZWck50JuZlZwDvZlZyTnQm5mVnAO9mVnJOdAPAC+MbjbYHOhLrtnC6BfccAH6rBz0zQaEA33JNZuOOKg9Db3rwC5Gbxx1sDcrudSBXtJMSfdJuqnJvk9LeljSA5LulDRct++QpK3Jz5ZOddzSaTftsOegNyu/LCP6S3hh0e9G9wGViHg9sAn4h7p9z0bEG5Oflc0Pt25JM+2w56A3K7dUgV7SYuBs4Opm+yPiPyJiIj9wD7C4M92z6Wo2HXEjz0FvVm5pR/TrgcuAwynafgS4pe79sZKqku6R9J5WB0kaTdpVx8fHU3bL2qmfjhhA6Ij9noPerPzaBnpJ5wD7ImIsRdvzgQrwhbrNw8nUmR8A1kt6ZbNjI2JDRFQiojI0NJSu9yXWyZLI1ctWs/PSncSVwTXvvcZz0JsNmLbz0Uv6O+AC4CBwLPAS4IaIOL+h3TuALwNvjYh9LT7rX4GbImLTZL9z0OejnyiJrK+WmXvMXAdlM2tpWvPRR8TlEbE4IkaAVcBdTYL8m4CvASvrg7yk+ZLmJK8XAKcCD0/5TAZEs5JIV8eY2VTNmuqBktYC1YjYQi1V83vAdyUB7E4qbF4LfE3SYWpfKp+PCAf6NlpVwbg6xsymIlOgj4i7gbuT11fUbX9Hi/Y/AJZNvXuDacm8Jew6sKvpdjOzrPxkbA41K4l0dYyZTZUDfQ7Vl0S6OsbMpmvKOXrrjo3bNrLmzjXsPrCbJfOWcM17r3GAN7NpcaDPkcayyolJxwAHezObMqducsRllWbWDQ70OeKySjPrBgf6HGlVPumySjObDgf6HHFZpZl1gwN9jris0sy6oe2kZv0w6JOamZllNa1JzczMrNgc6M3MSs6B3sys5BzozcxKzoHezKzkHOhtSjq5pq2ZdZcnNbPMPPmaWbF4RJ+BR7E1nnzNrFhSB3pJMyXdJ+mmJvvmSPq2pO2S7pU0Urfv8mT7TyS9q0P97rmJUeyuA7sI4nej2EEM9p58zaxYsozoLwEeabHvI8BTEfEHwBeBvweQ9EfAKuB1wJnAVyTNnHp3+8ej2Bd48jWzYkkV6CUtBs4Grm7R5DzgG8nrTcBySUq2Xx8Rz0XEDmA7cPL0utwfHsW+wJOvmRVL2hH9euAy4HCL/YuAxwAi4iBwADihfnvi8WTbUSSNSqpKqo6Pj6fsVu94FPsCT75mVixtq24knQPsi4gxSW/rVkciYgOwAWqTmnXr90zVuuXrjqg0gcEexa5ettqB3awg0ozoTwVWStoJXA+8XdK3GtrsAU4EkDQLmAfsr9+eWJxsKxyPYs2sqDJNU5yM6P8qIs5p2H4xsCwiLpK0CnhvRPy5pNcB11LLy/8+cCfwqog4NNnv8TTFZmbZTDZN8ZQfmJK0FqhGxBbgn4FrJG0HnqRWaUNEPCTpO8DDwEHg4nZB3szMOssLj5iZlYAXHjEzG2AO9GZmJedAb2ZWcrnM0UsaB3albL4AeKKL3ek1n0++le18oHznNKjnMxwRQ8125DLQZyGp2uoGRBH5fPKtbOcD5Tsnn8/RnLoxMys5B3ozs5IrQ6Df0O8OdJjPJ9/Kdj5QvnPy+TQofI7ezMwmV4YRvZmZTcKB3sys5AoT6CXtlLRN0lZJR02Eo5ovJevTPiDppH70M60U5/M2SQeS/VslXdGPfqYl6XhJmyT9WNIjkt7SsL9o16fd+RTt+rymrq9bJf1K0qUNbQpzjVKeT9Gu0ackPSTpQUnXSTq2YX/LtbnbiohC/AA7gQWT7H83cAsg4BTg3n73eZrn8zbgpn73M8P5fAP4aPJ6NnB8wa9Pu/Mp1PVp6PtM4BfUHrAp7DVKcT6FuUbUVt7bAbwoef8d4EMNbf4SuCp5vQr4dtrPL8yIPoXzgG9GzT3A8ZJe0e9ODQJJ84DTqU1XTUQ8HxG/bGhWmOuT8nyKbDnwvxHR+PR5Ya5Rg1bnUzSzgBclizfNBf6vYX+rtbnbKlKgD+B2SWOSRpvsT70+bU60Ox+At0i6X9ItySIuebUUGAf+RdJ9kq6WdFxDmyJdnzTnA8W5Po1WAdc12V6ka1Sv1flAQa5RROwB/hHYDfwcOBARtzc0a7U2d1tFCvSnRcRJwFnAxZJO73eHpqnd+fyI2p+ibwC+DHyvx/3LYhZwEvDViHgT8BvgM/3t0rSkOZ8iXZ/fkTQbWAl8t9996YQ251OYayRpPrUR+1Jqq/EdJ+n8Tn1+YQJ98o1HROwDNlNbnrBeodanbXc+EfGriPh18vpm4BhJC3re0XQeBx6PiHuT95uoBcp6Rbo+bc+nYNen3lnAjyJib5N9RbpGE1qeT8Gu0TuAHRExHhG/BW4A/qShTau1udsqRKCXdJykF0+8BlYADzY02wJ8MKkcOIXanz4/73FXU0lzPpJePpF/k3QytWuV6qL2WkT8AnhM0muSTcupLR9ZrzDXJ835FOn6NHg/rdMchblGdVqeT8Gu0W7gFElzkz4vBx5paLMFuDB5/T7grkjuzLYz5TVje2whsDm5ZrOAayPiVkkXAUTEVcDN1KoGtgPPAB/uU1/TSHM+7wM+Jukg8CywKu1F7ZNPABuTP6UfBT5c4OsD7c+naNdnYlDxTuAv6rYV9hqlOJ/CXKOIuFfSJmrppoPAfcAGpVibOw1PgWBmVnKFSN2YmdnUOdCbmZWcA72ZWck50JuZlZwDvZlZyTnQm5mVnAO9mVnJ/T/gNz5eTapwpAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Evaluate k\n",
"ks = np.arange(0, 15)\n",
"ks = [2]\n",
"\n",
"for k in ks:\n",
" cs = data[0:k].copy()\n",
" \n",
" terminate = False\n",
" last_cog = [np.array([0, 0]) for i in range(k)]\n",
" while not terminate:\n",
" dist = np.stack([[np.linalg.norm(c-d) for d in data] for c in cs], axis=1)\n",
" z = np.array([np.argmin(d) for d in dist])\n",
" df = [data[z == i] for i in range(k)]\n",
" current_cog = [np.sum(d, axis=0)/len(d) for d in df]\n",
" diff_cog = np.sum(np.abs([last - current for last, current in zip(last_cog, current_cog)]))\n",
" last_cog = current_cog\n",
" print(diff_cog)\n",
" cs = current_cog\n",
" if diff_cog < 0.3:\n",
" terminate = True\n",
" \n",
"plt.scatter(df[0][:, 0], df[0][:, 1], color='green')\n",
"plt.scatter(df[1][:, 0], df[1][:, 1], color='pink')\n",
"\n",
"# print(current_cog)"
]
},
{
"cell_type": "markdown",
"id": "czech-romance",
"metadata": {},
"source": [
"# K-Means with Scikit-Learn"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "saved-scope",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[5.75036467 4.27404839]\n",
" [5.28040876 4.00709183]\n",
" [5.48519097 4.6457209 ]\n",
" [5.9807372 4.71990938]\n",
" [5.96165719 4.83556922]\n",
" [5.72478994 4.28187783]\n",
" [5.54122686 4.21521817]\n",
" [5.2768912 4.63933138]\n",
" [5.16065201 4.80505483]\n",
" [5.96992541 4.96367087]\n",
" [5.51606859 4.15052483]\n",
" [5.11586561 4.48221239]\n",
" [5.62348976 4.89471586]\n",
" [5.77668311 4.42271691]\n",
" [5.6130033 4.58950206]\n",
" [5.9172977 4.02449068]\n",
" [5.03959288 4.67345989]\n",
" [5.52858926 4.91908862]\n",
" [5.45933588 4.82682533]\n",
" [5.06234958 4.88552027]]\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x12cd73070>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"km = KMeans(n_clusters=2)\n",
"data_predicted = km.fit_predict(data)\n",
"\n",
"df1 = data[data_predicted == 0]\n",
"df2 = data[data_predicted == 1]\n",
"#print(df2)\n",
"plt.scatter(df1[:, 0], df1[:, 1], color='green')\n",
"plt.scatter(df2[:, 0], df2[:, 1], color='pink')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "partial-faculty",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "included-county",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.9.1"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
%% Cell type:code id:chicken-minneapolis tags:
```
python
import
numpy
as
np
import
matplotlib.pyplot
as
plt
from
sklearn.cluster
import
KMeans
```
%% Cell type:markdown id:modified-bookmark tags:
## My Dataset
%% Cell type:code id:chicken-marshall tags:
```
python
rng
=
np
.
random
.
default_rng
(
seed
=
1
)
x
=
7
+
rng
.
random
(
20
)
x
=
np
.
append
(
x
,
5
+
rng
.
random
(
20
))
y
=
5
+
rng
.
random
(
20
)
y
=
np
.
append
(
y
,
4
+
rng
.
random
(
20
))
plt
.
plot
(
x
,
y
,
'
.
'
)
data
=
np
.
stack
((
x
,
y
),
axis
=
1
)
data_1D
=
np
.
append
(
x
,
y
)
# print(data)
```
%% Output
%% Cell type:markdown id:prepared-republic tags:
# Manual K-Means
%% Cell type:code id:generic-dating tags:
```
python
# Evaluate k
ks
=
np
.
arange
(
0
,
15
)
ks
=
[
2
]
for
k
in
ks
:
cs
=
data
[
0
:
k
].
copy
()
terminate
=
False
last_cog
=
[
np
.
array
([
0
,
0
])
for
i
in
range
(
k
)]
while
not
terminate
:
dist
=
np
.
stack
([[
np
.
linalg
.
norm
(
c
-
d
)
for
d
in
data
]
for
c
in
cs
],
axis
=
1
)
z
=
np
.
array
([
np
.
argmin
(
d
)
for
d
in
dist
])
df
=
[
data
[
z
==
i
]
for
i
in
range
(
k
)]
current_cog
=
[
np
.
sum
(
d
,
axis
=
0
)
/
len
(
d
)
for
d
in
df
]
diff_cog
=
np
.
sum
(
np
.
abs
([
last
-
current
for
last
,
current
in
zip
(
last_cog
,
current_cog
)]))
last_cog
=
current_cog
print
(
diff_cog
)
cs
=
current_cog
if
diff_cog
<
0.3
:
terminate
=
True
plt
.
scatter
(
df
[
0
][:,
0
],
df
[
0
][:,
1
],
color
=
'
green
'
)
plt
.
scatter
(
df
[
1
][:,
0
],
df
[
1
][:,
1
],
color
=
'
pink
'
)
# print(current_cog)
```
%% Output
25.16143318862738
2.0092105896679273
0.0
<matplotlib.collections.PathCollection at 0x12cd0ee80>
%% Cell type:markdown id:czech-romance tags:
# K-Means with Scikit-Learn
%% Cell type:code id:saved-scope tags:
```
python
km
=
KMeans
(
n_clusters
=
2
)
data_predicted
=
km
.
fit_predict
(
data
)
df1
=
data
[
data_predicted
==
0
]
df2
=
data
[
data_predicted
==
1
]
#print(df2)
plt
.
scatter
(
df1
[:,
0
],
df1
[:,
1
],
color
=
'
green
'
)
plt
.
scatter
(
df2
[:,
0
],
df2
[:,
1
],
color
=
'
pink
'
)
```
%% Output
[[5.75036467 4.27404839]
[5.28040876 4.00709183]
[5.48519097 4.6457209 ]
[5.9807372 4.71990938]
[5.96165719 4.83556922]
[5.72478994 4.28187783]
[5.54122686 4.21521817]
[5.2768912 4.63933138]
[5.16065201 4.80505483]
[5.96992541 4.96367087]
[5.51606859 4.15052483]
[5.11586561 4.48221239]
[5.62348976 4.89471586]
[5.77668311 4.42271691]
[5.6130033 4.58950206]
[5.9172977 4.02449068]
[5.03959288 4.67345989]
[5.52858926 4.91908862]
[5.45933588 4.82682533]
[5.06234958 4.88552027]]
<matplotlib.collections.PathCollection at 0x12cd73070>
%% Cell type:code id:partial-faculty tags:
```
python
``
`
%%
Cell
type
:
code
id
:
included
-
county
tags
:
```
python
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment