GoogleColabで、SHAPを実行しています。
TreeExplainer、モデルはxgbです。
force plotは、回帰と二値分類の場合、以下で描画。
Python
1shap.initjs() 2shap.force_plot(explainer.expected_value, shap_values, X_selected) 3
マルチ分類の場合、以下で描画。
Python
1shap.initjs() 2shap.force_plot(explainer.expected_value[1], shap_values[1], X_selected) 3
データセットのタイプ毎にコード操作は面倒なので、
マルチ分類データですよ等と事前に認識させて、
Python
1shap.initjs() 2if dataset == ‘multi’: 3 shap.force_plot(explainer.expected_value[1], shap_values[1], X_selected) 4else: 5 shap.force_plot(explainer.expected_value, shap_values, X_selected) 6
として実行しても表示されません。
すこし強引ですが、以下を実行しても表示されませんでした。
Python
1 2shap.initjs() 3try: 4 shap.force_plot(explainer.expected_value[1], shap_values[1], X_selected) 5except: 6 pass 7 8try: 9 shap.force_plot(explainer.expected_value, shap_values, X_selected) 10except: 11 pass 12
何かうまい方法をご存知の方がおられましたら、ご教示お願いできませんでしょうか?
※以下が現在の実行コードです。以下の実行コードに上記の変更を加えてもうまくいかなかったということになります。
Python
1 2#@title **Classification**(分類)or **Regression**(回帰) 3#回帰か分類かによってXGB.XGBClassifierを実行するか、XGB.XGBRegressorを実行するかを変えるため、ココで区分。 4 5#@title **Classification**(分類)or **Regression**(回帰) 6dataset_type = 'Classification' #@param ["Classification", "Regression"] 7 8 9#@title **Load Dataset** 10if dataset =='Upload': 11 from google.colab import files 12 uploaded = files.upload()#Upload 13 target = list(uploaded.keys())[0] 14 df = pd.read_csv(target) 15 16FEATURES = df.columns[:-1] 17TARGET = df.columns[-1] 18X = df.loc[:, FEATURES] 19y = df.loc[:, TARGET] 20 21 22#@title **SHAP summary plot** 23 24import xgboost as XGB 25import shap 26 27#XGB 28if dataset_type == 'Regression': 29 xgb = XGB.XGBRegressor(random_state=0) 30else: 31 xgb = XGB.XGBClassifier(random_state=0) 32 33xgb.fit(X, y) 34 35#SHAP 36explainer = shap.TreeExplainer(xgb) 37shap_values = explainer.shap_values(X) 38 39 40#@title **SHAP summary plot** 41shap.summary_plot(shap_values,X) 42 43 44#@title **SHAP force plot** 45shap.initjs() 46shap.force_plot(explainer.expected_value, shap_values, X) 47
回答1件
あなたの回答
tips
プレビュー