我有一个数据集,其中name是一个重要特征。我想用它在python的keras神经网络中有一个输入节点。但这是不可能的,最好的方法是什么?
我尝试了一种热编码,但是由于名称的长度不固定,所以没有用吗?
答案 0 :(得分:1)
您可以使用Embeddings,它将大的稀疏向量(单热编码)转换为保留语义关系的低维空间。因此,对于分类功能,您将具有密集的矢量表示。
unique_amount = np.unique(col1)
input_1 = tf.keras.layers.Input(shape=(1,), name='input_1')
embedding_1 = tf.keras.layers.Embedding(unique_amount_1, 50, trainable=True)(input_1)
col1_embedding = tf.keras.layers.Flatten()(embedding_1)
50
处-您可以自行选择的嵌入向量的大小。
答案 1 :(得分:1)
您可以尝试使用character
中的keras
一级热编码。确保在char_level=True
中设置Tokenizer
标志。这可能导致我们的维数稀疏矩阵很低。
from keras.preprocessing.text import Tokenizer
tokenizer = Tokenizer(char_level=True)
tokenizer.fit_on_texts(<names>)
sequence_of_int = tokenizer.texts_to_sequences(<dataset_names>)
甚至,您也尝试用自己来表示基于频率的字符编码。