LSTM keras MaxMinScale函数针对相同的数字产生不同的值

时间:2018-11-01 19:11:00

标签: python tensorflow machine-learning keras lstm

我正在尝试将LSTM模型应用于时间序列预测。

LSTM的第一步是使用MinMaxScaler缩放数据。我正在尝试缩放(-1,1)范围内的数据。

我的火车数据如下所示:

[[0.         2.54583333]
 [2.54583333 2.6125    ]
 [2.6125     2.875     ]
 ...
 [2.69583333 2.5125    ]
 [2.5125     2.91666667]
 [2.91666667 3.4375    ]]

MinMaxScaler(copy=True, feature_range=(-1, 1))
[[-1.         -0.95342466]
 [-0.80649248 -0.94794521]
 [-0.80142518 -0.92636986]
 ...
 [-0.79509105 -0.95616438]
 [-0.80902613 -0.92294521]
 [-0.77830562 -0.88013699]]

因此,可以看出上面的值没有正确缩放。例如:2.54583333的缩放比例为-0.95342466以及-0.80649248。

实际上,缩放后的值应类似于以下内容:

[[-1.         -0.95342466]
 [-0.95342466 -0.94794521]
 [0.94794521 -0.92636986]
 ...
 [-0.79509105 -0.95616438]
 [-0.95616438 -0.92294521]
 [-0.92294521 -0.88013699]]

标定值也应遵循训练集中的模式。

有人可以告诉我我在做什么错,为什么同一数字会出现多个缩放值?

我正在使用以下代码缩放值:

def scale(train, test):
    # fit scaler
    scaler = MinMaxScaler(feature_range=(-1, 1))
    scaler = scaler.fit(train)

    # transform train
    train = train.reshape(train.shape[0], train.shape[1])
    train_scaled = scaler.transform(train)

    # transform test
    test = test.reshape(test.shape[0], test.shape[1])
    test_scaled = scaler.transform(test)
    return scaler, train_scaled, test_scaled

但是这里确实有问题。请帮忙。

我的整个数据集都是(720,1)

火车数据的长度:519 测试数据长度:200。

在上述方法中,火车数据的形状为(519,2),测试数据的形状为(200,2)。请让我知道是否需要更多信息或任何其他清晰度。我是新手,我是第一次尝试LSTM。

1 个答案:

答案 0 :(得分:0)

这没有错。每个特征都是独立缩放的,并且每个特征都有自己的归一化因子,因此不同特征维度中的相同特征值将不会以相同方式归一化。