44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
from pprint import pprint
|
|
import json
|
|
from pathlib import Path
|
|
from main import RunResults, Iteration, Centroid
|
|
import matplotlib.pyplot as plt
|
|
from persistance import run_result_from_dict
|
|
|
|
|
|
def process(runs: list[RunResults]) -> None:
|
|
runs.sort(key=lambda a: a.k)
|
|
x = tuple(run.k for run in runs)
|
|
y = tuple(run.iterations[-1].wss for run in runs)
|
|
plt.scatter(x, y)
|
|
plt.ylabel("wss")
|
|
plt.xlabel("K")
|
|
# for i_x, i_y in zip(x, y): # For k labels on every point
|
|
# plt.text(i_x, i_y, '{}'.format(i_x))
|
|
|
|
plt.show()
|
|
|
|
|
|
# def process(runs: list[RunResults]) -> None:
|
|
# for run in runs:
|
|
# if run.k == 1000:
|
|
# print(run.k, run.iterations[-1].wss)
|
|
|
|
|
|
def main():
|
|
runs = list()
|
|
for json_file in Path(".").glob("*.json"):
|
|
with open(json_file, mode="r") as file:
|
|
try:
|
|
runs.append(run_result_from_dict(json.load(file), str(json_file)))
|
|
|
|
except Exception as e:
|
|
print(json_file)
|
|
raise e
|
|
|
|
process(runs)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|