class_docstr: Check if new LOO PPM computed using closed form formulas is the same as
  computing the values manually.
code: def test_loo_params_linear(self):
      linear_ppm = RidgeRegressorPPM(loo=True, alpha_grid=[0])
      lr = LinearRegression(fit_intercept=True)
      manual_params, manual_intercepts = self.manual_LOO_coefs(
          lr, return_intercepts=True
      )
      augmented_params = np.hstack(
          [manual_params, manual_intercepts[:, np.newaxis]]
      )
      gmdi_params = linear_ppm._fit_loo_coefficients(self.X, self.y, 0)
      assert_array_equal(augmented_params, gmdi_params)
  
imports: import copy
  import numpy
  import random
  import scipy
  from sklearn.linear_model import Ridge, LinearRegression
  from sklearn.tree import DecisionTreeRegressor
  from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier
  from sklearn.metrics import r2_score, log_loss, roc_auc_score, mean_squared_error
  from imodels.importance.block_transformers import IdentityTransformer, TreeTransformer, CompositeTransformer, MDIPlusDefaultTransformer
  from imodels.importance.ppms import RidgeRegressorPPM, LogisticClassifierPPM, RobustRegressorPPM
  from imodels.importance.mdi_plus import TreeMDIPlus, ForestMDIPlus
  from imodels.importance.rf_plus import RandomForestPlusClassifier
label_desc: Use image node_id 3 for calling the TestLOOParams obj's underlying member method code with example usage: obj.test_loo_params_linear() without return types