gpt4 book ai didi

keras - 有关LSTM Keras上置换重要性的问题

转载 作者:行者123 更新时间:2023-12-03 16:11:37 26 4
gpt4 key购买 nike

from keras.wrappers.scikit_learn import KerasClassifier, KerasRegressor   
import eli5
from eli5.sklearn import PermutationImportance

model = Sequential()
model.add(LSTM(units=30,return_sequences= True, input_shape=(X.shape[1],421)))
model.add(Dropout(rate=0.2))
model.add(LSTM(units=30, return_sequences=True))
model.add(LSTM(units=30))
model.add(Dense(units=1, activation='relu'))

perm = PermutationImportance(model, scoring='accuracy',random_state=1).fit(X, y, epochs=500, batch_size=8)
eli5.show_weights(perm, feature_names = X.columns.tolist())
我运行LSTM只是为了查看包含400多个要素的数据集的要素重要性。我使用Keras scikit-learn包装器来使用eli5的PermutationImportance函数。但是代码正在返回
ValueError: Found array with dim 3. Estimator expected <= 2.
如果我使用 model.fit(),则代码可以平稳运行,但无法调试排列重要性的错误。有人知道怎么了吗?

最佳答案

eli5scikitlearn实现(用于确定置换重要性)只能处理2d数组,而keras'LSTM图层则需要3d数组。该错误是known issue,但似乎尚无解决方案。

我知道这并不能真正回答您让eli5与LSTM配合使用的问题(因为目前无法使用),但是我遇到了相同的问题,并使用了另一个名为 SHAP 的库来获取我的LSTM模型的功能重要性。这是我的一些代码,可帮助您入门:

import shap
DE = shap.DeepExplainer(model, X_train) # X_train is 3d numpy.ndarray
shap_values = DE.shap_values(X_validate_np, check_additivity=False) # X_validate is 3d numpy.ndarray

shap.initjs()
shap.summary_plot(
shap_values[0],
X_validate,
feature_names=list_of_your_columns_here,
max_display=50,
plot_type='bar')


这是您可以得到的图形示例:

enter image description here

希望这可以帮助。

关于keras - 有关LSTM Keras上置换重要性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60690151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com