人生倒计时
- 今日已经过去小时
- 这周已经过去天
- 本月已经过去天
- 今年已经过去个月
我正在使用本指南进行时间序列预测(附有示例数据)。
这是代码:
def create_dataset(dataset, window_size = 1):
data_X, data_Y = [], []
for i in range(len(dataset) - window_size - 1):
a = dataset[i:(i + window_size), 0]
data_X.append(a)
data_Y.append(dataset[i + window_size, 0])
return(np.array(data_X), np.array(data_Y))
def fit_model(train_X, train_Y, window_size = 1):
model = Sequential()
model.add(LSTM(4,
input_shape = (1, window_size)))
model.add(Dense(1))
model.compile(loss = "mean_squared_error",
optimizer = "adam")
model.fit(train_X,
train_Y,
epochs = 100,
batch_size = 1,
verbose = 0)
return(model)
def predict_and_score(model, X, Y):
# Make predictions on the original scale of the data.
pred = MinMaxScaler(feature_range = (0,1)).inverse_transform(model.predict(X))
# Prepare Y data to also be on the original scale for interpretability.
orig_data = MinMaxScaler(feature_range = (0,1)).inverse_transform([Y])
# Calculate RMSE.
score = math.sqrt(mean_squared_error(orig_data[0], pred[:, 0]))
return(score, pred)
整个功能正在以下功能中使用:
def nnet(time_series, window_size=1, ):
cmi_total_raw = vstack((time_series.values.astype('float32')))
scaler = MinMaxScaler(feature_range = (0,1))
cmi_total_scaled = scaler.fit_transform(cmi_total_raw)
cmi_train_sc = (cmi_total_scaled[0:int(cmi_split*len(cmi_total_scaled))])
cmi_test_sc = cmi_total_scaled[int(cmi_split*len(cmi_total_scaled)) : len(cmi_total_scaled)]
# Create test and training sets for one-step-ahead regression.
window_size = 1
train_X, train_Y = create_dataset(cmi_train_sc, window_size)
test_X, test_Y = create_dataset(cmi_test_sc, window_size)
# Reshape the input data into appropriate form for Keras.
train_X = np.reshape(train_X, (train_X.shape[0], 1, train_X.shape[1]))
test_X = np.reshape(test_X, (test_X.shape[0], 1, test_X.shape[1]))
model = fit_model(train_X, train_Y, window_size)
rmse_train, train_predict = predict_and_score(nn_model, train_X, train_Y)
mape_test, test_predict = predict_and_score(model, test_X, test_Y)
return (mape_test, test_predict)
据我了解时间序列分析:单变量和多变量方法 pdf,它是根据训练数据创建模型,并根据样本内测试集进行预测时间序列分析:单变量和多变量方法 pdf,最后计算误差。
输入数据有 209 行,我想预测下一行。
这是我尝试过的:
由于使用 (steps=) 方法在 Auto-Arima 中完成了相同的操作,因此我在 Keras 中寻找了类似的东西。
来自 Keras 文档:
(x,=无,=0,步数=无)
范围:
x:输入数据,作为 Numpy 数组(如果模型有,则为 Numpy 列表)。
步数:回合的总步数。值为无。
我尝试改变步长,它预测了一个非常荒谬的值 100,000。而且,长度还是很接近我给的步数。所以我认为 step 在这里还有其他含义。
问题 - Keras 甚至可以用于预测时间序列数据(样本外) - 如果是这样,有没有办法像上面一样做?- 如果没有,有没有办法使用现有方法摆脱样本外预测?
样本():
2014-05-25 272.459887
2014-06-01 272.446022
2014-06-08 330.301260
2014-06-15 656.838394
2014-06-22 670.575110
解决方案 暂无答案
关注本站公众号:程序员总部,领取三大福利!福利一:前端辅导福利二:进程序员微信群,程序员圈专属福利三:领取全套零基础视频教程(,java,front-end,php)