我的模型使用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)