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

я пытаюсь построить модель для прогнозирования некоторого значения, в моем наборе данных содержатся конусные и категориальные данные, для которых я выбрал one hot encode категориальную функцию, как показано ниже

oneEncoder= OneHotEncoder()
oneEncoder.fit_transform(features.COL2.values.reshape(-1,1)).todense()
>>> matrix([[0., 1., 0.],
        [0., 1., 0.],
        [0., 1., 0.],
        ...,
        [0., 1., 0.],
        [1., 0., 0.],
        [0., 1., 0.]])

, но при попытке вывести первую строку данные, я все еще получаю строковое значение, а не представление OHE

features.iloc[1,:]['COL2'] # prints '1772' (the string value)

, после чего я собирался использовать его для построения сети так же, как и до добавления категориальных функций с использованием приведенного ниже

multi_step_model = tf.keras.models.Sequential()
multi_step_model.add(tf.keras.layers.LSTM(32,
                                          return_sequences=True,
                                          input_shape=x_train_multi.shape[-2:]))
multi_step_model.add(tf.keras.layers.LSTM(16, activation='relu'))
multi_step_model.add(tf.keras.layers.Dense(future_target))

multi_step_model.compile(optimizer=tf.keras.optimizers.RMSprop(clipvalue=1.0), loss='mse')

Q1 : OHE правильно ли я выполняю или что-то упустил?

Q2 : можно ли просто вставить категориальные данные в сеть после выполнения OHE?

...