tensorflow宽模型:如何使用单热功能?

时间:2016-09-17 13:49:52

标签: tensorflow

我已在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" ,但它不支持列名,因此不能用于广泛的深度演示。

1 个答案:

答案 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())