我已在https://www.tensorflow.org/versions/r0.9/tutorials/wide_and_deep/index.html中了解该模型 文章中的功能有两种类型:分类和连续
就我而言,我有一个描述用户ID的列,范围从0到10000000
我将此列视为分类并使用hash-bucket,但只获得一个约为0.50010的池auc值
1)是否需要使用one-hot来处理这个id列?
2)如果需要,如何实现这一目标?我找到了一个" tf.contrib.layers.one_hot_encoding" ,但它不支持列名,因此不能用于广泛的深度演示。
答案 0 :(得分:0)
不,您不需要对UserID列进行编码。每个值都是唯一的,不是分类值。当少于1000个类别时,单热编码是有意义的。
要回答关于如何使用one_hot_encoding的问题,假设您有一个标签列表(请注意它们必须是整数):
import tensorflow as tf
with tf.Session() as sess:
labels = [0, 1, 2, 3]
labels_t = tf.constant(labels)
num_classes = len(labels)
one_hot = tf.contrib.layers.one_hot_encoding(labels_t, num_classes=num_classes)
print(one_hot.eval())