and*_*dre 24 python neural-network keras
我正在使用python(3.6)anaconda(64位)spyder(3.1.2).我已经使用keras(2.0.6)设置了一个神经网络模型用于回归问题(一个响应,10个变量).我想知道如何生成这样的特征重要性图表:

def base_model():
model = Sequential()
model.add(Dense(200, input_dim=10, kernel_initializer='normal', activation='relu'))
model.add(Dense(1, kernel_initializer='normal'))
model.compile(loss='mean_squared_error', optimizer = 'adam')
return model
clf = KerasRegressor(build_fn=base_model, epochs=100, batch_size=5,verbose=0)
clf.fit(X_train,Y_train)
Run Code Online (Sandbox Code Playgroud)
Jus*_*las 19
我最近在寻找这个问题的答案,并找到了一些对我正在做的事情有用的东西,并认为分享会很有帮助.我最终使用了eli5包中的置换重要性模块.它最容易使用scikit-learn模型.幸运的是,Keras 为顺序模型提供了一个包装器.如下面的代码所示,使用它非常简单.
from 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=base_model, **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())
Run Code Online (Sandbox Code Playgroud)
jar*_*yeo 10
这是一篇相对较旧的帖子,答案相对较旧,因此我想提供另一个建议,SHAP用于确定 Keras 模型的特征重要性。SHAP提供对 2d 和 3d 数组的eli5支持,而目前仅支持 2d 数组(因此,如果您的模型使用需要 3d 输入的图层,例如LSTM或GRU,eli5将不起作用)。
这是如何绘制模型的特征重要性示例的链接,但如果它被破坏,下面还提供了一些示例代码和图(取自上述链接):SHAPKeras
import shap
# load your data here, e.g. X and y
# create and fit your model here
# load JS visualization code to notebook
shap.initjs()
# explain the model's predictions using SHAP
# (same syntax works for LightGBM, CatBoost, scikit-learn and spark models)
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)
shap.force_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:])
shap.summary_plot(shap_values, X, plot_type="bar")
Run Code Online (Sandbox Code Playgroud)
目前,Keras没有提供任何功能来提取功能重要性.
你可以查看上一个问题: Keras:有什么方法可以获得变量的重要性吗?
或相关的GoogleGroup:功能重要性
Spoiler:在GoogleGroup中有人宣布了一个解决这个问题的开源项目.
| 归档时间: |
|
| 查看次数: |
17398 次 |
| 最近记录: |