import numpy as np import pandas as pd import matplotlib.pyplot as plt from justin_trend_detector import trend_detector N = 100 falling1 = 220 + -.5 * np.arange(0,N) + np.random.normal(0,1,N) falling2 = 210 + -.15 * np.arange(0,N) + np.random.normal(0,1,N) falling3 = 120 + -.2 * np.arange(0,N) + np.random.normal(0,5,N) rising1 = 110 + .5 * np.arange(0,N) + np.random.normal(0,1,N) rising2 = 180 + .15 * np.arange(0,N) + np.random.normal(0,1,N) rising3 = 40 + .2 * np.arange(0,N) + np.random.normal(0,5,N) steady1 = 160 + np.random.normal(0,1,N) steady2 = 75 + np.random.normal(0,7,N) df = pd.read_csv("weight.csv", comment="#", parse_dates=["date"]) weight = df.weight pts = 2 fallings = [ f"falling{n}" for n in range(1,4) ] risings = [ f"rising{n}" for n in range(1,4) ] steadies = [ f"steady{n}" for n in range(1,3) ] for falling in fallings: if trend_detector(eval(falling)) == "DOWNWARD": print(f"{falling} correct!") pts += 1 else: print(f"{falling} incorrectly {trend_detector(eval(falling))}!") for rising in risings: if trend_detector(eval(rising)) == "UPWARD": print(f"{rising} correct!") pts += 1 else: print(f"{rising} incorrectly {trend_detector(eval(rising))}!") for steady in steadies: if trend_detector(eval(steady)) == "STEADY": print(f"{steady} correct!") pts += 1 else: print(f"{steady} incorrectly {trend_detector(eval(steady))}!") print(f"I think Stephen's weight is going {trend_detector(weight)}.") print(f"{pts} points.") plot = False if plot: plt.clf() plt.figure(figsize=(10,8)) for h in range(0,260,10): plt.axhline(h,color="gray",linewidth=.5,linestyle="dotted") plt.plot(falling1, label="falling1", color="blue", linestyle="solid") plt.plot(falling2, label="falling2", color="blue", linestyle="dashed") plt.plot(falling3, label="falling3", color="blue", linestyle="dotted") plt.plot(rising1, label="rising1", color="red", linestyle="solid") plt.plot(rising2, label="rising2", color="red", linestyle="dashed") plt.plot(rising3, label="rising3", color="red", linestyle="dotted") plt.plot(steady1, label="steady1", color="green", linestyle="solid") plt.plot(steady2, label="steady2", color="green", linestyle="dashed") plt.plot(weight, label="stephen", color="black", linestyle="solid") plt.ylim((0,250)) plt.legend() plt.savefig("trend.png")