Как передать несколько наборов временных рядов в модель LSTM для прогнозирования? - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь взять этот набор данных и прогнозировать уровни популярности новостей с течением времени.

Набор данных состоит из 145 столбцов (1 - это идентификатор, связанный с фактической новостью вотдельный файл, 2 - 145 для 144 20-минутных временных интервалов, где каждая ячейка подряд записывает уровень популярности соответствующей новости).

Я уже нормализовал набор данных "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())

Также (для некоторого понимания того, как выглядит остальная часть моего кода) я следовал этому учебнику изДжейсону Браунли за руководство.

1 Ответ

0 голосов
/ 11 апреля 2019

Я не уверен, что хорошо понял вопрос, но думаю, что уже сделал нечто подобное. Во-первых, вы должны сложить все свои функции в массив. Я нашел эту ссылку очень полезной: 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, добавил каждую функцию, необходимую для обучения вашей модели в этом массиве, а затем воспроизвел эту технику для создания тестового набора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...