如何为python';什么是凯拉斯LSTM?

如何为python';什么是凯拉斯LSTM?,python,keras,lstm,reshape,Python,Keras,Lstm,Reshape,我几乎在厨房里找到了我需要的东西。但是内存有问题,因为测试df只提供了11行 我试图预测的是使用LSTM来预测回归模型(而不是分类器!)中时间序列数据的10天前。我的数据框X大约有1500行和2000个特征,呈形状(15002000),而真值y仅为1个特征的1500行(可以在-1和1之间的任何值范围内) 由于LSTM需要3D矢量作为输入,我真的在努力重塑数据 同样,按照第一段中的示例,在填充值时,MemoryError会崩溃,更具体地说是在df.cumulative\u input\u vect

我几乎在厨房里找到了我需要的东西。但是内存有问题,因为测试df只提供了11行

我试图预测的是使用LSTM来预测回归模型(而不是分类器!)中时间序列数据的10天前。我的数据框
X
大约有1500行和2000个特征,呈
形状(15002000)
,而真值
y
仅为1个特征的1500行(可以
在-1和1之间的任何值范围内)

由于LSTM需要3D矢量作为输入,我真的在努力重塑数据

同样,按照第一段中的示例,在填充值时,MemoryError会崩溃,更具体地说是在
df.cumulative\u input\u vectors.tolist()

我的测试(读取预测)是
形状(102000)
数据帧

由于敏感数据,我无法实际共享值/示例。我能帮你什么忙

因此,为了使LSTM能够从1500行
y
中学习,我应该如何重塑1500行
x
和2000个功能我应该如何重塑我的
预测
,包括10行和2000个功能

首先,因为我正在学习LSTM,他们将经历一个简单的LSTM模型:

model = Sequential()
model.add(LSTM(50, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(train_X, train_y , epochs=50, batch_size=2, verbose=1)
我已经试过了,但当predictin出错时:

# A function to make a 3d data of what I understood needed done:
def preprocess_data(stock, seq_len):
    amount_of_features = len(stock.columns)
    data = stock.values

    sequence_length = seq_len #+ 1
    result = []
    for index in range(len(data) - sequence_length):
        result.append(data[index : index + sequence_length])

    X_train = np.array(result)  

    X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], amount_of_features))

    return X_train

# creating the train as:
# X == the DF of 1500 rows and 2000 features
window = 10
train_X = preprocess_data(X[::-1], window)

过了一段时间,我终于正确地理解了维度在哪里。Keras希望有一个3d数组
.shape
(totalRows、sequences、totalColumns)
序列
对我来说是最令人困惑的

这是因为当重塑df
df.restorge(len(df),1,len(df.columns))
意味着keras将学习一行矩阵,它给了我糟糕的结果,因为我不知道最好缩放数据对我来说
MinMaxScaler(-1,1)
效果最好,但是可以是
(0,1)

让我理解的是,首先使用超过一行的序列(或天,因为我的数据集是一个时间序列)。这意味着我使用了类似的东西,即5行特征X导致1个y值,而不是输入1行特征X导致1个y值。例如:

# after scaling the df, resulted in "scaled_dataset"
sequences = 5
result = []
# for loop will walk for each of the 1500 rows
for i in range(0,len(scaled_dataset)):
    # every group must have the same length, so if current loop position i + number 
    # of sequences is higher than df length, breaks
    if i+sequences <= len(scaled_dataset):
        # this will add into the list as [[R1a,R1b...R1t],[R2a,R2b...R2t],...[R5a,R5b...R5t]]
        result.append(scaled_dataset[i:i+sequences].values)
# Converting to array + keras takes float32 better than 64
train_x = np.array(result).astype('float32')
# making the y into same length as X
train_y = np.array(y.tail(train_x.shape[0]).values)

train_x.shape, train_y.shape
#缩放df后,生成“缩放的_数据集”
序列=5
结果=[]
#for循环将为1500行中的每一行行走
对于范围内的i(0,len(缩放的_数据集)):
#每个组必须具有相同的长度,因此如果当前循环位置i+编号
#序列的长度大于df长度,中断

如果是i+序列,请重新构造你的问题,并明确你到底在问什么。现在我很困惑,因为你似乎在问一个重塑的问题,然后不知何故,你试图运行预测,但却出现了一个错误?我看不出有什么困惑,问题的句子/名称是什么?小贴士:我应该如何重塑。正文只是对我所处位置的一个完整解释,以避免“可能重复的…”这一毫无帮助的回答。我也在使用这种方法。然而,在大数据帧中循环的速度非常慢。