0

データセットを使用して LSTM ベースのモデルを実行しています。標準化メソッドを使用して、次のようにデータを間隔 (0, 1) に配置しました。

scaler = MinMaxScaler(feature_range=(0, 1))
scaler = scaler.fit(df_train)

df_train = scaler.transform(df_train)
df_test = scaler.transform(df_test)

標準化の直後に、データを再形成して以下を取得します。

x_train (3125, 50, 5)
y_train (3125, 1)
x_test (1000, 50, 5)
y_test (1000, 1)

モデルは機能し、予測が得られますがinverse_transform、データが必要な場合、次のエラーが発生します。

yhat = model.predict(x_test)
yhat = scaler.inverse_transform(yhat)

ValueError: 形状 (1000,1) のブロードキャスト不可能な出力オペランドがブロードキャスト形状 (1000,5) と一致しません

そこで、変数に対応する名前を変更して、このサンプル コードを試しました。

yhat = model.predict(test_X)
test_X = test_X.reshape((test_X.shape[0], test_X.shape[2]))

# invert scaling for forecast
inv_yhat = concatenate((yhat, test_X[:, 1:]), axis=1)
inv_yhat = scaler.inverse_transform(inv_yhat)
inv_yhat = inv_yhat[:,0]

# invert scaling for actual
test_y = test_y.reshape((len(test_y), 1))
inv_y = concatenate((test_y, test_X[:, 1:]), axis=1)
inv_y = scaler.inverse_transform(inv_y)
inv_y = inv_y[:,0]

# calculate RMSE
rmse = sqrt(mean_squared_error(inv_y, inv_yhat))
print('Test RMSE: %.3f' % rmse)

しかし、2行目でこのエラーが発生します:

ValueError: サイズ 250000 の配列を形状 (1000,5) に変更できません

4

0 に答える 0