【Python】探索 SHAP 特征贡献度:解释机器学习模型的利器
import shap
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from matplotlib import pyplot as plt
# 生成示例数据
X = np.random.rand(100, 10)
y = np.random.randint(2, size=100)
# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
# 初始化模型
model = RandomForestClassifier()
# 训练模型
model.fit(X_train, y_train)
# 使用SHAP值进行特征重要性评估
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
# 计算特征的平均贡献度
feature_contributions = np.abs(shap_values).mean(0)
# 可视化特征贡献度
plt.bar(range(len(feature_contributions)), feature_contributions)
plt.xlabel("Feature index")
plt.ylabel("Average SHAP value contribution")
plt.show()
这段代码展示了如何使用SHAP库来评估机器学习模型中每个特征的贡献度,并使用matplotlib进行可视化。首先,我们生成了一些随机的数据,并用train_test_split
划分数据集。然后,我们初始化了一个模型并用训练集数据进行训练。接下来,我们使用shap.TreeExplainer
来创建一个Explainer对象,并计算测试集上每个样本的SHAP值。最后,我们通过计算SHAP值的平均绝对值来评估每个特征的贡献度,并用matplotlib绘制了贡献度的条形图。
评论已关闭