sklearn.preprocessing.normalize
只支持2D数组的标准化。但是,我目前有一个用于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之间。
我该如何解决?
MinMaxScaler
,以便OP随后接受并解决问题(这不是完全重复)。 - desertnaut