docstr: ...Test LinearRegression warm start
          
docstr_tok: ["...","Test","LinearRegression","warm","start"]
code: def test_LinearRegression_warm_start(self):
      """...Test LinearRegression warm start"""
      X, y, weights0, intercept0 = Test.get_train_data()
  
      fit_intercepts = [True, False]
      cases = itertools.product(
          LinearRegression._solvers.keys(), fit_intercepts
      )
  
      for solver, fit_intercept in cases:
          solver_kwargs = {
              "solver": solver,
              "max_iter": 2,
              "fit_intercept": fit_intercept,
              "warm_start": True,
              "tol": 0,
          }
  
          learner = LinearRegression(**solver_kwargs)
          learner.fit(X, y)
          if fit_intercept:
              coeffs_1 = np.hstack((learner.weights, learner.intercept))
          else:
              coeffs_1 = learner.weights
  
          learner.fit(X, y)
          if fit_intercept:
              coeffs_2 = np.hstack((learner.weights, learner.intercept))
          else:
              coeffs_2 = learner.weights
          # Thanks to warm start objective should have decreased
          self.assertLess(
              learner._solver_obj.objective(coeffs_2),
              learner._solver_obj.objective(coeffs_1),
          )
  
imports: import itertools
  import unittest
  from itertools import product
  import numpy
  from scipy.linalg import norm
  from tick.base.inference import InferenceTest
  from tick.linear_model import SimuLinReg, LinearRegression
  from tick.simulation import weights_sparse_gauss
label_desc: Use image node_id 4 for calling the Test obj's underlying member method code with example usage: obj.test_LinearRegression_warm_start() without return types