scaler.inverse_transform () выдает ошибку при принятии прогнозов LSTM NN в реальные значения данных - PullRequest
1 голос
/ 20 апреля 2020

Я преобразовал свои данные между 0 и 1 и передал их через LSTM NN. Результаты также остаются в диапазоне от 0 до 1, и для получения правильного результата мне нужно преобразовать его обратно, как это было с моими исходными значениями данных.

Но

scaler=MinMaxScaler(feature_range=(0,1))
scaler.inverse_transform(result)

выдает ошибку. Мой код, как показано ниже. Здесь я загрузил сохраненные данные, целевые и обученные веса LSTM.

import numpy as np

data=np.load('data_2.npy')
target=np.load('target_2.npy')
train_data=data[:120]
train_target=target[:120]

test_data=data[120:]
test_target=target[120:]

from keras.models import Sequential
from keras.layers import LSTM,Dense,Dropout

model=Sequential()

model.add(LSTM(units=172,return_sequences=True,input_shape=(data.shape[1:])))
model.add(Dropout(0.2))

model.add(LSTM(units=940,return_sequences=True))
model.add(Dropout(0.2))

model.add(LSTM(units=2510,return_sequences=True))
model.add(Dropout(0.2))

model.add(LSTM(units=50,return_sequences=False))
model.add(Dropout(0.2))

model.add(Dense(units=1,activation='linear'))

model.compile(loss='mse',optimizer='adam',metrics=['accuracy'])
model.load_weights('AirlineLSTMweights.h5')

result=model.predict(test_data)
print(result)


scaler=MinMaxScaler(feature_range=(0,1))
scaler.inverse_transform(result)

NotFicedError: Этот экземпляр MinMaxScaler еще не установлен. Перед использованием этого метода вызовите 'fit' с соответствующими аргументами.

Кто-нибудь может мне помочь, пожалуйста?

my print(results) = [[0.6232013 ]
 [0.67273337]
 [0.7892405 ]

1 Ответ

0 голосов
/ 21 апреля 2020

Это только то, что говорит ошибка. при использовании модулей scikit-learn они обычно имеют методы fit (), transform () или, в случае классификаторов, также методы expt (). после создания экземпляра класса, такого как MinMaxScaler () в вашем случае, вам нужно подогнать его под некоторые данные, просто вызовите его метод подгонки и передайте обучающие примеры в качестве аргумента. в своем коде вы создали экземпляр, но он не знает, что ваши данные должны были обновить для изменения своих внутренних переменных, которые он использует, когда вы вызываете его transform или inverse_transform.

scaler=MinMaxScaler(feature_range=(0,1))
x_train = scaler.fit_transform(x_train) # you missed this line
# rest of your code for training Neural network with x_train
...
# now convert the result
scaler.inverse_transform(result)

scikit-learn Do c - лучшая документация, которую вы когда-либо видели, проверьте, если вы все еще чувствуете себя застрявшими.

...