Advertisement
Guest User

Untitled

a guest
Aug 5th, 2015
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.58 KB | None | 0 0
  1. from random import randint
  2.  
  3. class KMeans:
  4.  
  5. def __init__(self, minimum, maximum, dim, k):
  6. self._centroids = [[randint(minimum, maximum) for d in range(dim)] for x in range(k]
  7. self._points = {i: [] for i in range(k)}
  8.  
  9. def update(self, vector):
  10. distance = lambda v: sqrt(sum([(x2-x1) ** 2 for x1, x2 in zip(v[1], vector)]))
  11. centroid_index = min(enumerate(self._centroids), key=dist)[0]
  12. self._points[centroid_index].append(vector)
  13. self._centroids[centroid_index] = [sum(xi) / len(xi) for xi in zip(*self._points[centroid_index])]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement