shap 실습
설치
!pip install shap
준비
전처리된 데이터를 불러온다.
import joblib
data = joblib.load('tmi.pkl')
locals().update(data)
학습된 모형을 불러온다.
import tensorflow as tf
model = tf.keras.models.load_model('simple-text-model.krs')
설명
import shap
e = shap.DeepExplainer(model, x_train.toarray())
테스트 데이터의 5번에 대해 설명을 생성하기로 한다.
idx = 5
review_test.iloc[idx]
'This is an excellent film.'
테스트 데이터의 단어 문서 행렬에서 5번 행을 추출한다.
features = x_test[[idx]].toarray()
추출된 데이터로 SHAP 가치를 계산한다.
values = e.shap_values(features)
계산된 가치를 표로 만들어, 큰 순서로 정렬해본다.
import pandas as pd
vdf = pd.DataFrame({'word': cv.get_feature_names(),
'value': values[0].flat})
vdf.sort_values('value', ascending=False).head()
word | value | |
---|---|---|
268 | film | 0.029624 |
240 | excellent | 0.019064 |
55 | bad | 0.002164 |
575 | plot | 0.001517 |
831 | time | 0.001084 |
가치를 예쁘게 그려본다.
shap.initjs()
shap.force_plot(e.expected_value.numpy(), values[0], features=features, feature_names=cv.get_feature_names())