模型可解释性:特征重要性/SHAP/LIME

模型可解释性:特征重要性/SHAP/LIME

1. 特征重要性

python 复制代码
from sklearn.ensemble import RandomForestClassifier
import pandas as pd

# 树模型内置特征重要性
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)

importance = pd.Series(rf.feature_importances_, index=feature_names)
print(importance.nlargest(10))

# XGBoost 特征重要性
import xgboost as xgb
xgb_clf = xgb.XGBClassifier().fit(X_train, y_train)
xgb.plot_importance(xgb_clf, max_num_features=10)

2. SHAP 值

python 复制代码
import shap

# 计算 SHAP 值
explainer = shap.TreeExplainer(rf)
shap_values = explainer.shap_values(X_test)

# 摘要图
shap.summary_plot(shap_values[1], X_test, feature_names=feature_names)

# 单样本解释
shap.force_plot(explainer.expected_value[1], shap_values[1][0], X_test.iloc[0])

# 依赖图
shap.dependence_plot('feature_name', shap_values[1], X_test)

3. LIME

python 复制代码
from lime.lime_tabular import LimeTabularExplainer

explainer = LimeTabularExplainer(
    X_train.values,
    feature_names=feature_names,
    class_names=['class_0', 'class_1'],
    mode='classification'
)

# 解释单个样本
exp = explainer.explain_instance(
    X_test.iloc[0].values,
    rf.predict_proba,
    num_features=10
)

exp.show_in_notebook()

总结

方法 适用模型 粒度 计算速度
特征重要性 树模型 全局
SHAP 任意模型 全局+局部
LIME 任意模型 局部
相关推荐
玉鸯1 小时前
Agent Harness 工程核心架构拆解与 300 行代码实现
python·agent
Revolution611 小时前
Agent 请求失败后,别再疯狂点击重新生成了
人工智能·claude
小宋10211 小时前
不用学算法也能玩转 AI?普通 Java 程序员转 AI 应用开发路线
java·人工智能·重构
米码收割机1 小时前
【Python】Django 电子设备商城系统(源码+说明文档)[独一无二]
开发语言·python·django
迷茫中的自我1 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
android·人工智能
龍德明宇1 小时前
Emu3的「阳谋」:当AI不再「看」图,它还剩下什么?-龍德明宇
人工智能·大语言模型llm·负主体性·ai存在论
糖果店的幽灵1 小时前
WorkBuddy + 好提示词 = 生产力。43 个场景,复制就能用
人工智能·langgraph
互联网中的一颗神经元1 小时前
小白python入门 - 38. 动态内容:接口优先与自动化扫盲
开发语言·python·自动化
硅谷秋水1 小时前
ABot-M0.5:统一的移动-与-操作世界动作模型
人工智能·深度学习·机器学习·计算机视觉·语言模型·机器人
卷无止境1 小时前
模块与包:Python 代码组织的两层逻辑
后端·python