From b91af489224362ce718f11b31d4ab4542a8537a7 Mon Sep 17 00:00:00 2001 From: Ryan Missel Date: Sat, 30 Mar 2019 20:41:16 -0400 Subject: [PATCH] Added polynomial regression function --- hypotheses_modeling/hypotheses.txt | 7 ++++++ hypotheses_modeling/team_regressions.py | 29 +++++++++++++++++-------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/hypotheses_modeling/hypotheses.txt b/hypotheses_modeling/hypotheses.txt index a95b2b3..b2c2a04 100644 --- a/hypotheses_modeling/hypotheses.txt +++ b/hypotheses_modeling/hypotheses.txt @@ -21,8 +21,15 @@ Team: 5. + +Individual: + Player 1 - fatigue + day / soreness + lr - 0.24677741789096985 + pr - 0.32119826926167405 + Perry: 7 day moving average team workload - normalized team fatigue: 0.0006 21 day moving average team workload - normalized team fatigue: 0.0024 normalized team fatigue - game day performance: 0.0696 normalized team fatigue - paper smoothed workload fatigue: 0.0324 + diff --git a/hypotheses_modeling/team_regressions.py b/hypotheses_modeling/team_regressions.py index c7fced1..52e2867 100644 --- a/hypotheses_modeling/team_regressions.py +++ b/hypotheses_modeling/team_regressions.py @@ -1,4 +1,6 @@ from sklearn import linear_model +from sklearn.preprocessing import PolynomialFeatures +import numpy as np import pandas as pd from sklearn.metrics import mean_squared_error, r2_score @@ -34,6 +36,7 @@ def k_days_into_future_regression(X, y, k, n0): def standard_lr(x, y): + # Standard linear regression formula, gives back params and r2 regr = linear_model.LinearRegression() regr.fit(x, y) predictions = regr.predict(x) @@ -42,19 +45,27 @@ def standard_lr(x, y): return regr.intercept_, regr.coef_, r2, mse -def main(): - # fatigueSums = pd.read_csv("fatigue_total_sum.csv") - # workMovingAverage21 = pd.read_csv("21DaySlidingWorkAverage.csv", index_col=0) - # print(k_days_into_future_regression(workMovingAverage21, fatigueSums, 0, 21)) +def poly_regression(x, y, degree): + # Polynomial regression with nth degree, gives back rmse and r2 + polynomial_features = PolynomialFeatures(degree=degree) + x_poly = polynomial_features.fit_transform(x) + + model = linear_model.LinearRegression() + model.fit(x_poly, y) + y_poly_pred = model.predict(x_poly) + rmse = np.sqrt(mean_squared_error(y, y_poly_pred)) + r2 = r2_score(y, y_poly_pred) + return rmse, r2 - wellness = pd.read_csv("../data_preparation/cleaned/time_series_normalized_wellness_menstruation.csv") - wellness = wellness.fillna(0) - x = wellness[['normSoreness', 'TimeSinceAugFirst']] - y = wellness['normFatigue'] - print(wellness.isnull().sum()) +def main(): + player = pd.read_csv("../data_preparation/cleaned/personal.csv", index_col=0) + player = player[player['playerID'] == 1] + x = player[['fatigueNorm', 'day']] + y = player['sorenessNorm'] print(standard_lr(x, y)) + print(poly_regression(x, y, 5)) if __name__ == "__main__":