如何解决如何获取每个特征的SHAP值?
我目前正在使用 SHAP 库,我已经用每个特征的平均贡献生成了我的图表,但是我想知道图表上绘制的确切值
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
import shap
boston = load_boston()
regr = pd.DataFrame(boston.data)
regr.columns = boston.feature_names
regr['MEDV'] = boston.target
X = regr.drop('MEDV',axis = 1)
Y = regr['MEDV']
fit = LinearRegression().fit(X,Y)
explainer = shap.LinearExplainer(fit,X,feature_dependence = 'independent')
# I used 'independent' because the result is consistent with the ordinary
# shapely values where `correlated' is not
shap_values = explainer.shap_values(X)
shap.summary_plot(shap_values,plot_type = 'bar')
如何获得图表中描绘的确切值?
解决方法
pd.DataFrame((zip(X.columns[np.argsort(np.abs(shap_values).mean(0))],np.abs(shap_values).mean(0))),columns=["feature","importance" ]).sort_values(by="importance",ascending=False)
参考GitHub
,试试:
features = X.columns
mask = np.abs(shap_values).mean(0).argsort()[::-1]
features[mask]
Index(['LSTAT','DIS','RAD','RM','TAX','PTRATIO','NOX','ZN','CRIM','B','CHAS','INDUS','AGE'],dtype='object')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。