diff options
author | nea <romangraef@gmail.com> | 2022-04-20 17:49:59 +0200 |
---|---|---|
committer | nea <romangraef@gmail.com> | 2022-04-20 17:49:59 +0200 |
commit | d9296584270f1e902944fc7390d0b43c34aa2dbb (patch) | |
tree | 09d04658c94cdaf7a4fb4fc9e8a81d111edab959 /sbdata/tasks/calculate_mapping_function.py | |
parent | a61b3f9e2b8b2eeb9d556b5f477d2a479b9f7643 (diff) | |
download | sbdata-d9296584270f1e902944fc7390d0b43c34aa2dbb.tar.gz sbdata-d9296584270f1e902944fc7390d0b43c34aa2dbb.tar.bz2 sbdata-d9296584270f1e902944fc7390d0b43c34aa2dbb.zip |
literal tos violations
Diffstat (limited to 'sbdata/tasks/calculate_mapping_function.py')
-rw-r--r-- | sbdata/tasks/calculate_mapping_function.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sbdata/tasks/calculate_mapping_function.py b/sbdata/tasks/calculate_mapping_function.py new file mode 100644 index 0000000..37185a8 --- /dev/null +++ b/sbdata/tasks/calculate_mapping_function.py @@ -0,0 +1,31 @@ +import pathlib +import random +import numpy as np +from sklearn.linear_model import LinearRegression + +from sbdata.task import register_task, Arguments + + +@register_task("Calculate Map Coordinate Function") +def calculate_mapping_function(args: Arguments): + csv = args.get_arg("Coordinate CSV", "coords", pathlib.Path) + points = [[int(x) for x in y.split(",")] for y in csv.read_text().splitlines()[1:]] + xs = [(a[0], a[2]) for a in points] + zs = [(a[1], a[3]) for a in points] + random.shuffle(xs) + random.shuffle(zs) + find_best_function_for("X", xs) + find_best_function_for("Z", zs) + + +def find_best_function_for(label: str, l: list[tuple[int, int]]): + x = np.array([a[0] for a in l]).reshape((-1, 1)) + y = np.array([a[1] for a in l]) + model = LinearRegression() + model.fit(x, y) + print(f'------------') + print(f' {label} Coordinate:') + print(f" Score: {model.score(x, y)}") + print(f" Slope: {model.coef_[0]}") + print(f" Intercept: {model.intercept_}") + print(f'------------') |