,即将示例中的变量置于变量或使用
eli5 packagefrom keras.wrappers.scikit_learn import KerasClassifier, KerasRegressor
import eli5
from eli5.sklearn import PermutationImportance
def base_model():
model = Sequential()
...
return model
X = ...
y = ...
my_model = KerasRegressor(build_fn=basemodel, **sk_params)
my_model.fit(X,y)
perm = PermutationImportance(my_model, random_state=1).fit(X,y)
eli5.show_weights(perm, feature_names = X.columns.tolist())
由于一切都会沿网络混合在一起,仅第一层就无法告诉您每个变量的重要性。以下层也可以增加或降低其重要性,甚至使一个变量影响另一个变量的重要性。第一层中的每个神经元本身也都会给出每个变量的重要性,因此并不是那么简单。 i建议您使用包含零阵列的输入,仅使您要研究的变量在输入中为1。 ,您可以单独看到每个变量的结果。即使这仍然不会帮助您解决一个变量增加另一个变量的重要性的情况。
这不是那么简单。例如,在后期阶段可以将变量降低到0。 我会看一下在github上看到
marcotcr/lime。
这是一个相对较旧的文章,具有相对较旧的答案,因此我想提出另一个建议,以确定对您的Keras模型的特征重要性。model.predict(inputs)