33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
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)) |