小编Fre*_*ang的帖子

SHAP 不适用于 LightGBM 分类特征

我的模型使用LGBMClassifier. 我想用 Shap (Shapley) 来解释特征。然而,Shap 在分类特征上给了我错误。例如,我有一个功能“吸烟者”,其值包括“是”和“否”。我从 Shap 收到错误:

ValueError: could not convert string to float: 'Yes'.
Run Code Online (Sandbox Code Playgroud)

我是否缺少任何设置?

顺便说一句,我知道我可以使用 one-hot 编码来转换分类特征,但我不想这样做,因为LGBMClassifier可以在没有 one-hot 编码的情况下处理分类特征。

示例代码如下:(shap版本为0.40.0,lightgbm版本为3.3.2)

import pandas as pd
from lightgbm import LGBMClassifier #My version is 3.3.2
import shap #My version is 0.40.0

#The training data
X_train = pd.DataFrame()
X_train["Age"] = [50, 20, 60, 30]
X_train["Smoker"] = ["Yes", "No", "No", "Yes"]

#Target: whether the person had a certain disease
y_train = [1, 0, 0, 0]
#I did convert …
Run Code Online (Sandbox Code Playgroud)

python lightgbm shap

6
推荐指数
1
解决办法
3313
查看次数

标签 统计

lightgbm ×1

python ×1

shap ×1