【feature_column处理】- crossed_column交叉列

1. crossed_column作用: 对hash映射后的特征进行交叉

2. 特征交叉的优势: 在有些情况下,相比特征one-hot编码,会有更好的效果

3. 参数说明:

def crossed_column(keys, hash_bucket_size, hash_key=None):
参数参数说明
key可迭代的交叉特征
hash_bucket_size一个int> 1.桶的数量。ont-hot的长度。
hash_key指定将被使用的HASH_KEY FingerprintCat64功能做交叉,与SparseCrossOp(可选)相结合

4. 最后输出
交叉后的Tensor,输出是crossed_column的one_hot结果,hash_bucket_size代表输出的交叉向量的one-hot维度
5. 举例

import tensorflow as tf
sess=tf.Session()
#特征数据
features = {
    'gender': [0, 1, 1, 0, 1],
    'games': ['sport', 'sport', 'drawing', 'gardening', 'travelling'],
}

#特征列
department = tf.feature_column.categorical_column_with_vocabulary_list('games', ['sport','drawing','gardening','travelling'], dtype=tf.string)
sex = tf.feature_column.categorical_column_with_identity('gender', num_buckets=2, default_value=0)
sex_department = tf.feature_column.crossed_column([department,sex], 8)
sex_department = tf.feature_column.indicator_column(sex_department)
#组合特征列
columns = [
    sex_department
]
#输入层(数据,特征列)
inputs = tf.feature_column.input_layer(features, columns)
#初始化并运行
init = tf.global_variables_initializer()
sess.run(tf.tables_initializer())
sess.run(init)
v=sess.run(inputs)
print(v)

结果

[[1. 0. 0. 0. 0. 0. 0. 0.] # 0_sport
 [0. 0. 0. 1. 0. 0. 0. 0.] # 1_sport
 [0. 1. 0. 0. 0. 0. 0. 0.] # 1_drawing
 [0. 1. 0. 0. 0. 0. 0. 0.] # 0_gradening
 [0. 0. 0. 0. 1. 0. 0. 0.]] # 1_travelling
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值