Как переформировать кадр данных с несколькими входами для LSTM в Керасе? - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь предсказать температуру для данной области (ее целое число от 1 до 142) для данной даты и времени.

Проблема в том, что у меня CSV со следующими столбцами:

DateTime, AreaID, Temperature

Как перефразировать фрейм данных для LSTM (извиняюсь, что я новая пчела для LSTM)?

Для информации у меня есть данные в течение двух месяцев с измерением по периоду каждые 5 минут.

Я кодировал LSTM для Input DateTime. Но я хочу включить AreaID тоже. для прогнозирования температуры.

Набор данных, созданный для наборов обучения и тестирования, использует следующий блок кода:


    dataset = dataset.temperature.values #numpy.ndarray
    dataset = dataset.astype('float32')
    dataset = np.reshape(dataset, (-1, 1))
    scaler = MinMaxScaler(feature_range=(0, 1))
    dataset = scaler.fit_transform(dataset)
    train_size = int(len(dataset) * 0.80)
    test_size = len(dataset) - train_size
    train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]
    def create_dataset(dataset, look_back=1):
        X, Y = [], []
        for i in range(len(dataset)-look_back-1):
            a = dataset[i:(i+look_back), 0]
            X.append(a)
            Y.append(dataset[i + look_back, 0])
        return np.array(X), np.array(Y)

    look_back = 30
    X_train, Y_train = create_dataset(train, look_back)
    X_test, Y_test = create_dataset(test, look_back)

    # reshape input to be [samples, time steps, features]
    X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
    X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))

Перед этим пример кода отсортировал фрейм данных на основе DateTime, например :

dataset.sort_values('timestamp', inplace=True, ascending=True)

Я хочу изменить LSTM на два входа 1. DateTime 2. AreaID

& Один выход: 1. Температура

Как кодировать LSTM для этого требования? (Пожалуйста, помогите мне, я новая пчела в области нейронной сети)

1 Ответ

0 голосов
/ 01 мая 2020

Только для подсказки.

Вы готовите новый набор данных в x_train и y_train. Начните 60 дней, чтобы обучить модель и предсказать 61 день, вот мои логики c

X_train=[]
y_train=[]
count=0
for i in range(60,train.shape[0]):
    count=count+1
    X_train.append(df[i-60:i])
    y_train.append(train['targetcol'][i])
...