假设你的数据是整形[num_instances, num_time_steps, num_features] 我要做的是首先重塑数据,然后规范化数据。
import numpy as np
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
num_instances, num_time_steps, num_features = train_data.shape
train_data = np.reshape(train_data, shape=(-1, num_features))
train_data = scaler.fit_transform(train_data)
这将以每个特征为一列的格式重塑数据,并将分别对每个特征进行规范化。之后,您可以在训练之前以相同的形状返回数据。
train_data = np.reshape(train_data, shape=(num_instances, num_time_steps, num_features))
在验证集上使用缩放器时,fit_transform 方法计算训练集上的 mean 和 std 并将它们存储在对象中。然后,当你想规范化验证集时,你可以这样做:
num_instances, num_time_steps, num_features = val_data.shape
val_data = np.reshape(val_data, shape=(-1, num_features))
val_data = scaler.transform(val_data)
然后将数据重塑为训练所需的形状。
val_data = np.reshape(val_data, shape=(num_instances, num_time_steps, num_features))
这应该对你有用。
更新:
根据@Medomatto 的评论,在后来的numpy 版本中,正确的重塑方法是:
... = np.reshape(data, newshape=(...))