TensorFlow2中提供的几种处理特征列的方法小结

 更新时间:2023年09月14日 09:34:11   作者:镰刀韭菜  
本文主要介绍了TensorFlow2中提供的几种处理特征列的方法小结,主要介绍了6种方式,具有一定的参考价值,感兴趣的可以了解一下

TensorFlow 2 提供了多种处理特征列的方法,用于对数据进行转换,然后把转换后的数据传入TensorFlow的layers.DenseFeatures层,并将该层作为神经网络的输入层。

1. 处理数值列

一个特征列的输出将成为模型的输入。 数值列(numeric column) 是最简单的列类型。它用于表示实数特征。使用此列时,模型将从 dataframe 中接收未更改的列值。
用法示例:

photo_count = feature_column.numeric_column('PhotoAmt')
demo(photo_count)

2. 对数值列进行分桶(或分段)

通常,如果不希望将数字直接输入模型,而是根据数值范围将其值分成不同的类别。例如,考虑代表一个人年龄的原始数据。我们可以用 分桶列(bucketized column)将年龄分成几个分桶(buckets),而不是将年龄表示成数值列。请注意下面的 one-hot 数值表示每行匹配的年龄范围。
用法示例:

age = feature_column.numeric_column('Age')
age_buckets = feature_column.bucketized_column(age, boundaries=[1, 3, 5])
demo(age_buckets)

3. 处理分类列

在数据集中,如果分类列用字符串表示(例如 ‘fixed’,‘normal’,或 ‘reversible’)。我们无法直接将字符串提供给模型。相反,我们必须首先将它们映射到数值。分类词汇列(categorical vocabulary columns)提供了一种用 one-hot 向量表示字符串的方法。词汇表可以用 categorical_column_with_vocabulary_list 作为 list 传递,或者用 categorical_column_with_vocabulary_file 从文件中加载。

用法示例:

# 把分类字段转换为分类列(categorical_column)
animal_type = feature_column.categorical_column_with_vocabulary_list('Type', ['Cat', 'Dog'])
# 把分类列(categorical_column)转换为独热编码
animal_type_one_hot = feature_column.indicator_column(animal_type)
demo(animal_type_one_hot)

4. 使用Embedding处理分类列

假设我们不是只有几个可能的字符串,而是每个类别有数千(或更多)值。 由于多种原因,随着类别数量的增加,使用 one-hot 编码训练神经网络变得不可行。我们可以使用嵌入列来克服此限制。嵌入列(embedding column)将数据表示为一个低维度密集向量,而非多维的 one-hot 向量,该低维度密集向量可以包含任何数,而不仅仅是 0 或 1。嵌入的大小(在下面的示例中为 8)是必须调整的参数。

关键点:当分类列具有许多可能的值时,最好使用嵌入列。

用法示例:

# Notice the input to the embedding column is the categorical column we previously created
breed1 = feature_column.categorical_column_with_vocabulary_list('Breed1', dataframe.Breed1.unique())
breed1_embedding = feature_column.embedding_column(breed1, dimension=8)
demo(breed1_embedding)

5. 经过哈希处理的特征列

表示具有大量数值的分类列的另一种方法是使用 categorical_column_with_hash_bucket。该特征列计算输入的一个哈希值,然后选择一个 hash_bucket_size 分桶来编码字符串。使用此列时,您不需要提供词汇表,并且可以选择使 hash_buckets 的数量远远小于实际类别的数量以节省空间。

关键点:该技术的一个重要缺点是可能存在冲突,不同的字符串被映射到同一个范围。实际上,无论如何,经过哈希处理的特征列对某些数据集都有效。
用法示例:

breed1_hashed = feature_column.categorical_column_with_hash_bucket('Breed1', hash_bucket_size=10)
demo(feature_column.indicator_column(breed1_hashed))

6. 使用组合的特征列

将多种特征组合到一个特征中,称为特征组合(feature crosses),它让模型能够为每种特征组合学习单独的权重。这里,我们将创建一个 age 和 thal 组合的新特征。请注意,crossed_column 不会构建所有可能组合的完整列表(可能非常大)。相反,它由 hashed_column 支持,因此可以选择表的大小。
用法示例

crossed_feature = feature_column.crossed_column([age_buckets, animal_type], hash_bucket_size=10)
demo(feature_column.indicator_column(crossed_feature))

经过前面这些方法预处理之后,可以把它们拼接起来一起作为神经网络的输入层。

到此这篇关于TensorFlow2中提供的几种处理特征列的方法小结的文章就介绍到这了,更多相关TensorFlow2 处理特征列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中位运算的详细用法教程

    Python中位运算的详细用法教程

    在Python中,位运算是一种对二进制数进行操作的运算方式,它们直接对二进制位进行操作,而不考虑这些位所表示的实际值,本文将详细介绍Python中的位运算符,需要的朋友可以参考下
    2024-08-08
  • Python编程快速上手——Excel到CSV的转换程序案例分析

    Python编程快速上手——Excel到CSV的转换程序案例分析

    这篇文章主要介绍了Python Excel到CSV的转换程序,结合具体案例形式分析了Python操作Excel到CSV转换的操作技巧与相关注意事项,需要的朋友可以参考下
    2020-02-02
  • python ast模块详析与用法

    python ast模块详析与用法

    这篇文章主要给大家介绍了关于python ast模块详析与用法的相关资料, Python的ast(Abstract Syntax Trees,抽象语法树)模块是一个内置模块,用于解析Python代码并生成语法树,需要的朋友可以参考下
    2023-07-07
  • 在django view中给form传入参数的例子

    在django view中给form传入参数的例子

    今天小编就为大家分享一篇在django view中给form传入参数的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • pycharm通过anaconda安装pyqt5的教程

    pycharm通过anaconda安装pyqt5的教程

    PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,这篇文章主要介绍了pycharm通过anaconda来安装pyqt5的教程,需要的朋友可以参考下
    2020-03-03
  • Python如何将大TXT文件分割成4KB小文件

    Python如何将大TXT文件分割成4KB小文件

    处理大文本文件是程序员经常遇到的挑战,特别是当我们需要把一个几百MB甚至几个GB的TXT文件分割成小块时,下面我们来聊聊如何用Python自动完成这个任务吧
    2025-04-04
  • Python中eval()函数的详细使用教程

    Python中eval()函数的详细使用教程

    eval函数在Python中具有非常重要的地位,熟练的使用eval函数能够为我们的Python编程提供很多的便利之处,下面这篇文章主要给大家介绍了关于Python中eval()函数的详细使用,需要的朋友可以参考下
    2022-07-07
  • python实现Excel多行多列的转换的示例

    python实现Excel多行多列的转换的示例

    本文主要介绍了python实现Excel多行多列的转换的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)

    pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)

    这篇文章主要介绍了pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python实现银行账户资金交易管理系统

    Python实现银行账户资金交易管理系统

    这篇文章主要介绍了Python银行账户资金交易管理系统,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01

最新评论