【发布时间】:2022-11-10 12:04:23
【问题描述】:
我一直致力于使用 SHAP 解释一个简单的神经网络。而且由于我在CS方面的经验还很初级,所以我想请教一些建议。
长话短说,我运行了代码,出现了错误消息,说
“numpy.ndarray”对象没有属性“base_values”
代码相当简单;这是一个非常简单的回归神经网络。下面是NN代码+ SHAP
import numpy as np
import shap.plots
import tensorflow as tf
import pandas as pd
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, BatchNormalization
np.random.seed(5)
tf.random.set_seed(11)
shap.initjs()
cbc = pd.read_excel('data location')
target_vars = ['variables']
X = pd.DataFrame()
for i in target_vars:
X[i]=cbc[i]
y = cbc['dependent variable, which is a dummy']
X_tn, X_te, y_tn, y_te = train_test_split(X, y, test_size=0.3, stratify=y, shuffle=True)
n_feat = X_tn.shape[1]
epo = 10
model = Sequential()
model.add(BatchNormalization())
model.add(Dense(6, input_dim=n_feat, activation='tanh'))
model.add(Dense(6, input_dim=n_feat, activation='tanh'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss = 'mean_squared_error',
optimizer = 'adam',
metrics = ['accuracy'])
hist = model.fit(X_tn, y_tn, validation_data=(X_te, y_te), epochs=epo)
predictions = model.predict(X_te)
predicted_class = np.argmax(predictions, axis=1)
explainer = shap.KernelExplainer(model,X_tn,link='logit')
shap_values=explainer.shap_values(X_te,nsamples=100)
shap.plots.waterfall(shap_values[0])
为什么我会收到错误消息?另外,如果有的话,我很乐意听到一些关于代码的建议。
先感谢您!
【问题讨论】:
标签: neural-network tensorflow2.0 shap