class_docstr: Regression where a combination of l1 and l2 regularization are used. The
  ratio of their contributions are set with the 'l1_ratio' parameter.
  Parameters:
  -----------
  degree: int
      The degree of the polynomial that the independent variable X will be transformed to.
  reg_factor: float
      The factor that will determine the amount of regularization and feature
      shrinkage. 
  l1_ration: float
      Weighs the contribution of l1 and l2 regularization.
  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: ["Regression","where","a","combination","of","l1","and","l2","regularization","are","used",".","The","ratio","of","their","contributions","are","set","with","the","'l1_ratio","'","parameter",".","Parameters",":","--","--","--","--","--","-","degree",":","int","The","degree","of","the","polynomial","that","the","independent","variable","X","will","be","transformed","to",".","reg_factor",":","float","The","factor","that","will","determine","the","amount","of","regularization","and","feature","shrinkage",".","l1_ration",":","float","Weighs","the","contribution","of","l1","and","l2","regularization",".","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 = normalize(polynomial_features(X, degree=self.degree))
      return super(ElasticNet, 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 ElasticNet obj's underlying member method code with example usage: obj.predict(X) and returns: super