Spaces:
Sleeping
Sleeping
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
|