You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确认Keras中LSTM分类任务的时序输入X与标签y匹配?

验证LSTM输入X与标签y对应关系的方法

别担心,咱们可以用几个简单的方法快速验证X_total和y_total的对应关系是否正确,完全不用复杂的操作:

1. 手动抽取单个样本对比

直接取循环里的第一个样本,用代码验证它和原数据集的对应关系:

import numpy as np

# 取X_total的第一个样本
first_X = X_total[0]
# 原数据集中对应的60行特征(前9列)
expected_X = data_set[0:60, :9]
# 验证是否完全一致
print(np.array_equal(first_X, expected_X))  # 应该输出True

# 取y_total的第一个样本
first_y = y_total[0]
# 原数据集中对应的标签(第60行第9列,因为n_future=1)
expected_y = data_set[60, 9]
# 验证是否一致
print(np.array_equal(first_y, expected_y))  # 应该输出True

这段代码会直接告诉你第一个X样本是不是原数据的前60行特征,第一个y样本是不是原数据第61个样本的标签(注意索引从0开始,原数据第60行对应第61个样本)。

2. 检查中间索引的对应逻辑

选几个中间位置的索引,比如第100个样本,验证X的最后一行和y的时序衔接:

k = 100
# X_total第100个样本的最后一行,对应原数据的第k+59行
X_last_row = X_total[k][-1]
# 原数据中第k+59行的特征
expected_X_last = data_set[k+59, :9]
print(np.array_equal(X_last_row, expected_X_last))  # 应该输出True

# y_total第100个样本对应原数据的第k+60行的标签
expected_y = data_set[k+60, 9]
print(np.array_equal(y_total[k], expected_y))  # 应该输出True

这里的逻辑是:X_total[k]用的是原数据从k到k+59的60行特征,来预测k+60行的y标签,正好是时序上“用过去60天预测下一天”的逻辑,完全符合你的需求。

3. 可视化时序衔接(可选)

如果你的数据是时间序列,可以画个简单的图来直观验证:

import matplotlib.pyplot as plt

# 取原数据某一个特征,比如第0列
feature = data_set[:, 0]
# 取X_total第0个样本的该特征时序
X_feature = X_total[0][:, 0]
# 对应的y标签位置
y_pos = 60
y_val = y_total[0]

plt.plot(range(60), X_feature, label='X_total[0] feature')
plt.scatter(y_pos, feature[y_pos], color='red', label='y_total[0] corresponding value')
plt.legend()
plt.show()

图里你会看到X的时序结束在第59个点,红色点正好在第60个位置,完美衔接,一眼就能确认对应关系是对的。

其实你的代码逻辑是没问题的:循环从i=60开始,X_total.append(data_set[i-60:i, :9])就是取原数据从i-60到i-1的60行(因为切片是左闭右开),而y_total.append(data_set[i+n_future-1:i+n_future,9])当n_future=1时,就是取原数据第i行的标签,正好是X覆盖的60天之后的那一天的标签,完全匹配。

内容的提问来源于stack exchange,提问作者Diego Perez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:21:43