Xx = filtered_data_1
Yy = filtered_data['违约']
x1_train, x1_test, y_train, y_test = train_test_split(Xx, Yy, test_size=0.3)
xgb_model = XGBRegressor(n_estimators=1000, max_depth=10, learning_rate=0.001, random_state=0)
xgb_model.fit(x1_train, y_train)
y_predict = xgb_model.predict(x1_test)
mean_squared_error(y_test, y_predict)**(0.5)
explainer = shap.TreeExplainer(xgb_model)
print (explainer.expected_value)
shap_values = explainer.shap_values(x1_train)
shap.force_plot(explainer.expected_value, shap_values[1],matplotlib = True,feature_names=filtered_data_1.columns)
shap.summary_plot(shap_values,x1_train,feature_names=filtered_data_1.columns)
#filtered_data_1.columns是特征的名称,文件是直接读取excel的,所以是中文,不知道该怎么调节,因此打印出的图片就是以下这样:
看了网上一些无法显示中文的处理方式,大多是针对matplotlib报错的,好像并不适用我这个情况。
另外网上大多数使用shap值的特征都是英文,没有中文的,所以如果实在搞不定,那我就重新把特征用英文翻译一遍吧呜呜呜
想在图片中显示出特征的中文
编码问题的解决思路就是转码,你试试文件导入时统一转码,或者导入前将文件另存为utf-8编码试试。
您好,我也遇到了同样的问题,能不能告诉我一下您是怎么解决的?