class_docstr: Linear model.
  Parameters:
  -----------
  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.
  gradient_descent: boolean
      True or false depending if gradient descent should be used when training. If 
      false then we use batch optimization by least squares.
class_docstr_tok: ["Linear","model",".","Parameters",":","--","--","--","--","--","-","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",".","gradient_descent",":","boolean","True","or","false","depending","if","gradient","descent","should","be","used","when","training",".","If","false","then","we","use","batch","optimization","by","least","squares","."]
code: def __init__(
      self, n_iterations=100, learning_rate=0.001, gradient_descent=True
  ):
      self.gradient_descent = gradient_descent
      # No regularization
      self.regularization = lambda x: 0
      self.regularization.grad = lambda x: 0
      super(LinearRegression, self).__init__(
          n_iterations=n_iterations, learning_rate=learning_rate
      )
  
imports: from __future__ import print_function, division
  import numpy
  import math
  from mlfromscratch.utils import normalize, polynomial_features
label_desc: Use image node_id 1 to create a new LinearRegression object from inherited base classes: Regression with example: obj = LinearRegression(n_iterations, learning_rate, gradient_descent)