K-Means Clustering Example
The following example generates random data in three clusters. When the iterate button is clicked, a set of centroids is generated and placed in the chart. Each click of iterate will run one iteration of the k-means algorithm and move the centroids accordingly.run\r\n\r\n","config":{"type":"container"},"style":"#ID{\n}\n"},"url":"/app/html/v1.0.0/ctrl.mjs","id":"iI742xuas-x7i9-FbVv-i16O-guQKmRGHZgcy"},{"name":"centroids","body":{"script":"\r\nfrom sklearn.cluster import KMeans\r\nfrom davinci.python import val\r\nfrom sklearn.feature_extraction import DictVectorizer\r\nimport pandas as pd\r\nimport numpy as np\r\n\r\nrun = val('run')\r\ncentroids = val('centroids')\r\ndata = val('data')\r\n\r\nndata = [[item['x'], item['y']] for item in data]\r\nif run != None and run != '':\r\n if centroids != None:\r\n clist = [[item['x'], item['y']] for item in centroids]\r\n kmeans = KMeans(n_clusters=3, max_iter=1, init=np.array(clist))\r\n else:\r\n kmeans = KMeans(n_clusters=3,max_iter=1)\r\n\r\n test = kmeans.fit(ndata)\r\n\r\n centroids = test.cluster_centers_.tolist()\r\n centroidsm = [{\"x\":item[0], \"y\":item[1]} for item in centroids]\r\n val.set('centroids', centroidsm)","config":{}},"url":"/app/python/v1.0.0/ctrl.mjs"},{"name":"data","body":{"script":"from random import random\r\nfrom davinci.python import val\r\n\r\ndata = []\r\nscale = 1.8\r\npoints = [{\"x\":-1,\"y\":-1},\r\n {\"x\":-1, \"y\":1.2},\r\n {\"x\":1, \"y\":0}\r\n ]\r\n\r\nfor point in points:\r\n for i in range(50):\r\n data.append({\r\n \"x\":point[\"x\"] + scale * random() * -1*scale/2,\r\n \"y\":point[\"y\"] + scale * random() * -1 * scale/2\r\n\r\n })\r\n pass\r\n pass\r\n\r\nval.set('data', data)","config":{}},"url":"/app/python/v1.0.0/ctrl.mjs"}]