1、
# creates a real valued column for dense numeric data
tf.contrib.layers.real_valued_column(
column_name,
dimension=1,
default_value=None,
dtype=tf.dtypes.float32,
normalizer=None
)
2、我们无法将字符串直接输入模型。相反,我们必须先将字符串映射到数字或分类值。分类词汇列提供了一种以 one-hot 矢量表示字符串的好方法
1 tf.feature_column.categorical_column_with_vocabulary_list( 2 key, 3 vocabulary_list, 4 dtype=None, 5 default_value=-1, 6 num_oov_buckets=0 7 )
3、
1 """ 2 For DNN model, indicator_column can be used to wrap any categorical_column_* (e.g., to feed to DNN). Consider to Use embedding_column if the number of buckets/unique(values) are large. 3 4 For Wide (aka linear) model, indicator_column is the internal representation for categorical column when passing categorical column directly (as any element in feature_columns) to linear_model. See linear_model for details. 5 """ 6 7 tf.feature_column.indicator_column(categorical_column)
4、对列进行embedding
1 tf.feature_column.embedding_column( 2 categorical_column, 3 dimension, 4 combiner='mean', 5 initializer=None, 6 ckpt_to_load_from=None, 7 tensor_name_in_ckpt=None, 8 max_norm=None, 9 trainable=True 10 )
5、对于数值形特征
tf.feature_column.numeric_column('age')
6、分箱离散化
在处理连续值特征的时候通常会做分箱的操作。在tensorflow中可以这样做:
age_buckets = tf.feature_column.bucketized_column(
age, boundaries=[18, 25, 30, 35, 40, 45, 50, 55, 60, 65])
7、特征交叉处理,这也是很场景的一种特征处理方法,经常能学习到联合特征的权重
1 tf.feature_column.crossed_column(fea_list, hash_bucket_size=hash_size)
8、tf.SparseTensor()
- indices:density_shape[N, ndims]的2-D int64张量,指定稀疏张量中包含非零值(元素为零索引)的元素的索引.例如,indices=[[1,3], [2,4]]指定索引为[1,3]和[2,4]的元素具有非零值.
- values:任何类型和dense_shape [N]的一维张量,它提供了indices中的每个元素的值.例如,给定indices=[[1,3], [2,4]]的参数values=[18, 3.6]指定稀疏张量的元素[1,3]的值为18,张量的元素[2,4]的值为3.6.
- dense_shape:density_shape[ndims]的一个1-D int64张量,指定稀疏张量的dense_shape.获取一个列表,指出每个维度中元素的数量.例如,dense_shape=[3,6]指定二维3x6张量,dense_shape=[2,3,4]指定三维2x3x4张量,并且dense_shape=[9]指定具有9个元素的一维张量.
1 SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])