如何通过使用sklearn标准化具有多个功能的时间序列数据?

时间:2018-10-06 17:32:33

标签: python-3.x scikit-learn

对于形状为(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个功能的数据。由于我的数据具有多个功能,因此此方法不起作用。

如何规范具有多个功能的时间序列数据?

1 个答案:

答案 0 :(得分:1)

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

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

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