赞
踩
shap.TreeExplainer(model)运行报错:
‘utf-8’ codec can’t decode byte 0xff in position 341: invalid start byte
shap可以用于xgboost的模型可视化解释,很好用。
报错原因:xgb版本问题,1.1.0及以上会出现,老版本不会。
重装xgboost至1.0.0版本
查看问题:
1 首先,xgb建模中有
model = xgb.train(params, dtrain,......)
2 将模型保存输出(xgb的1.1.0及以上版本),会发现:
model.save_raw()
# 1.1.0及以上输出结果为:
bytearray(b'binf\x00\x00\x00?\x0e\x00...
在xgb的1.0.0,输出为
model.save_raw()
# 输出结果为:
bytearray(b'\x00\x00\x00?\x0e\x00...
结果是编码开头少四个字符binf
解决方法:
3 修改模型
在建模之后,在shap.TreeExplainer(model)之前,添加代码:
# 对model的编码,删除binf
model_modify = model.save_raw()[4:]
def myfun(self=None):
return model_modify
model.save_raw = myfun
其他不用动,shap可以正常使用了
参考:
https://github.com/slundberg/shap/issues/1215
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。