Spaces:
Sleeping
Sleeping
Commit
·
803aad3
1
Parent(s):
fcc4124
think I am done with build func
Browse files- 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,
|