如何解决Shapley 值:解释 LSTM 预测的维度问题
我构建了一个 LSTM 来将时间序列的每个时间步分为三类之一。我的输入数据是维度(样本,时间步长 = 100,特征 = 62)。这工作得很好。
我想为此设置添加可解释性,并已转向 Shapley 值。但是尝试执行时出现错误:
explainer = shap.KernelExplainer(model = model.predict,data = XTrainS,link = "identity")
X_idx = 0
shap_value_single = explainer.shap_values(X = XTrainS[X_idx],nsamples = 100)
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-113-1e443b4fff21> in <module>
2 X_idx = 0
3
----> 4 shap_value_single = explainer.shap_values(X = XTrainS[X_idx],nsamples = 100)
~/miniconda3/lib/python3.8/site-packages/shap/explainers/_kernel.py in shap_values(self,X,**kwargs)
181 if self.keep_index:
182 data = convert_to_instance_with_index(data,column_name,index_value[i:i + 1],index_name)
--> 183 explanations.append(self.explain(data,**kwargs))
184
185 # vector-output
~/miniconda3/lib/python3.8/site-packages/shap/explainers/_kernel.py in explain(self,incoming_instance,**kwargs)
202 # convert incoming input to a standardized iml object
203 instance = convert_to_instance(incoming_instance)
--> 204 match_instance_to_data(instance,self.data)
205
206 # find the feature groups we will test. If a feature does not change from its
~/miniconda3/lib/python3.8/site-packages/shap/utils/_legacy.py in match_instance_to_data(instance,data)
85 if isinstance(data,DenseData):
86 if instance.group_display_values is None:
---> 87 instance.group_display_values = [instance.x[0,group[0]] if len(group) == 1 else "" for group in data.groups]
88 assert len(instance.group_display_values) == len(data.groups)
89 instance.groups = data.groups
~/miniconda3/lib/python3.8/site-packages/shap/utils/_legacy.py in <listcomp>(.0)
85 if isinstance(data,group[0]] if len(group) == 1 else "" for group in data.groups]
88 assert len(instance.group_display_values) == len(data.groups)
89 instance.groups = data.groups
IndexError: index 62 is out of bounds for axis 1 with size 62
模型摘要:
Model: "sequential_10"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_20 (LSTM) (None,100,500) 1044000
_________________________________________________________________
dropout_23 (Dropout) (None,500) 0
_________________________________________________________________
lstm_21 (LSTM) (None,250) 751000
_________________________________________________________________
dropout_24 (Dropout) (None,250) 0
_________________________________________________________________
dense_10 (Dense) (None,3) 753
=================================================================
Total params: 1,795,753
Trainable params: 1,753
Non-trainable params: 0
我真的很感激任何帮助或指导!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。