Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
2022-01-02 07:46:23
機械学習モデルの説明は、そのブラックボックスの中でモデルがどのように動作しているのかが分からないため、難しい作業である。最適なモデルを選びつつ、ロバストなモデルを作るためには、説明が必要なのです。
さっそくですが...。
必要なライブラリのインストール
pipを使ってShapをインストールしてからスタートします。以下に示すコマンドで実行できます。
pip install shap
必要なライブラリのインポート
このステップでは、データの読み込み、モデルの作成、そのモデルのビジュアライゼーションの作成に必要なライブラリをインポートします。
df = pd.read_csv('/content/Diabetes.csv')
features = ['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'DiabetesPedigreeFunction', 'Age']
Y = df['Outcome']
X = df[features]
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 1234)
xgb_model = xgb.XGBRegressor(random_state=42)
xgb_model.fit(X_train, Y_train)
モデルを作成する
このステップでは、機械学習モデルを作成します。今回はXGBoostのモデルを作成しますが、どのようなモデルでもかまいません。このモデルに使用するデータセットは、Kaggleからダウンロードできる、よく知られた糖尿病データセットです。
df = pd.read_csv('/content/Diabetes.csv')
features = ['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'DiabetesPedigreeFunction', 'Age']
Y = df['Outcome']
X = df[features]
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 1234)
xgb_model = xgb.XGBRegressor(random_state=42)
xgb_model.fit(X_train, Y_train)
ビジュアライゼーションの作成
ここで、shapのインタプリタを作成し、モデルのshape値を求め、それを使ってビジュアライゼーションを作成する。
explainer = shap.Explainer(xgb_model)
shap_values = explainer(X_test)
1. バープロット
shap.plots.bar(shap_values, max_display=10)
2. キュー図
shap.plots.bar(shap_values.cohorts(2).abs.mean(0))
3. ヒートマップ
shap.plots.heatmap(shap_values[1:100])
4. ウォーターフォール図
shap.plots.waterfall(shap_values[0]) # For the first observation
5. フォースマップ
shap.initjs()
explainer = shap.TreeExplainer(xgb_model)
shap_values = explainer.shap_values(X_test)
def p(j):
return(shap.force_plot(explainer.expected_value, shap_values[j,:], X_test.iloc[j,:]))
p(0)
6. 決定図
shap_values = explainer.shap_values(X_test)[1]
print("The expected value is ", expected_value)
print("The final prediction is ", xgb_model.predict(X_test)[1])
shap.decision_plot(expected_value, shap_values, X_test)
このように、Shapを使って機械学習モデルに関連するビジュアライゼーションを作成し、分析することができるのです。
以上、機械学習モデルの出力を可視化するためのPythonインタープリタ型モデルライブラリShapの詳細について説明しました。モデル出力を可視化するためのPythonインタープリタ型モデルライブラリShapの詳細については、スクリプトハウスの他の関連記事もご参照ください!
関連
-
POSTの引数'_xsrf'が見つからない場合の対処法
-
[解決済み] バイトをstrに連結できない
-
[解決済み] matplotlib.pyplot.imshow での 'extent' の使用方法
-
[解決済み] Pylintのエラーは隠します。
-
[解決済み] ModuleNotFoundError: python 3.9 には 'scipy' という名前のモジュールはありません。
-
[解決済み] Python TypeError: サポートされていないオペランドタイプ(s) for ^: 'float' および 'int'
-
pipがpytestをインストールすると、通常のsite-packagesが書き込み可能ではないため、Defaulting to user installationというエラーが報告されます。
-
TypeError: 'numpy.ndarray' オブジェクトは呼び出し可能ではありません。
-
TypeError: 'numpy.float64' オブジェクトはアイテムの割り当てをサポートしていません。
-
100万語のテキストから100ミリ秒のフィルタリングで無効化された単語を検出
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
TypeError: flexible type solutionでreduceを実行できない。
-
Pythonエラー TypeError: データ型が理解されていない
-
Pythonデータ分析における欠損値の扱い方8つの方法を解説
-
[解決済み] Tensorflowの平均二乗誤差損失関数
-
[解決済み] リストインデックスが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonパッケージがインストールできない [SSL: TLSV1_ALERT_PROTOCOL_VERSION] 。
-
[解決済み] Python Quicksort Runtime Error: cmp で最大再帰深度を超えました。
-
[解決済み] 不規則なリストの中で最も長いリストの長さを求める
-
[解決済み] scrapyとpythonを使ったtsetmc.comのウェブページからのウェブスクレイピング
-
Python OSError: [Errno 22] 無効な引数です。発生と解決