time-series - 使用 predict_generator 时预测长度和测试数据长度的变化
问题描述
df = pd.read_csv('F:/series.csv')
train, validate, test = df[0:60], df[60:80], df[80:100]
sc = MinMaxScaler(feature_range = (-1, 1))
train = sc.fit_transform(train)
validate = sc.fit_transform(validate)
test = sc.fit_transform(test)
train = train.reshape((len(train),1))
test = test.reshape((len(test),1))
validate = validate.reshape((len(validate),1))
n_input = 5
n_features = 1
generator_train = TimeseriesGenerator(train, train, length=n_input, batch_size=2)
generator_validate = TimeseriesGenerator(validate, validate, length=n_input, batch_size=2)
generator_test = TimeseriesGenerator(test, test, length=n_input, batch_size=2)
model = Sequential()
model.add(LSTM(200, return_sequences = True, input_shape=(n_input, n_features)))
model.add(Dropout(0.2))
model.add(LSTM(200))
model.add(Dense(units = 1))
model.compile(loss='mean_squared_error', optimizer='adam')
history = model.fit_generator(generator_train, epochs= 100, validation_data = generator_validate)
model.evaluate_generator(generator_test)
prediction = model.predict_generator(generator_test, steps = 5)
prediction.shape
(10,1)
test.shape
(20,1)
这让我很困惑,如何解决这个问题?如何评估预测和测试数据?我犯了什么错误?
解决方案
我刚刚找到了答案,预测生成器长度取决于 (test_generator*batch_size) 的长度。现在测量 RMSE 消除测试数据的第一个 n_input 长度。现在大小变得相等。
推荐阅读
- vb6 - 在表单中调用模块和类
- python - 在 Jupyter Notebook 中使用 matplotlib imshow 时像素被切断
- c# - 为什么将 PNG 文件转换为 ASCII 字符串并将这些字节写入文件在 C# 中不起作用
- c# - 实体框架生成错误查询
- python - 我需要编写一个程序来确定输入的公式是否具有等效的括号集
- c++ - llvm 9 在 10.15 之前的 mac 版本上支持 std::filesystem 吗?
- ios - 在Objective-C中的搜索栏内按下时,UISearchController会触及安全区域
- java - RMI 中自定义类加载器的委托
- python-3.x - 最小步数可被 1 或 2 整除,但可被给定数整除
- python - 将文件从节点 A 传输到所有其他节点(远程主机)并行