形状统计
Shap statistics
我使用 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, X, plot_type = 'bar')
shap
提供图表以获取形状值。是否也有可用的统计数据?我对确切的形状值感兴趣。我阅读了 Github 存储库和文档,但没有找到任何关于此主题的内容。
当我们查看 shap_values
时,我们看到它包含一些正数和负数,并且它的维度等于 boston
数据集的维度。线性回归是一种 ML 算法,计算最优 y = wx + b
,其中 y
是 MEDV,x
是特征向量,w
是权重向量。在我看来,shap_values
存储 wx
- 一个矩阵,其中每个特征的值乘以线性回归计算的权重向量。
因此,为了计算所需的统计数据,我首先提取绝对值,然后对它们进行平均。顺序很重要!接下来,我使用初始列名称并从最大影响到最小影响进行排序。有了这个,我希望我已经回答了你的问题!:)
from matplotlib import pyplot as plt
#rataining only the size of effect
shap_values_abs = np.absolute(shap_values)
#dividing to get good numbers
means_norm = shap_values_abs.mean(axis = 0)/1e-15
#sorting values and names
idx = np.argsort(means_norm)
means = np.array(means_norm)[idx]
names = np.array(boston.feature_names)[idx]
#plotting
plt.figure(figsize=(10,10))
plt.barh(names, means)
我使用 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, X, plot_type = 'bar')
shap
提供图表以获取形状值。是否也有可用的统计数据?我对确切的形状值感兴趣。我阅读了 Github 存储库和文档,但没有找到任何关于此主题的内容。
当我们查看 shap_values
时,我们看到它包含一些正数和负数,并且它的维度等于 boston
数据集的维度。线性回归是一种 ML 算法,计算最优 y = wx + b
,其中 y
是 MEDV,x
是特征向量,w
是权重向量。在我看来,shap_values
存储 wx
- 一个矩阵,其中每个特征的值乘以线性回归计算的权重向量。
因此,为了计算所需的统计数据,我首先提取绝对值,然后对它们进行平均。顺序很重要!接下来,我使用初始列名称并从最大影响到最小影响进行排序。有了这个,我希望我已经回答了你的问题!:)
from matplotlib import pyplot as plt
#rataining only the size of effect
shap_values_abs = np.absolute(shap_values)
#dividing to get good numbers
means_norm = shap_values_abs.mean(axis = 0)/1e-15
#sorting values and names
idx = np.argsort(means_norm)
means = np.array(means_norm)[idx]
names = np.array(boston.feature_names)[idx]
#plotting
plt.figure(figsize=(10,10))
plt.barh(names, means)