如何使用 sklearn 对具有多个特征的时间序列数据进行规范化?



对于形状为(num_samples,features)的数据,sklearn.preprocessing中的MinMaxScaler可以很容易地对其进行规范化。

但是,当对形状为(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

值错误:找到带有暗淡 3 的数组。最小最大缩放器预期 <= 2。

这篇文章建议类似

(timeseries-timeseries.min())/(timeseries.max()-timeseries.min())

然而,它仅适用于只有 1 个特征的数据。由于我的数据具有 1 个以上的功能,因此此方法不起作用。

如何规范化具有多个特征的时间序列数据?

要规范化形状(n_samples、时间步长n_features(的 3D 张量,请使用以下命令:

(timeseries-timeseries.min(axis=2))/(timeseries.max(axis=2)-timeseries.min(axis=2))

使用参数 axis=2 将返回沿第 3 维(即特征轴(执行的张量运算的结果。因此,每个特征都将独立归一化。

最新更新