我有非常初学者问题。我已经安装了一个预测股票价格的模型。神经网络需要做什么输入才能做出预测?如果我的批量大小为30,我是否需要以29种最后已知价格提供? 顺便说一句,这是我的代码:
# First step, import libraries.
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import h5py
random_seed = 452
# Neural network configuration
num_epochs = 500
num_batch_size = 30
lstm_activation_function = "sigmoid"
df = pd.read_csv("data_dl.csv")
df["date"] = pd.to_datetime(df["Timestamp"],unit="s").dt.date
group = df.groupby("date")
Real_Price = group["Close"].mean()
Real_Price = Real_Price[len(Real_Price)-29:]
# Data preprocess
training_set = Real_Price.values
training_set = np.reshape(training_set, (len(training_set), 1))
from sklearn.preprocessing import MinMaxScaler
sc = MinMaxScaler()
training_set = sc.fit_transform(training_set)
X_train = training_set[0:len(training_set)-1]
y_train = training_set[1:len(training_set)]
X_train = np.reshape(X_train, (len(X_train), 1, 1))
from keras.models import load_model
model = load_model("20180302_0340e500b30_s452.h5")
yhat = model.predict_on_batch(X_train)
fname_graph = "pr_e" + str(num_epochs) + "_b" + str(num_batch_size) + ".png"
plt.figure(figsize=(25,15), dpi=80, facecolor="w", edgecolor="k")
ax = plt.gca()
plt.plot(yhat, color = "red", label = "Price")
plt.title("Price", fontsize=40)
for tick in ax.xaxis.get_major_ticks():
tick.label1.set_fontsize(18)
for tick in ax.yaxis.get_major_ticks():
tick.label1.set_fontsize(18)
plt.xlabel("Time", fontsize=40)
plt.legend(loc=2, prop={"size": 25})
plt.savefig(fname_graph, bbox_inches="tight")
plt.show()
答案 0 :(得分:0)
model = load_model("20180302_0340e500b30_s452.h5")
但是,以下行中变量的命名表明您始终在t
时间使用一个数据点(单个值?),以便预测t+1
时的下一个值:< / p>
X_train = training_set[0:len(training_set)-1]
y_train = training_set[1:len(training_set)]
如果在训练期间确实使用了这种代码,那么您还应该使用类似的预测设置:为某个时间点t
提供一个数字作为输入,获取下一个时间步的预测{ {1}}作为输出。
如果我的批量大小为30,我是否需要提供29种最新已知价格?
在培训期间使用批次更为常见,在进行预测时,批量大小为1更为常见,但如果您有大量新输入,则可以同时对整批批次进行预测你想做出预测。
无论哪种方式,本引文中您的问题的答案都是否。批量大小是指您拥有/想要的输入输出对的数量(其中输入可以是许多元素的向量,我怀疑在您的情况下恰好只有一个元素)。如果您的批量大小为30,则表示您提供30个不同的输入值,对应30个不同的时间步长t+1
作为输入,并为30个不同的匹配时间步长获得30个不同的输出[t0, t1, ..., t29]
一下子。