class_docstr: Performs a non-linear transformation of the data before fitting the model
  and doing predictions which allows for doing non-linear regression.
  Parameters:
  -----------
  degree: int
      The degree of the polynomial that the independent variable X will be transformed to.
  n_iterations: float
      The number of training iterations the algorithm will tune the weights for.
  learning_rate: float
      The step length that will be used when updating the weights.
class_docstr_tok: ["Performs","a","non-linear","transformation","of","the","data","before","fitting","the","model","and","doing","predictions","which","allows","for","doing","non-linear","regression",".","Parameters",":","--","--","--","--","--","-","degree",":","int","The","degree","of","the","polynomial","that","the","independent","variable","X","will","be","transformed","to",".","n_iterations",":","float","The","number","of","training","iterations","the","algorithm","will","tune","the","weights","for",".","learning_rate",":","float","The","step","length","that","will","be","used","when","updating","the","weights","."]
code: def predict(self, X):
      X = polynomial_features(X, degree=self.degree)
      return super(PolynomialRegression, self).predict(X)
  
imports: from __future__ import print_function, division
  import numpy
  import math
  from mlfromscratch.utils import normalize, polynomial_features
label_desc: Use image node_id 3 for calling the PolynomialRegression obj's underlying member method code with example usage: obj.predict(X) and returns: super