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