File size: 1,079 Bytes
a309487
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import shap
import numpy as np

class ExplainabilityEngine:
    def explain_tabular(self, model_pipeline, X_sample):
        if X_sample.empty:
            raise ValueError("Sample data is empty, cannot compute explanations")

        # Extract trained model and preprocessor
        preprocessor = model_pipeline.named_steps["preprocessor"]
        model = model_pipeline.named_steps["model"]

        X_transformed = preprocessor.transform(X_sample)

        if X_transformed.shape[0] == 0:
            raise ValueError("Transformed sample data is empty after preprocessing")

        explainer = shap.Explainer(model, X_transformed)
        shap_values = explainer(X_transformed, check_additivity=False)

        if shap_values is None or shap_values.values is None:
            raise ValueError("SHAP computation failed")

        global_importance = np.abs(shap_values.values).mean(axis=0).tolist()

        if len(global_importance) == 0:
            raise ValueError("No feature importance computed")

        return global_importance