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

Posted

技术标签:

【中文标题】如何使用 sklearn 对具有多个特征的时间序列数据进行归一化?【英文标题】:How to normalize time series data with multiple features by using sklearn? 【发布时间】:2019-03-11 21:45:51 【问题描述】:

对于形状为(num_samples,features) 的数据,可以使用来自sklearn.preprocessingMinMaxScaler 轻松对其进行归一化。

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

这个post 建议类似

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

然而,它只适用于只有 1 个特征的数据。由于我的数据具有超过 1 个特征,因此此方法不起作用。

如何对具有多个特征的时间序列数据进行归一化?

【问题讨论】:

***.com/a/59601298/10375049 【参考方案1】:

要对形状(n_samples、timesteps、n_features)的 3D 张量进行归一化,请使用以下命令:

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

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

【讨论】:

以上是关于如何使用 sklearn 对具有多个特征的时间序列数据进行归一化?的主要内容,如果未能解决你的问题,请参考以下文章

使用 sklearn 对多个特征进行编码 [关闭]

如何将 sklearn.naive_bayes 与(多个)分类特征一起使用? [关闭]

如何使用 Sklearn 模拟多重共线性?

不确定如何将 sklearn 与包含文本和数字的特征向量一起使用

从 Sklearn 管道中提取具有特征名称的特征重要性

具有多个标签的 sklearn 确定性回归