Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Eli5库解释LSTM keras_Keras - Fatal编程技术网

用Eli5库解释LSTM keras

用Eli5库解释LSTM keras,keras,Keras,我试图用Eli5来解释时间序列预测的LSTM keras模型。keras模型接收一个具有形状的数组作为输入(nsample、timesteps、nfeatures) 这是我的代码: def baseline_model(): model = Sequential() model.add(LSTM(32, input_shape=(X_train.shape[1], X_train.shape[2]))) model.add(Dropout(0.2)) model.

我试图用Eli5来解释时间序列预测的LSTM keras模型。keras模型接收一个具有形状的数组作为输入(nsample、timesteps、nfeatures)

这是我的代码:

def baseline_model():
    model = Sequential()
    model.add(LSTM(32, input_shape=(X_train.shape[1], X_train.shape[2])))
    model.add(Dropout(0.2))
    model.add(Dense(1))
    model.compile(loss='logcosh', optimizer='adam')
return model

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

my_model = KerasRegressor(build_fn= baseline_model, nb_epoch= 30,   batch_size= 32, verbose= False)

history = my_model.fit(X_train, y_train)
到目前为止,一切正常。问题是当我执行以下引发错误的行时:

# X_train has a shape equal to (nsamples, timesteps, nfeatures) and y_train has a shape (nsamples)

perm = PermutationImportance(my_model, random_state=1).fit(X_train, y_train)
错误:

ValueError Traceback (most recent call last)
    in ()
    2 d2_train_dataset = X_train.reshape((nsamples, timesteps * features))
    3
    ----> 4 perm = PermutationImportance(my_model, random_state=1).fit(X_train, y_train)
    5 #eli5.show_weights(perm, feature_names = X.columns.tolist())

    ~/anaconda3/lib/python3.6/site-packages/eli5/sklearn/permutation_importance.py in fit(self, X, y, groups, **fit_params)
    183 self.estimator_.fit(X, y, **fit_params)
    184
    --> 185 X = check_array(X)
    186
    187 if self.cv not in (None, "prefit"):

    ~/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    568 if not allow_nd and array.ndim >= 3:
    569 raise ValueError("Found array with dim %d. %s expected <= 2."
    --> 570 % (array.ndim, estimator_name))
    571 if force_all_finite:
    572 _assert_all_finite(array,

    ValueError: Found array with dim 3. Estimator expected <= 2.
ValueError回溯(最近一次调用)
在()
2 d2\u序列\u数据集=X\u序列。重塑((nsamples,timesteps*特征))
3.
---->4排列=排列重要性(my_模型,随机状态=1)。拟合(X_序列,y_序列)
5#eli5.显示权重(perm,feature_names=X.columns.tolist())
~/anaconda3/lib/python3.6/site-packages/eli5/sklearn/permutation\u importance.py in fit(self、X、y、groups、**fit\u参数)
183自估计拟合(X,y,**拟合参数)
184
-->185 X=检查_阵列(X)
186
187如果self.cv不在(无,“前缀”):
检查数组中的~/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py(数组、接受稀疏、接受大稀疏、数据类型、顺序、复制、强制所有有限、确保2d、允许nd、确保最小样本、确保最小特征、警告数据类型、估算器)
568如果不允许\u nd和array.ndim>=3:
569 raise VALUERROR(“找到的数组应为dim%d.%s