Jensen-holm commited on
Commit
04b61ad
·
1 Parent(s): c2687ce

kmeans clustering works and returns centroids and labeled data

Browse files
app.py CHANGED
@@ -36,6 +36,7 @@ def index():
36
  # parse arguments
37
  algorithm = options[request.json["algorithm"]]
38
  args = request.json["arguments"]
 
39
 
40
  # using the iris data set for every algorithm
41
  X, y = iris()
@@ -48,4 +49,4 @@ def index():
48
 
49
 
50
  if __name__ == "__main__":
51
- app.run(debug=False)
 
36
  # parse arguments
37
  algorithm = options[request.json["algorithm"]]
38
  args = request.json["arguments"]
39
+ args["algorithm"] = request.json["algorithm"]
40
 
41
  # using the iris data set for every algorithm
42
  X, y = iris()
 
49
 
50
 
51
  if __name__ == "__main__":
52
+ app.run(debug=True)
cluster/clusterer.py CHANGED
@@ -7,7 +7,6 @@ import numpy as np
7
  @dataclass
8
  class Clusterer:
9
  cluster_func: Callable
10
- options: dict
11
 
12
  def eval(
13
  self,
@@ -19,9 +18,3 @@ class Clusterer:
19
  @classmethod
20
  def from_dict(cls, dct: dict):
21
  return cls(**dct)
22
-
23
- def to_dict(self):
24
- return {
25
- "cluster_method": self.cluster_func.__name__,
26
- "options": self.options,
27
- }
 
7
  @dataclass
8
  class Clusterer:
9
  cluster_func: Callable
 
10
 
11
  def eval(
12
  self,
 
18
  @classmethod
19
  def from_dict(cls, dct: dict):
20
  return cls(**dct)
 
 
 
 
 
 
cluster/kmeans.py CHANGED
@@ -61,6 +61,6 @@ class Kmeans(Clusterer):
61
  return {
62
  "k": self.k,
63
  "max_iter": self.max_iter,
64
- "centroids": self.centroids,
65
- "clusters": self.clusters,
66
  }
 
61
  return {
62
  "k": self.k,
63
  "max_iter": self.max_iter,
64
+ "centroids": self.centroids.tolist(),
65
+ "clusters": self.clusters.tolist(),
66
  }
cluster/main.py CHANGED
@@ -1,4 +1,3 @@
1
- from sklearn.model_selection import train_test_split
2
  import numpy as np
3
 
4
  from cluster.clusterer import Clusterer
@@ -11,9 +10,11 @@ def main(
11
  y: np.array,
12
  args: dict,
13
  ) -> dict:
14
- cluster_alg: Clusterer = clustering_methods[args["algorithm"]]
 
15
 
16
- alg = cluster_alg.from_dict(args)
17
- alg.build(X)
18
 
 
19
  return alg.to_dict()
 
 
1
  import numpy as np
2
 
3
  from cluster.clusterer import Clusterer
 
10
  y: np.array,
11
  args: dict,
12
  ) -> dict:
13
+ cluster_func = args.pop("algorithm")
14
+ cluster_alg: Clusterer = clustering_methods[cluster_func]
15
 
16
+ cluster_args: dict = {"cluster_func": cluster_func} | args
17
+ alg = cluster_alg.from_dict(cluster_args)
18
 
19
+ alg.build(X)
20
  return alg.to_dict()
cluster/opts.py CHANGED
@@ -4,6 +4,6 @@ from cluster.kmeans import Kmeans
4
 
5
 
6
  clustering_methods: dict[str, Clusterer] = {
7
- "kmeans": Kmeans,
8
- "kmedoids": Kmedoids,
9
  }
 
4
 
5
 
6
  clustering_methods: dict[str, Clusterer] = {
7
+ "kmeans-clustering": Kmeans,
8
+ "kmedoids-clustering": Kmedoids,
9
  }
example/kmeans.py CHANGED
@@ -1,10 +1,10 @@
1
  import requests
2
  import json
3
 
4
- ENDPOINT: str = "https://data-mining-from-scratch-backend.onrender.com/"
5
 
6
  request_params = {
7
- "algorithm": "kmeans",
8
  "arguments": {
9
  "k": 3,
10
  "max_iter": 10,
 
1
  import requests
2
  import json
3
 
4
+ ENDPOINT: str = "http://127.0.0.1:5000/"
5
 
6
  request_params = {
7
+ "algorithm": "kmeans-clustering",
8
  "arguments": {
9
  "k": 3,
10
  "max_iter": 10,
example/neural_network.py CHANGED
@@ -3,7 +3,9 @@ import seaborn as sns
3
  import requests
4
  import json
5
 
6
- ENDPOINT: str = "https://data-mining-from-scratch-backend.onrender.com/"
 
 
7
 
8
  request_params = {
9
  "algorithm": "neural-network",
 
3
  import requests
4
  import json
5
 
6
+ # ENDPOINT: str = "https://data-mining-from-scratch-backend.onrender.com/"
7
+
8
+ ENDPOINT: str = "http://127.0.0.1:5000/"
9
 
10
  request_params = {
11
  "algorithm": "neural-network",