Как отличить набор данных с помощью непрерывных и категориальных функций - PullRequest
0 голосов
/ 02 июля 2019

У меня есть небольшие сомнения, предположим, что мои данные имеют непрерывный временной ряд (не стационарный) и другие категориальные переменные (которые уже закодированы).При таких обстоятельствах, как лучше всего различать данные?Поскольку категориальные данные не различаются, но они должны использоваться при обучении модели.

Я пытаюсь построить модель LSTM, поэтому любая помощь очень ценится.

Данные, которыми я в настоящее время занимаюсьиспользование на дневном уровне и ради иллюстрации я рассмотрел только одномерный сценарий (игнорируя переменную Var1 и применяя разность только к переменной "TS"

TS       Var1
15000     1
14000     1
16000     0

raw_values = daily_data_dummies_V2.values
interval=1
diff = list()
for i in range(interval, len(raw_values)):
    value = raw_values[i] - raw_values[i - interval]
    diff.append(value)

# rescale values to -1, 1
scaler = MinMaxScaler(feature_range=(-1, 1))
scaled_values = scaler.fit_transform(diff)

X = entireData[:,:-1,:]
y = entireData[:,1:,:]


from keras.layers import merge, Input, Dense, TimeDistributed, Lambda        
from keras.callbacks import LambdaCallback
from keras.layers import Dropout

# design network
model = Sequential()


model.add(LSTM(150, stateful=True, batch_input_shape=(1, None, 1),   
return_sequences=True))
model.add(Dropout(0.5))
model.add(TimeDistributed(Dense(1)))


model.compile(loss='mean_squared_error', optimizer='adam')
# fit network
model.fit(X, y, epochs=5000, batch_size=1, verbose=2)

previous_inputs=X

model.reset_states() 

predictions = model.predict(previous_inputs)

Затем я предсказал все данные &Я хотел бы использовать последнее предсказание для прогнозирования вперед. При этом мне придется отменить масштабирование и отменить разность. Не уверен, как я отрегулирую цикл, чтобы сделать то же самое:

сначала, позвольте установитьсостояния модели (важно, чтобы она знала предыдущие тенденции)

предсказания = model.predict (previous_inputs) # это создает состояния

#future predictions
 future = []
 currentStep = predictions[:,-1:,:] #last step from the previous    

  prediction

for i in range(31):
    currentStep = model.predict(currentStep)
    one=currentStep[0]
    two=scaler.inverse_transform(one)
    three=raw_values[-1]+two
    future.append(three)
...