LSTM Keras:重塑输入数据

LSTM Keras:重塑输入数据,keras,deep-learning,lstm,recurrent-neural-network,autoencoder,Keras,Deep Learning,Lstm,Recurrent Neural Network,Autoencoder,我想为客户行为建立一个LSTM自动编码器模型,并检测异常情况。活动数据集看起来像: customer_id features C1 [[1,2,1,0,1],[2,2,1,1,0],[1,2,3,1,1],[0,3,2,1,1]] C2 [[2,1,1,4,1],[3,2,1,1,4],[2,2,3,1,2]] ...........................................

我想为客户行为建立一个LSTM自动编码器模型,并检测异常情况。活动数据集看起来像:

customer_id               features
C1                   [[1,2,1,0,1],[2,2,1,1,0],[1,2,3,1,1],[0,3,2,1,1]]
C2                   [[2,1,1,4,1],[3,2,1,1,4],[2,2,3,1,2]]
..............................................
Cn                   [[2,3,1,4,1],[2,1,1,1,0],[4,2,2,1,2],[3,3,2,1,1], [2,3,2,1,2], [1,3,2,2,1]]
这里,所有样本的特征数量相同,即5。但是,不同客户的样品数量不同。有N个客户。
在这种情况下,如何分离列车和测试数据,以及如何重塑LSTM模型的输入数据

到目前为止,

  • 例如,我将每个客户数据中80%的样本视为培训,其余样本视为测试
  • 尝试将输入重塑为:(无客户、时间步、无特征)=(n,#无样本,5) . 不支持此数组,因为我们不能拥有具有不同时间步长的numpy数组
    在这种情况下,您需要使用填充。提及


    您也可以设置maxlen参数,这取决于为客户提供的最大列表

    我已经写了一个答案,看看它是否解决了您的问题。我已将输入数据拆分为X_train和X_test。如果我们为数据样本较少的客户填充零序列,那么模型的总体结果会发生什么变化?它会在模型性能上产生差异吗?不会,填充和屏蔽模块本身会处理零填充。请阅读链接一次,你会知道的。还有一件事,请确保你也填写了测试数据。如果你那边的事情很清楚,请告诉我。非常感谢你的回答。我会试着给你回电话的。当然,随时问!,如果它对您有效,请按回答做标记:)
    from tensorflow.keras.preprocessing.sequence import pad_sequences
    
    # club all features (c1, c2 ... features, I clubbed c1. c2 only) as a below:    
    input1 = [[[1,2,1,0,1],[2,2,1,1,0],[1,2,3,1,1],[0,3,2,1,1]],
             [[2,1,1,4,1],[3,2,1,1,4],[2,2,3,1,2]]]
    
    padded_input = pad_sequences(input1, padding='post')
    print(padded_input)