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

深度学习双输入不同起始时间模型代码修改咨询

解决方案:适配时间错位输入的序列数据处理代码修改

完全可以构建符合你需求的深度学习模型,核心是解决Temperature(t=0起始)和Status(t=1起始)的时间步错位问题,以下是针对你提供的代码的修改方案及说明:

核心思路

要预测t=15时刻的Temperature,对应的输入需要:

  • Temperature序列:覆盖t=0到t=14(共15个时间步)
  • Status序列:覆盖t=1到t=14(共14个时间步)
    由于两个序列长度不一致,我们需要补全Status缺失的t=0时刻值(可根据数据类型选择合理补全方式),保证输入的时间步维度统一,方便后续模型处理。

修改后的代码

import numpy as np
import pandas as pd

def df_to_X_y(df, window_size=15):
    # 单独提取Temperature和Status列(假设Temperature是第0列,Status是第1列)
    temp_series = df.iloc[:, 0].to_numpy()
    status_series = df.iloc[:, 1].to_numpy()
    
    X = []
    y = []
    # 计算最大循环次数,避免Status序列越界
    max_sample_idx = min(len(temp_series) - window_size, len(status_series) - (window_size - 1))
    
    for i in range(max_sample_idx):
        # 提取Temperature窗口:t=i 到 t=i+14(共15个时间步)
        temp_window = temp_series[i:i+window_size]
        # 提取Status窗口:t=i+1 到 t=i+14(共14个时间步),补全t=i位置的缺失值
        # 这里用0填充,可根据数据类型替换:分类变量用众数,连续变量用均值/中位数
        status_window = np.concatenate([[0], status_series[i+1:i+window_size]])
        # 组合成每个时间步的特征对:[Temperature, Status]
        combined_window = np.column_stack((temp_window, status_window))
        X.append(combined_window)
        # 目标值:t=i+15时刻的Temperature
        y.append(temp_series[i+window_size])
    
    return np.array(X), np.array(y)

关键修改说明

  1. 拆分特征列:不再整行处理数据,单独提取两个特征序列,避免时间步错位
  2. 边界控制:通过max_sample_idx确保Status窗口不会超出数据范围,因为Status比Temperature晚一个时间步开始
  3. 缺失值补全:给Status的起始缺失时间步补全合理值,保证输入序列长度统一为15个时间步
  4. 特征组合:将同一时间步的Temperature和Status配对,形成模型需要的序列输入格式(形状为:[样本数, 时间步, 特征数])

额外建议

  • 补全值选择:如果Status是分类变量,建议用数据中出现次数最多的类别填充;如果是连续变量,用均值或中位数更合适
  • 数据归一化:训练模型前,对Temperature和Status分别做标准化(如StandardScaler),能大幅提升模型收敛速度和效果
  • 模型选择:可以用LSTM、GRU这类序列模型,输入形状对应修改后X的形状即可

内容的提问来源于stack exchange,提问作者Azhan Ameer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:05:21