模型预处理层介绍(1) - Discretization

2023-11-01

预处理的作用主要在于将难以表达的string或者数组转换成模型容易训练的向量表示,其中转化过程大多是形成一张查询表用来查询。

常见的预处理方式包括:

  • class Discretization: Buckets data into discrete ranges.

  • class Hashing: Implements categorical feature hashing, also known as “hashing trick”.

  • class IntegerLookup: Maps integers from a vocabulary to integer indices.

  • class Normalization: Feature-wise normalization of the data.

  • class StringLookup: Maps strings from a vocabulary to integer indices.

接下来,本文将介绍下这些常用的预处理方式的作用和内容

Discretization

离散化层。该层将其输入数据的每个元素放入几个连续的范围之一,并输出一个整数索引,指示每个元素位于哪个范围。这个索引也就是索引编号,通过分桶边界值判断输入的数字属于哪个分桶,以此给出桶号。

换句话说,它的作用在于将连续的数值特征转换为整数分类特征。

在2.5版本的tf当中,该层的入参只有一个分桶边界bins,用法为:

tf.keras.layers.experimental.preprocessing.Discretization(
    bins, **kwargs
)

在2.11版本的tf当中,Discretization层被定义为

tf.keras.layers.Discretization(
    bin_boundaries=None,
    num_bins=None,
    epsilon=0.01,
    output_mode='int',
    sparse=False,
    **kwargs
)

其中多了一个epsilon,用来作为误差容忍度,通常是一个接近于零的小分数(例如0.01)。较大的epsilon值会增加分位数近似,从而导致更多不相等的桶,但可以提高性能和资源消耗。

另外还多了一个output_mode:

  • “int”:直接返回离散化的bin索引。

  • “one_hot”:将输入中的每个元素编码到与num_bins大小相同的数组中,在输入的bin索引处包含一个1。如果最后一个维度的大小为1,则对该维度进行编码。如果最后一个维度的大小不是1,则将为编码后的输出追加一个新维度。

  • “multi_hot”:将输入中的每个样本编码到与num_bins大小相同的单个数组中,为样本中出现的每个bin索引索引包含一个1。将最后一个维度作为样本维度,如果输入形状为(…, sample_length),输出形状将是(…, num_tokens)。

  • “count”:作为"multi_hot",但int数组包含bin索引在示例中出现次数的计数。

举一个现有的官方的例子:

>>> input = np.array([[-1.5, 1.0, 3.4, .5], [0.0, 3.0, 1.3, 0.0]])
>>> layer = tf.keras.layers.experimental.preprocessing.Discretization(
...          bins=[0., 1., 2.])
>>> layer(input)
<tf.Tensor: shape=(2, 4), dtype=int32, numpy=
array([[0, 1, 3, 1],
       [0, 3, 2, 0]], dtype=int32)>

在这个例子中,传入的参数 bins=[0., 1., 2.] 代表着该层以0、1、2 作为数值边界进行分桶,所以整体的查询表大概如下所示:

bin <0 0~1 1~2 >2
index 0 1 2 3

结合着官方的例子,处于边界值上的数值,会被归于前一个桶。比如第一行第二个数字数值为1,会被分桶成编号为1。

其中Discretization层调用了bucket进行分桶

