lw=3,
         label=f"LR = 0.1, Final = {losses['LR=0.1'][-1]:.2f}")
plt.plot(xs,
         losses['LR=0.01'],
         lw=3,
         label=f"LR = 0.01, Final = {losses['LR=0.01'][-1]:.2f}")
plt.plot(xs,
         losses['LR=0.001'],
         lw=3,
         label=f"LR = 0.001, Final = {losses['LR=0.001'][-1]:.2f}")
plt.title('Loss per iteration (MSE) for different learning rates', size=20)
plt.xlabel('Iteration', size=14)
plt.ylabel('Loss', size=14)
plt.legend()
plt.show()

if __name__ == "__main__":
    model = LinearRegression(lr=0.5)
    model.fit(X_train, y_train, optimizer="adam")
    preds = model.predict(X_test)

    print(model._mean_squared_error(y_test, preds))

    from sklearn.linear_model import LinearRegression
    from sklearn.metrics import mean_squared_error

    lr_model = LinearRegression()
    lr_model.fit(X_train, y_train)
    lr_preds = lr_model.predict(X_test)

    print(mean_squared_error(y_test, lr_preds))