gpt4 book ai didi

python - 不了解如何为分类特征实现嵌入

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:03 27 4
gpt4 key购买 nike

从我在网上找到的各种示例来看,我仍然不太了解如何从我的分类数据为神经网络模型创建嵌入层,尤其是当我混合使用数字数据和分类数据时。例如,取如下数据集:

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)

所以最终在创建嵌入矩阵时,每个分类变量都有一个......所有分类变量都有一个吗?我如何将它与不需要嵌入矩阵的其他数据协调起来?

最佳答案

要将分类数据与数值数据相结合,您的模型应使用函数式 API 使用多个输入。一个用于每个分类变量,一个用于数值输入。这取决于您希望如何将所有数据组合在一起,但我认为将所有数据连接在一起然后继续模型的其余部分是有意义的。

numerical_in = Input(shape=(3,))
cat_in = Input(shape=(3,))
embed_layer = Embedding(input_dim=5, output_dim=3, input_length=3)(cat_in)
embed_layer = Flatten(embed_layer)
merged_layer = concatenate([numerical_in, embed_layer])
output = rest_of_your_model(merged_layer)
model = Model(inputs=[numerical_in, cat_in], outputs=[output])

...

model.fit(x=[numerical_df, cat_df], y=[your_expected_out])

关于python - 不了解如何为分类特征实现嵌入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52486088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com