Cuadro de importancia de la característica en la neural network utilizando Keras en Python

Estoy usando spyware python (3.6) anaconda (64 bit) (3.1.2). Ya configuré un modelo de neural network utilizando keras (2.0.6) para un problema de regresión (una respuesta, 10 variables). Me preguntaba cómo puedo generar una tabla de importancia de características como tal:

tabla de importancia de características

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) 

Hace poco estuve buscando la respuesta a esta pregunta y encontré algo que era útil para lo que estaba haciendo y pensé que sería útil compartir. Terminé usando un módulo de importancia de permutación del paquete eli5 . Funciona más fácilmente con un modelo scikit-learn. Afortunadamente, Keras proporciona una envoltura para modelos secuenciales . Como se muestra en el siguiente código, su uso es muy sencillo.

 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()) 

En este momento, Keras no proporciona ninguna funcionalidad para extraer la importancia de la característica.

Puede consultar esta pregunta anterior: Keras: ¿Alguna forma de obtener importancia variable?

o el grupo de Google relacionado: importancia de la característica

Spoiler: En GoogleGroup alguien anunció un proyecto de código abierto para resolver este problema …