要注意的是,这些层是不可训练的。它们的状态在训练期间没有设置;它必须在训练之前设置,或者通过从预先计算的常数初始化它们,或者通过在数据上“调整”它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模型预处理层介绍(1) - Discretization 的相关文章

  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • ubuntu 20.04 上无法获取卷积算法错误~tensorflow-gpu

    我有一个 NVIDIA 2070 RTX GPU 我的操作系统是 Ubuntu20 04 我已经使用 conda 安装了tensorflow gpu 包 我有not安装了 CUDA toolkit 我相信它还会安装 CUDA toolkit
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐

  • js中 的模块化 导入、导出 整理

    参考1 参考2 module exports与exports是CommonJS的规范 export与export default是es6规范 require 是 AMD规范引入方式 import是es6的一个语法标准 小程序中也可以使用 i
  • 选特化还是重载

    一个函数模板即有特化版又有重载版 编译器会选哪个 以下代码来自 为什么不要特化函数模版 的例3 1 include lt iostream gt 2 3 using namespace std 4 5 template lt class T
  • open-vm-tools与VMware Tools

    安装VMware Tools经常会出现兼容性不好 系统之间复制文件失灵 并且安装时提示建议使用open vm tools 于是放弃vmware tools的安装 尝试使用open vm tools open vm tools 是 VMwar
  • 浅谈汇编器、编译器和解释器

    作者 硬核老王 简单介绍一下编程方式的历史演变 Erik O shaughnessy 作者 在计算机诞生不久的早期年代 硬件非常昂贵 而程序员比较廉价 这些廉价程序员甚至都没有 程序员 这个头衔 并且常常是由数学家或者电气工程师来充当这个角
  • 大型语言模型(LLMs)的幻觉问题【Answer From chatGPT】

    减轻大型语言模型 LLMs 的幻觉问题是一个重要的研究领域 以下是一些减轻LLMs幻觉的方法和建议 更好的数据筛选和预处理 在训练LLMs之前 可以通过更仔细的数据筛选和预处理来减轻幻觉 删除或修复训练数据中的不准确信息和虚假关联可以有助于
  • 新冠肺炎疫情实时数据查询

    一 接口介绍 本接口数据收集于百度 丁香园 无糖科技等网站 感谢参与收集数据的广大网友 数据均由人工收集 虽经细心筛查但不能保证没有错漏之处 仅可作为参考使用 二 接入点功能 今日肺炎疫情明细 回最新的国内covid 19疫情数据 包括各地
  • C#中,处理JSON文件(解析与生成)

    建议用控制台编译方式 首先 添加引用 System Web Extensions 添加Newtonsoft Json库 并且需要应用命名空间 using System Web Script Serialization using Newto
  • Java 重试机制导致重复消费_RocketMQ重试机制及消息幂代码实例解析

    这篇文章主要介绍了RocketMQ重试机制及消息幂代码实例解析 文中通过示例代码介绍的非常详细 对大家的学习或者工作具有一定的参考学习价值 需要的朋友可以参考下 一 重试机制 1 由于MQ经常处于复杂的分布式系统中 考虑网络波动 服务宕机
  • Ubuntu安装mysql以及配置远程连接

    1 安装mysql apt get install mysql server 查看mysql是否安装成功 dpkg l grep mysql server 2 修改mysql root密码 进入mysql mysql u root p 进入
  • 中文编码杂谈

    中文编码杂谈 桂南 编码问题的例子 在windows自带的notepad 记事本 程序中输入 联通 两个字 保存后再次打开 会发现 联通 不见了 代之以 的乱码 这是windows平台上典型的中文编码问题 即文件保存的时候是按照ANSI编码
  • win10配置系统默认utf-8编码

    最近在使用Gvim打开utf 8文件时 出现了中文乱码 于是想把系统默认编码从gbk修改为utf 8 在Win10设置中 系统设置 gt 时间和语言 gt 语言 gt 管理语言设置 gt 更改系统区域设置 gt 勾选Unicode UTF
  • 98-字节输出流写入数据到文件

    写入数据的原理 内存 gt 硬盘 java程序 JVM java虚拟机 OS 操作系统 OS调用系统自己写数据的方法 把数据写入到文件中 字节输出流的使用步骤 重点 1 创建对象 创建一个FileOutputStream对象 构造方法中传递
  • Linux系统:CentOS编译Linux内核

    目录 一 实验 1 下载内核 2 解压内核源码 3 配置依赖的环境 4 进入源码目录 使用make menuconfig开启菜单选项 手动选择内核功能 5 编译内核 6 安装模块 7 安装内核 8 验证新内核版本 一 实验 1 下载内核 1
  • 爬虫python代码-python爬虫(附源码)

    声明 本文内容皆来自网上 环境 ubuntu19 04 python3 x python包 requests bs4 beautifulsoup re urllib lxml os 下载方式 pip install 包名 ps 部分电脑未安
  • 牛顿柯特斯公式及复合形式、龙贝格求积公式,高斯勒让德求积公式

    数值积分的研究实现 牛顿柯特斯公式 柯特斯系数 各阶对应公式 当n 1时 对应的牛顿 柯特斯公式就是是梯形公式 当n 2时 对应的牛顿 柯特斯公式就是辛普森公式 当n 4时 对应的牛顿 柯特斯公式就是柯特斯公式 柯特斯系数表 核心代码实现
  • 从零开发区块链应用(十二)--以太坊余额查询

    文章目录 一 账户状态stateTrie 1 2 查询余额代码思路 1 3 余额查询流程 二 获取账户余额 2 1 代码解析 2 2 完整代码 三 获取账户代币余额 一 账户状态stateTrie Block Header Root 就是s
  • leetcode第五题-最长回文子字符串

    题目 给定一个字符串 s 找到 s 中最长的回文子串 你可以假设 s 的最大长度为 1000 示例 1 输入 babad 输出 bab 注意 aba 也是一个有效答案 示例 2 输入 cbbd 输出 bb 中心扩展算法 回文中心的两侧互为镜
  • Mysql进阶四:常见函数-分组函数

    Mysql进阶四 常见函数 分组函数 分组函数 常用于统计 1 内容 sum max min count avg 2 特点 sum avg 用于处理数值型 max min 用于处理任何数据类型 count 适用处理任何数据类型 用于计算非空
  • 使用ubuntu系统做程序开发

    本人是在台式机上安装的ubuntu16 04长期稳定版来做的开发环境 ubuntu安装后的操作 由于在安装完后 第一件事就是联网 说下我公司网需要的是固定ip 需要在网络设置ipv4 必须注意 是 设置好了马上生效的 需要重新开启打开后 才
  • 模型预处理层介绍(1) - Discretization

    预处理的作用主要在于将难以表达的string或者数组转换成模型容易训练的向量表示 其中转化过程大多是形成一张查询表用来查询 常见的预处理方式包括 class Discretization Buckets data into discrete