Al mostrar la gráfica de resumen, la barra de color no se muestra.
shap.summary_plot(shap_values, X_train)
He intentado cambiar plot_size. Cuando el gráfico es más alto, aparece la barra de color, pero es muy pequeña, no parece que debería.
shap.summary_plot(shap_values, X_train, plot_size=0.7)
Aquí hay un ejemplo de una barra de color de aspecto adecuado.
Alguien sabe si esto se puede arreglar de alguna manera?
Cómo reproducir:
import pandas as pd import shap import sklearn from sklearn.ensemble import RandomForestRegressor # a classic housing price dataset X,y = shap.datasets.boston() # a simple linear model model = RandomForestRegressor(max_depth=6, random_state=0, n_estimators=10) model.fit(X, y) shap_values = shap.TreeExplainer(model).shap_values(X) shap.summary_plot(shap_values, X)
En este caso, se muestra la barra de color, pero es muy pequeña. He elegido un ejemplo de este tipo para facilitar la recuperación de los datos.
Tuve el mismo problema que tú y descubrí que la solución era degradar matplotlib a 3.4.3. Parece que SHAP aún no está optimizado para matplotlib 3.5.1.
Como se mencionó anteriormente, parece que el manejo de la barra de colores o la relación de aspecto de la caja se ha cambiado en matplotlib.pyplot versión 3.5. Sin embargo, puedes corregir eso.
shap.summary_plot(..., show=False)
para permitir alterar la tramaplt.gcf().axes[-1].set_aspect(1000)
plt.gcf().axes[-1].set_box_aspect(1000)
Esto le devuelve el resultado anterior. Si desea que la barra de colores sea más gruesa, establezca el aspecto en 100.
Tuve un problema similar y estaba usando max_display=10. El siguiente código resolvió mi problema:
plt.gcf().axes[-1].set_aspect(100) plt.gcf().axes[-1].set_box_aspect(100)