{ "cells": [ { "cell_type": "code", "execution_count": 478, "metadata": {}, "outputs": [], "source": [ "# Please enter your names\n", "\n", "names = \"Fabian Langer, Yannik Bretschneider\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Programming Exercise: Single Pass\n", "In this exercise you will need to implement the Single Pass algorithm." ] }, { "cell_type": "code", "execution_count": 479, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# Tell matplotlib to plot inside the Notebook\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we need a notion for data points and clusters to make our life a little easier. Complete the missing parts:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "class Point:\n", " x = 0\n", " y = 0\n", " \n", " def __init__(self, x = 0, y = 0):\n", " self.x = x\n", " self.y = y\n", " \n", " def distanceTo(self, point):\n", " # Compute Euclidean distance\n", " distance = np.sqrt((self.x - point.x)**2 + (self.y - point.y)**2)\n", " return distance\n", " \n", " def __mul__(self, other):\n", " # Scale vector by a given facter\n", " assert isinstance(other, (float)), \"Unsupported operand type(s) for *: 'float' and '{}'\".format(type(other).__name__)\n", " return Point(self.x * other, self.y * other)\n", "\n", " def __add__(self, other):\n", " # Add two points\n", " assert isinstance(other, Point), \"Unsupported operand type(s) for +: 'Point' and '{}'\".format(type(other).__name__)\n", " return Point(self.x + other.x, self.y + other.y)\n", "\n", "\n", "class Cluster:\n", " centroid = Point() # Centroid point of the cluster\n", " num = 0 # Number of points in the cluster\n", " cid = 0 # Cluster ID\n", "\n", " def __init__(self, centroid: Point = Point(), cid = 0):\n", " self.centroid = centroid\n", " self.cid = cid\n", " self.num = 1\n", " \n", " def addPoint(self, point):\n", " # If there is no centroid yet, use the point as centroid\n", " if not self.centroid:\n", " self.num = 1\n", " self.centroid = Point(point.x, point.y)\n", " # If there is a centroid, update it\n", " else:\n", " self.num += 1\n", " self.centroid = self.centroid * ((self.num - 1) / float(self.num)) + point * (1 / float(self.num))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we need a function to plot datapoints with their assigned cluster color." ] }, { "cell_type": "code", "execution_count": 481, "metadata": {}, "outputs": [], "source": [ "import random\n", "colormap = []\n", "\n", "def get_random_hex_color():\n", " \"\"\"Generates a random hex color code.\"\"\"\n", " def r():\n", " return random.randint(0, 255)\n", " return '#%02X%02X%02X' % (r(),r(),r())\n", "\n", "def initplot():\n", " # Initialize th plot\n", " global colormap\n", " plt.suptitle('SinglePass')\n", " # Initial colors, more will be generated if needed\n", " colormap = ['black','red','blue','green','orange','purple','yellow','pink']\n", " \n", "def plot(point,c):\n", " # Generate random colors if needed\n", " global colormap\n", " while c > len(colormap) - 1:\n", " colormap.append(get_random_hex_color())\n", " # Plot the data point in the color of the cluster\n", " plt.scatter(point.x, point.y, c=colormap[c], s=40)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write a function that performs the Single Pass Clustering. Since its a streaming based clustering, it will only see one data point at a time. Don't forget to plot each datapoint after assigning it to a cluster." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "clusters = []\n", "cid = 1\n", "\n", "def SinglePass(point, threshold):\n", " #Write Single Pass Algorithm here\n", " global clusters\n", " global cid\n", " \n", " point_cid = None # Cluster closest to the point\n", " cid_dist = float('inf') # closest distance so far\n", "\n", " for cluster in clusters:\n", " # Check if cluster is close enough\n", " if (dist := point.distanceTo(cluster.centroid)) < threshold:\n", " # Add point to the cluster (which also move it's centroid)\n", " cluster.addPoint(point)\n", " # If the cluster is the closest so far, remeber the cluster id\n", " if dist < cid_dist:\n", " cid_dist = dist\n", " point_cid = cluster.cid\n", "\n", " # Create a new cluster, if the point wasn't close enough to one of the exsisting ones\n", " if point_cid is None:\n", " clusters.append(Cluster(point, cid))\n", " point_cid = cid\n", " cid += 1\n", "\n", " return (point, point_cid) # return point and its closest cluster id\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Note*: Please download datasets.zip, extract the files.\n", "\n", "Now we set up everything for loading the data." ] }, { "cell_type": "code", "execution_count": 483, "metadata": {}, "outputs": [], "source": [ "filepath = \"./clustering-datasets/\" \n", "filenames = [\"Aggregation\",\"Compound\",\"D31\",\"flame\",\"jain\",\"pathbased\",\"R15\",\"spiral\"]\n", "fileextension = \".txt\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set the parameters:" ] }, { "cell_type": "code", "execution_count": 484, "metadata": {}, "outputs": [], "source": [ "thresholds = {\"Aggregation\": 10,\n", " \"Compound\": 13,\n", " \"D31\": 4,\n", " \"flame\": 8.1,\n", " \"jain\": 13,\n", " \"pathbased\": 10,\n", " \"R15\": 6,\n", " \"spiral\": 7}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can cluster the data using Single Pass Clustering:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n", "def main(filename):\n", " threshold = thresholds[filename]\n", " initplot()\n", " f = filepath+filename+fileextension\n", " file = open(f,\"r\")\n", " line = file.readline()\n", " while(line != \"\"):\n", " a = line[:-1].split()\n", " x = float(a[0])\n", " y = float(a[1])\n", " nPoint, nCid = SinglePass(Point(x,y),threshold)\n", " plot(nPoint, nCid)\n", " line = file.readline()\n", " file.close()\n", " print(\"Finished clustering dataset: \" + filename)" ] }, { "cell_type": "code", "execution_count": 486, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Finished clustering dataset: Compound\n" ] }, { "data": { "image/png": "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X3/9daMXxojevXsDAFq3bo3Ro0c7agcA/O///i9atmyJv/3tbylp2suWLWu2bEFBAUaNGoVRo0Zh0aJFuPfee3HHHXdg9erVjW056qijMH78eIwfPx51dXW47LLL8LOf/Qxz5sxBy5YtHbeXEGIPTgkREmFWr16d0Rvy0ksvAQD69+/vaPujRo1CYWEhHn300ZTPH374Yct1S0tL0bt3bzzwwAPYv39/s+/T06etiMVi0DQNDQ0NjZ/961//wvPPP5+y3L///e9m6+oenkOHDgGQBlcyLVq0wKBBgyCEQH19va12EULcgR4WQiLMrFmz8M033+D73/8+BgwYgLq6Orz++utYvnw5jj32WFxzzTWOtt+5c2fcfPPNjanBY8eOxfvvv4+//OUv6NChQ0rAbjoFBQVYunQpzj//fAwePBjXXHMNunXrhi+++AKrV69G69at8ec//1m5LRdccAEWLVqEsWPHYuLEidi9ezceeeQR9OnTBx988EHjcvfccw/Wrl2LCy64AL169cLu3bvx61//Gt27d8cZZ5wBADjvvPNQXFyM008/HZ07d8bGjRvx8MMP44ILLkCrVq2yP2CEkKyhwUJIhHnggQfw3HPP4aWXXsJjjz2Guro69OzZEzfeeCPuvPPOjIJydvn5z3+OI488Eo8//jheeeUVjBgxAn//+99xxhlnWE6dnHPOOVi3bh0WLFiAhx9+GPv370dxcTGGDx+O6dOn22rHyJEj8dvf/hb33XcfbrnlFpSUlODnP/85/vWvf6UYLBdffDH+9a9/4YknnsBXX32FDh064Oyzz8b8+fPRpk0bAMD06dPx1FNPYdGiRdi/fz+6d++Om266CXfeeaf9A0QIcQVNuBE9RwghSezduxft2rVDWVkZ7rjjDr+bQwiJAIxhIYQ44ttvv2322YMPPghAelAIIcQNOCVECHHE8uXL8eSTT+J73/sejj76aPzzn//EM888g/POOw+nn366380jhEQEGiyEEEeccMIJKCwsxC9+8QvU1tY2BuKWlZX53TRCSIRgDAshhBBCAg9jWAghhBASeGiwEEIIISTw0GAhhBBCSOChwUIIIYSQwEODhRBCCCGBhwYLIYQQQgIPDRZCCCGEBB4aLIQQQggJPDRYCCGEEBJ4aLAQQgghJPDQYCGEEEJI4KHBQgghhJDAQ4OFEEIIIYGHBgsh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LcKIyr6fc845zc779ddf71OL3eXRRx/FCSec0CgUNmLECPzlL39p/D6q5x2w3vcon/dk7rvvPmialqL6HuXzng00WALKgQMHcOKJJ+KRRx7J+P0vfvEL/Nd//Rd+85vf4M0338RRRx2FMWPG4ODBgzluqftY7TsAjB07Fjt27Gh8PfPMMzlsoTesWbMGM2bMwBtvvIGXX34Z9fX1OO+883DgwIHGZW699Vb8+c9/xnPPPYc1a9Zg+/btuOyyy3xstTuo7DsATJs2LeW8/+IXv/Cpxe7SvXt33HfffVi/fj3eeecdjBw5Epdccgk++ugjANE974D1vgPRPe86b7/9NpYsWYITTjgh5fMon/esECTwABArV65s/D+RSIji4mJx//33N362d+9eUVRUJJ555hkfWugd6fsuhBCTJ08Wl1xyiS/tySW7d+8WAMSaNWuEEPIcx+Nx8dxzzzUus3HjRgFArFu3zq9mekL6vgshxNlnny1uvvlm/xqVY9q1ayeWLl2aV+ddR993IaJ/3vft2yf69u0rXn755ZR9zcfzbgU9LCGkuroaO3fuxOjRoxs/a9OmDYYPH45169b52LLcUV5ejk6dOqF///644YYb8PXXX/vdJNepqakBALRv3x4AsH79etTX16ec9wEDBqBnz56RO+/p+67z1FNPoUOHDjjuuOMwZ84cfPPNN340z1MaGhrw7LPP4sCBAxgxYkRenff0fdeJ8nmfMWMGLrjggpTzC+TX/a6K59Waifvs3LkTANC5c+eUzzt37tz4XZQZO3YsLrvsMpSUlKCqqgq33347zj//fKxbtw6xWMzv5rlCIpHALbfcgtNPP72xrtbOnTvRokULtG3bNmXZqJ33TPsOABMnTkSvXr3QtWtXfPDBB/jpT3+KyspK/PGPf/Sxte7x4YcfYsSIETh48CCOPvporFy5EoMGDUJFRUXkz7vRvgPRPu/PPvss3n33Xbz99tvNvsuX+90ONFhI6Ljiiisa/z7++ONxwgknoHfv3igvL8eoUaN8bJl7zJgxAxs2bMA///lPv5uSc4z2/brrrmv8+/jjj0eXLl0watQoVFVVoXfv3rlupuv0798fFRUVqKmpwR/+8AdMnjwZa9as8btZOcFo3wcNGhTZ875t2zbcfPPNePnll9GyZUu/mxMKOCUUQoqLiwGgWbT4rl27Gr/LJ77zne+gQ4cO2Lx5s99NcYWZM2fixRdfxOrVq9G9e/fGz4uLi1FXV4e9e/emLB+l826075kYPnw4AETmvLdo0QJ9+vRBaWkpFi5ciBNPPBEPPfRQXpx3o33PRFTO+/r167F7924MHToUhYWFKCwsxJo1a/Bf//VfKCwsROfOnSN/3u1CgyWElJSUoLi4GKtWrWr8rLa2Fm+++WbKvG++8Pnnn+Prr79Gly5d/G6KI4QQmDlzJlauXIlXX30VJSUlKd+XlpYiHo+nnPfKykps3bo19Ofdat8zUVFRAQChP+9GJBIJHDp0KNLn3Qh93zMRlfM+atQofPjhh6ioqGh8nXzyybjyyisb/863824Fp4QCyv79+1OeIKqrq1FRUYH27dujZ8+euOWWW1BWVoa+ffuipKQEd911F7p27YpLL73Uv0a7hNm+t2/fHvPnz8cPfvADFBcXo6qqCj/5yU/Qp08fjBkzxsdWO2fGjBl4+umn8cILL6BVq1aN89Rt2rTBEUccgTZt2mDq1KmYPXs22rdvj9atW2PWrFkYMWIETj31VJ9b7wyrfa+qqsLTTz+N733vezjmmGPwwQcf4NZbb8VZZ53VLBU0jMyZMwfnn38+evbsiX379uHpp59GeXk5/va3v0X6vAPm+x7l896qVauUGC0AOOqoo3DMMcc0fh7l854VfqcpkcysXr1aAGj2mjx5shBCpjbfddddonPnzqKoqEiMGjVKVFZW+ttolzDb92+++Uacd955omPHjiIej4tevXqJadOmiZ07d/rdbMdk2mcAYtmyZY3LfPvtt+LGG28U7dq1E0ceeaT4/ve/L3bs2OFfo13Cat+3bt0qzjrrLNG+fXtRVFQk+vTpI3784x+LmpoafxvuElOmTBG9evUSLVq0EB07dhSjRo0Sf//73xu/j+p5F8J836N+3tNJT+GO8nnPBk0IIXJpIBFCCCGE2IUxLIQQQggJPDRYCCGEEBJ4aLAQQgghJPDQYCGEEEJI4KHBQgghhJDAQ4OFEEIIIYGHBgshhBBCAg8NFkIIIYQEHhoshBBCCAk8NFgIIYQQEnhosBBCCCEk8NBgIYQQQkjg+X8yvsFKFzSGHwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "main(filenames[1])" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": ".venv", "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.7" } }, "nbformat": 4, "nbformat_minor": 1 }