如何将多列时空数据集转换为单列用于STNN建模?
时空数据适配STNN的格式转换方法
核心思路
STNN的输入要求是时空序列矩阵:行对应时间步,列对应所有空间实体的特征向量扁平化后的一维拼接结果。以下针对包含x(空间坐标)、y(空间坐标)、a、b、c(观测属性)的数据集,给出具体转换方法和公式。
步骤1:单时间步的空间特征扁平化
假设某时间步下有n个独立空间实体(每个实体对应一行x,y,a,b,c数据):
- 对第
i个空间实体,将其所有属性合并为一维特征向量:v_i = [x_i, y_i, a_i, b_i, c_i] - 将所有实体的特征向量按固定顺序拼接,得到该时间步的一维特征数组:
S_t = [x_1, y_1, a_1, b_1, c_1, x_2, y_2, a_2, b_2, c_2, ..., x_n, y_n, a_n, b_n, c_n]
(S_t的长度为n × 5,对应n个实体×5个属性)
步骤2:结合时间维度生成二维输入矩阵
假设共有T个连续时间步(从t=1到t=T):
- 将每个时间步的一维数组
S_t按时间顺序作为行堆叠,形成最终的二维输入矩阵:X = \begin{bmatrix} S_1 \\ S_2 \\ \vdots \\ S_T \end{bmatrix}
(矩阵X的形状为(T, n×5),即T行对应T个时间步,每行对应该时间步所有空间实体的扁平化特征)
关键注意事项
- 所有时间步的空间实体数量、顺序必须完全一致,若存在缺失实体或数据,需提前通过插值、补默认值等方式补全。
- 若
x、y是固定不变的静态空间坐标(如固定传感器位置),可将其作为模型的静态特征单独输入,无需在每个时间步重复拼接,以降低输入维度。
内容的提问来源于stack exchange,提问作者Hermawan Wiwid
相关产品推荐
相关产品推荐

