import pandas as pd import torch import numpy as np from sklearn.preprocessing import StandardScaler, MinMaxScaler # 数据预处理 def process_data(file_path): # 读取Excel文件,跳过首行,使用科学计数法解析 df = pd.read_excel(file_path, header=None,sheet_name="sample1") # 提取输入输出数据 inputs = df.iloc[:, 1:9].values.astype(np.float32) # 第2-9列 outputs = df.iloc[:, 10:19].values.astype(np.float32) # 第11-19列 # 数据标准化 input_scaler = StandardScaler() output_scaler = StandardScaler() inputs = input_scaler.fit_transform(inputs) outputs = output_scaler.fit_transform(outputs) # # input_scaler = MinMaxScaler(feature_range=(-1, 1)) # output_scaler = MinMaxScaler(feature_range=(-1, 1)) # inputs = input_scaler.fit_transform(inputs) # outputs = output_scaler.fit_transform(outputs) return inputs, outputs, input_scaler, output_scaler # 创建序列数据集 look_back:依据时间序列 pred_step:推测时间序列 def create_sequences(inputs, outputs, look_back=8, pred_step=1): X, y = [], [] for i in range(len(inputs) - look_back - pred_step): X.append(inputs[i:i + look_back]) y.append(outputs[(i+look_back):(i+look_back+pred_step)]) return torch.FloatTensor(np.array(X)), torch.FloatTensor(np.array(y))