Python 3.x 如何使用sklearn规范化具有多个特征的时间序列数据?

Python 3.x 如何使用sklearn规范化具有多个特征的时间序列数据?,python-3.x,scikit-learn,Python 3.x,Scikit Learn,对于具有形状(num_samples,features)的数据,sklearn中的MinMaxScaler。可以使用预处理来轻松地对其进行规范化 但是,当对具有形状(num\u samples,time\u steps,features)的时间序列数据使用相同的方法时,sklearn将给出一个错误 from sklearn.preprocessing import MinMaxScaler import numpy as np #Making artifical time data x1 =

对于具有形状
(num_samples,features)
的数据,
sklearn中的
MinMaxScaler
。可以使用预处理来轻松地对其进行规范化

但是,当对具有形状
(num\u samples,time\u 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
然而,它只适用于只有一个特性的数据。由于我的数据具有多个特征,因此此方法不起作用


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

要规范化形状的三维张量(n_样本、时间步长、n_特征),请使用以下方法:

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

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

要规范化形状的三维张量(n_样本、时间步长、n_特征),请使用以下命令:

(timeseries-timeseries.min(axis=2))/(timeseries.max(axis=2)-timeseries.min(axis=2))
使用参数axis=2将返回沿三维(即特征轴)执行的张量运算的结果。因此,每个特征将被独立地标准化