我正在使用Catboost,并希望可视化shap_values:
from catboost import CatBoostClassifier
model = CatBoostClassifier(iterations=300)
model.fit(X, y,cat_features=cat_features)
pool1 = Pool(data=X, label=y, cat_features=cat_features)
shap_values = model.get_feature_importance(data=pool1, fstr_type='ShapValues', verbose=10000)
shap_values.shape
Output: (32769, 10)
X.shape
Output: (32769, 9)
然后我执行以下操作,并引发异常:
shap.initjs()
shap.force_plot(shap_values[0,:-1], X.iloc[0,:])
例外:在v0.20中,force_plot现在需要将基本值作为第一个参数!尝试shap.force_plot(explainer.expected_value,shap_values),或者对于多输出模型,请尝试shap.force_plot(explainer.expected_value [0],shap_values [0])。
以下作品,但我想使force_plot()起作用:
shap.initjs()
shap.summary_plot(shap_values[:,:-1], X)
我阅读了文档,但无法解释。我尝试过:
explainer = shap.TreeExplainer(model,data=pool1)
#Also tried:
explainer = shap.TreeExplainer(model,data=X)
但是我得到:TypeError:输入类型不支持ufunc'isnan',并且根据转换规则“安全”无法将输入安全地强制转换为任何受支持的类型]]
有人能指出我正确的方向吗? THX
我正在使用Catboost,并希望可视化shap_values:从catboost中导入CatBoostClassifier模型= CatBoostClassifier(iterations = 300)model.fit(X,y,cat_features = cat_features)pool1 = Pool(...