如何区分具有连续和分类特征的数据集

时间:2019-07-02 14:37:42

标签: python time-series difference

我有一个小小的疑问,假设我的数据具有连续的时间序列(非平稳)和其他分类变量(已编码)。在这种情况下,区别数据的最佳方法是什么?因为分类数据没有区别,但是在训练模型时必须使用它们。

我正在尝试构建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)

然后我已经预测了整个数据,并希望使用最后的预测来提前进行预测。这样做时,我将不得不恢复缩放比例并恢复差分。不确定如何调整循环以完成相同操作:

首先,让我们设置模型的状态(这对于了解以前的趋势很重要)

predictions = 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)

0 个答案:

没有答案