标签: eli5

关于 LSTM Keras 排列重要性的问题

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())
Run Code Online (Sandbox Code Playgroud)

我运行 LSTM 只是为了查看包含 400 多个特征的数据集的特征重要性。我使用 Keras scikit-learn 包装器来使用 eli5 的 PermutationImportance 函数。但代码正在返回

ValueError: Found array with dim 3. Estimator expected <= 2.
Run Code Online (Sandbox Code Playgroud)

如果我使用,代码运行顺利,model.fit()但无法调试排列重要性的错误。有谁知道出了什么问题?

scikit-learn lstm keras eli5

5
推荐指数
1
解决办法
1283
查看次数

使用 RFECV 和排列重要性的正确方法 - Sklearn

Sklearn 在#15075中有一个实现此功能的提案,但与此同时,eli5建议将其作为解决方案。但是,我不确定我是否以正确的方式使用它。这是我的代码:

from sklearn.datasets import make_friedman1
from sklearn.feature_selection import RFECV
from sklearn.svm import SVR
import eli5
X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)
estimator = SVR(kernel="linear")
perm = eli5.sklearn.PermutationImportance(estimator,  scoring='r2', n_iter=10, random_state=42, cv=3)
selector = RFECV(perm, step=1, min_features_to_select=1, scoring='r2', cv=3)
selector = selector.fit(X, y)
selector.ranking_
Run Code Online (Sandbox Code Playgroud)

有几个问题:

  1. 我不确定我是否以正确的方式使用交叉验证。PermutationImportance用于cv验证验证集的重要性,或者交叉验证应该仅使用RFECV? (在示例中,我cv=3在两种情况下都使用了,但不确定这是否是正确的做法)

  2. 如果我运行eli5.show_weights(perm),我会得到:AttributeError: 'PermutationImportance' object has no attribute 'feature_importances_'。这是因为我适合使用吗RFECV?我正在做的事情与这里的最后一个片段类似: https: //eli5.readthedocs.io/en/latest/blackbox/permutation_importance.html

  3. cv作为一个不太重要的问题,当我设置时,这给了我一个警告eli5.sklearn.PermutationImportance

.../lib/python3.8/site-packages/sklearn/utils/validation.py:68: FutureWarning: Pass …

python feature-selection scikit-learn cross-validation eli5

5
推荐指数
1
解决办法
2859
查看次数