From 9f5876dcaad0977e6ef4cb350d52b70236f55e76 Mon Sep 17 00:00:00 2001 From: Thomas Vanbesien Date: Wed, 1 Apr 2026 15:50:31 +0200 Subject: Add R-squared precision calculator for trained model --- calculate_precision.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 calculate_precision.py (limited to 'calculate_precision.py') diff --git a/calculate_precision.py b/calculate_precision.py new file mode 100644 index 0000000..acf1391 --- /dev/null +++ b/calculate_precision.py @@ -0,0 +1,45 @@ +import csv + +DATA_FILE = "data.csv" +THETAS_FILE = "thetas.csv" + + +def load_thetas(): + with open(THETAS_FILE) as f: + lines = f.readlines() + return float(lines[0]), float(lines[1]) + + +def load_data(): + km = [] + price = [] + with open(DATA_FILE) as f: + reader = csv.reader(f) + next(reader) + for row in reader: + km.append(float(row[0])) + price.append(float(row[1])) + return km, price + + +def mean(vals): + return sum(vals) / len(vals) + + +def estimate_price(mileage, theta0, theta1): + return theta0 + theta1 * mileage + + +def main(): + kms, prices = load_data() + theta0, theta1 = load_thetas() + predicted_prices = [estimate_price(x, theta0, theta1) for x in kms] + mean_price = mean(prices) + r2 = 1 - sum((p - pp) ** 2 for p, pp in zip(prices, predicted_prices)) / sum( + (p - mean_price) ** 2 for p in prices + ) + print(f"R-squared = {r2}") + + +if __name__ == "__main__": + main() -- cgit v1.2.3