Jensen-holm commited on
Commit
803aad3
·
1 Parent(s): fcc4124

think I am done with build func

Browse files
Files changed (1) hide show
  1. cluster/kmeans.py +12 -2
cluster/kmeans.py CHANGED
@@ -1,7 +1,6 @@
1
  from dataclasses import dataclass
2
  import numpy as np
3
 
4
- from cluster.distance import euclidean
5
  from cluster.clusterer import Clusterer
6
 
7
 
@@ -13,7 +12,7 @@ class Kmeans(Clusterer):
13
  def build(
14
  self,
15
  X: np.array,
16
- ):
17
  # randomly initialize centroids
18
  centroids = X[np.random.choice(
19
  X.shape[0],
@@ -26,6 +25,17 @@ class Kmeans(Clusterer):
26
  clusters = self.assign_clusters(X, centroids)
27
  centroids = self.update_centroids(self.k, X, clusters)
28
 
 
 
 
 
 
 
 
 
 
 
 
29
  @staticmethod
30
  def assign_clusters(
31
  X: np.array,
 
1
  from dataclasses import dataclass
2
  import numpy as np
3
 
 
4
  from cluster.clusterer import Clusterer
5
 
6
 
 
12
  def build(
13
  self,
14
  X: np.array,
15
+ ) -> dict[str, np.array]:
16
  # randomly initialize centroids
17
  centroids = X[np.random.choice(
18
  X.shape[0],
 
25
  clusters = self.assign_clusters(X, centroids)
26
  centroids = self.update_centroids(self.k, X, clusters)
27
 
28
+ while True:
29
+ new_clusts = self.assign_clusters(X, centroids)
30
+ if np.array_equal(new_clusts, clusters):
31
+ break
32
+ clusters = new_clusts
33
+ centroids = self.update_centroids(self.k, X, clusters)
34
+ return {
35
+ "clusters": clusters,
36
+ "centroids": centroids,
37
+ }
38
+
39
  @staticmethod
40
  def assign_clusters(
41
  X: np.array,