如何将多个时间序列集输入LSTM模型进行预测?

时间:2019-04-10 16:47:54

标签: python-3.x tensorflow machine-learning keras time-series

我正在尝试获取this数据集并预测一段时间内的新闻受欢迎程度。

数据集由145列组成(1是在单独的文件中链接到实际新闻报道的ID,在144个20分钟的时间片中为2-145,其中行中的每个单元格都记录了相应的受欢迎程度新闻故事)。

我已经将数据集“ Facebook_Economy.csv”标准化为0到1。目前,我只能将单个时间序列集输入模型(训练约100个时间片并测试约44个时间片)。我的目标是要对144个时间片进行多行训练,并在其他几行上进行测试,例如,获取新闻报道1-20的时间序列数据并接受新闻报道21-30等。

这是我目前将数据馈入模型的方式:

def run(filename):
    series = read_csv(filename, header=0, index_col=0)

    repeats = 1
    results = DataFrame()
    timesteps = 1

    for i in range(len(series)):
        results['results'] = experiment(repeats, series.iloc[i].squeeze(), timesteps)
        # Where experiment(repeats, series, timesteps)
        print(results.describe())

同样(为了深入了解其余代码的外观),我一直在遵循Jason Brownlee的this教程进行指导。

1 个答案:

答案 0 :(得分:0)

我不确定我是否很好地理解了这个问题,但我想我已经做了类似的事情。首先,您必须将所有功能堆叠在一个阵列中。我发现此链接非常有用:https://machinelearningmastery.com/how-to-develop-lstm-models-for-multi-step-time-series-forecasting-of-household-power-consumption/

这是我使用的代码:(fen_pred =输入大小,n_output =输出大小)

    dataset_train_features = np.hstack((dataset_train,new_features_train,ssa_feature1_train,ssa_feature2_train))

    dataset_train_labels = dataset_train

    features_set = list()  
    labels = list() 

    # X_train

    for i in range(fen_pred, len_train):  
        if(len(dataset_train_features[i:i+n_output])<n_output):
            break
        features_set.append(dataset_train_features[i-fen_pred:i])

    for i in range(fen_pred, len_train):  
        if(len(dataset_train_labels[i:i+n_output])<n_output):
            break
        labels.append(dataset_train_labels[i:i+n_output])

    X_train=np.array(features_set)    
    y_train=np.array(labels)

(请注意,我想预测一个时表的时间步长,这就是为什么我不预测多个功能)

在您的情况下,我将编辑数组dataset_train_features,添加在该数组中训练模型所需的每个功能,然后重现此技术以创建测试集。