【发布时间】:2021-01-28 10:10:10
【问题描述】:
sklearn.preprocessing.normalize 仅支持二维数组归一化。
但是,我目前有一个用于 LSTM 模型训练(批量、步骤、特征)的 3D 数组,我希望对特征进行归一化。
我试过tf.keras.utils.normalize(X_train, axis=-1, order=2 )但是不正确。
另一种方法是将3D数组折叠成2D数组
print(X_train.shape)
print(max(X_train[0][0]))
输出
(1883, 100, 68)
6.028588763956215
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train.reshape(X_train.shape[0], -1)).reshape(X_train.shape)
X_test = scaler.transform(X_test.reshape(X_test.shape[0], -1)).reshape(X_test.shape)
print(X_train.shape)
print(max(X_train[0][0]))
print(min(X_train[0][0]))
输出
(1883, 100, 68)
3.2232538993444533
-1.9056918449890343
该值仍然不在 1 和 -1 之间。
我应该如何处理它?
【问题讨论】:
-
@MarcoCerliani 我建议您将其发布为专门使用
MinMaxScaler的答案,以便 OP 随后可以接受并解决问题(它不是 exact 重复) .
标签: numpy machine-learning keras scikit-learn