Из различных примеров, которые я нашел в Интернете, я до сих пор не совсем понимаю, как создавать слои встраивания из моих категориальных данных для моделей нейронных сетей, особенно когда у меня есть смесь числовых и категориальных данных.Например, взяв набор данных, как показано ниже:
numerical_df = pd.DataFrame(np.random.randint(0,100,size=(100, 3)), columns=['num_1','num_2','num_3'])
cat_df = pd.DataFrame(np.random.randint(0,5,size=(100, 3)), columns=['cat_1','cat_2','cat_3'])
df = numerical_df.join(cat_df)
Я хочу создать слои встраивания для моих категориальных данных и использовать их в сочетании с моими числовыми данными, но из всех примеров, которые я видел, это почтикак модель просто фильтрует весь набор данных через слой внедрения, что сбивает с толку.
В качестве примера моей путаницы ниже приведен пример из документации Keras о последовательных моделях.Это как если бы они просто добавили шаг встраивания в качестве первого слоя и поместили его на весь x_train.
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.layers import Embedding
from keras.layers import LSTM
max_features = 1024
model = Sequential()
model.add(Embedding(max_features, output_dim=256))
model.add(LSTM(128))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=16, epochs=10)
score = model.evaluate(x_test, y_test, batch_size=16)
Так что, в конечном счете, когда дело доходит до создания матриц встраивания, существует ли один на категориальную переменную ...один для всех категориальных переменных?И как мне согласовать это с моими другими данными, которые не нуждаются в матрице встраивания?