I have tried to make my own Poly Model from Scratch, using the same dataset you are using, with the same features and target variable. Since i checked your code in Jupyter Notebook , its hard to tell which one is your r2 score and other Variables. Anyway, When i tried with mine, the best i am getting is 0.22 R2 score in test and train(0.23) too .
Can you make it little more conclusive whether the variables we chose are appropriate as the assumptions of Poly regression says ?