From d2c54f59fcbfe165996b1876b4d50532e117e1d5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbons Date: Thu, 11 May 2023 16:56:54 +0930 Subject: [PATCH] fix: deprecation warning in sklearn.linear_model.LassoLarsIC #2528 --- shap/explainers/_kernel.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/shap/explainers/_kernel.py b/shap/explainers/_kernel.py index 1b50a6f48..a0555bb9a 100644 --- a/shap/explainers/_kernel.py +++ b/shap/explainers/_kernel.py @@ -12,6 +12,8 @@ import warnings import gc from sklearn.linear_model import LassoLarsIC, Lasso, lars_path +from sklearn.pipeline import make_pipeline +from sklearn.preprocessing import StandardScaler from tqdm.auto import tqdm from ._explainer import Explainer @@ -562,7 +564,8 @@ def solve(self, fraction_evaluated, dim): # use an adaptive regularization method elif self.l1_reg == "auto" or self.l1_reg == "bic" or self.l1_reg == "aic": c = "aic" if self.l1_reg == "auto" else self.l1_reg - nonzero_inds = np.nonzero(LassoLarsIC(criterion=c).fit(mask_aug, eyAdj_aug).coef_)[0] + model = make_pipeline(StandardScaler(with_mean=False), LassoLarsIC(criterion=c, normalize=False)) + nonzero_inds = np.nonzero(model.fit(mask_aug, eyAdj_aug)[1].coef_)[0] # use a fixed regularization coeffcient else: