对于形状为(num_samples,features)
的数据,可以使用MinMaxScaler
中的sklearn.preprocessing
对其进行标准化。
但是,当对形状为(num_samples, time_steps,features)
的时间序列数据使用相同的方法时,sklearn会出错。
from sklearn.preprocessing import MinMaxScaler
import numpy as np
#Making artifical time data
x1 = np.linspace(0,3,4).reshape(-1,1)
x2 = np.linspace(10,13,4).reshape(-1,1)
X1 = np.concatenate((x1*0.1,x2*0.1),axis=1)
X2 = np.concatenate((x1,x2),axis=1)
X = np.stack((X1,X2))
#Trying to normalize
scaler = MinMaxScaler()
X_norm = scaler.fit_transform(X) <--- error here
ValueError:找到的数组为暗3。MinMaxScaler预期为<= 2。
此post建议类似
(timeseries-timeseries.min())/(timeseries.max()-timeseries.min())
但是,它仅适用于仅具有1个功能的数据。由于我的数据具有多个功能,因此此方法不起作用。
如何规范具有多个功能的时间序列数据?
答案 0 :(得分:1)
要标准化形状的3D张量(n_samples,时间步长,n_features),请使用以下命令:
(timeseries-timeseries.min(axis=2))/(timeseries.max(axis=2)-timeseries.min(axis=2))
使用参数轴= 2将返回沿第3维(即特征轴)执行的张量运算结果。因此,每个特征将独立标准化。