gpt4 book ai didi

python - 如何告诉 shap 树解释器和 shap 值计算器哪些变量是分类的?

转载 作者:行者123 更新时间:2023-12-05 01:14:58 26 4
gpt4 key购买 nike

我需要更好地理解我的 LightGBM 模型,所以我使用了 SHAP 树解释器。 lightgbm 需要对数据进行编码,我将相同的数据传递给树解释器。所以,我担心 SHAP TreeExplainershap_values()将我的数据视为数字数据。如何指定数据是分类的?这会改变 SHAP 值的计算吗?

我已经完成了 documentation .

最佳答案

shap 无法处理 object 类型的特征。只需确保您的连续变量是 float 类型,您的分类变量是 category 类型。


for cont in continuous_variables:
df[cont] = df[cont].astype('float64')

for cat in categorical_variables:
df[cat] = df[cat].astype('category')

最后,您还需要确保在参数中提供相应的值:

params = {
'objective': "binary",
'num_leaves': 100,
'num_trees': 500,
'learning_rate': 0.1,
'tree_learner': 'data',
'device': 'cpu',
'seed': 132,
'max_depth': -1,
'min_data_in_leaf': 50,
'subsample': 0.9,
'feature_fraction': 1,
'metric': 'binary_logloss',
'categorical_feature': ['categoricalFeature1', 'categoricalFeature2']
}

bst = lgbm.Booster(model_file='model_file.txt')
tree_explainer = shap.TreeExplainer(bst)
tree_explainer.model.original_model.params = params

shap_values_result = tree_explainer.shap_values(df[features], y=df[target])

或者,您可以选择对分类特征应用标签编码。例如,

df['categoricalFeature'] = df['categoricalFeature'].astype('category')
df['categoricalFeature'] = df['categoricalFeature'].cat.codes

请注意,请确保您可以重现此映射,以便您也可以用相同的方式转换验证/测试数据集。

关于python - 如何告诉 shap 树解释器和 shap 值计算器哪些变量是分类的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57285499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com