返回顶部
首页 > 资讯 > 后端开发 > Python >one-hot编码
  • 111
分享到

one-hot编码

人工智能python机器学习 2023-09-04 06:09:40 111人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

one-hot编码 什么是one-hot编码 one-hot编码,又称独热编码、一位有效编码。其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位

one-hot编码

什么是one-hot编码

  • one-hot编码,又称独热编码、一位有效编码。其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。举个例子,假设我们有四个样本(行),每个样本有三个特征(列),如下图:

  • 我们拿feature2来说明:这里feature2有4种取值(状态),我们就用4个状态位来表示这个特征,one-hot编码就是保证每个样本中的单个特征只有1位处于状态1,其他的都是0。
    在这里插入图片描述

  • 对于2种状态、3种状态、甚至更多状态都可以这样表示,所以我们可以得到这些样本特征的新表示,入下图:

    one-ho编码将每个状态位都看成一个特征。对于前两个样本我们可以得到它的特征向量分别为

    Sample_1--->[0,1,1,0,0,0,1,0,0]Sample_2--->[1,0,0,1,0,0,0,1,0]

one-hot在提取文本特征上的应用

  • one hot在特征提取上属于词袋模型(bag of Words)。关于如何使用one-hot抽取文本特征向量我们通过以下例子来说明。假设我们的语料库中有三段话:

    • 我爱中国

    • 爸爸妈妈爱我

    • 爸爸妈妈爱中国

    我们首先对预料库分词,并获取其中所有的词,然后对每个此进行编号:
    1我;2爱;3爸爸;4妈妈;5中国
    然后使用one hot对每段话提取特征向量:

    因此我们得到了最终的特征向量为
    我爱中国->(1,1,0,0,1)
    爸爸妈妈爱我->(1,1,1,1,0)
    爸爸妈妈爱中国->(0,1,1,1,1)

    优缺点分析

    优点:

    • 一是解决了分类器不好处理离散数据的问题
    • 二是在一定程度上也起到了扩充特征的作用(上面样本特征数从3扩展到了9)

    缺点:

    • 它是一个词袋模型,不考虑词与词之间的顺序
    • 它假设词与词相互独立(在大多数情况下,词与词是相互影响的)
    • 它得到的特征是离散稀疏的;

手动实现one-hot编码

import numpy as npsamples = ['他 毕业 于 哈佛大学', '他 就职 于 工科院计算机研究所']# 分完词之后一般要将词典索引做好,一般叫token_indextoken_index = {}for sample in samples:    for word in sample.split():        if word not in token_index:            token_index[word] = len(token_index)+1print(len(token_index))print(token_index)# 构造one—hot编码results = np.zeros(shape=(len(samples), len(token_index)+1, max(token_index.values())+1))for i, sample in enumerate(samples):  # 索引    for j, word in list(enumerate(sample.split())):   # 对list组进行链接        index = token_index.get(word)   # 索引和word对应        print(i, j, index, word)        results[i, j, index] = 1print(results)# 改进的算法results2 = np.zeros(shape=(len(samples),max(token_index.values())+1) )for i, sample in enumerate(samples):    for _, word in list(enumerate(sample.split())):        index = token_index.get(word)        results2[i, index] = 1print(results2)

运行结果

Keras中one-hot编码的实现

Keras分词器Tokenizer的办法介绍

  • Tokenizer是一个用于向量化文本,或将文本转换为序列(即单词在字典中的下标形成的列表,从1算起)的类。Tokenizer实际上只是生成了一个字典,并且统计了词频等信息,并没有把文本转成须要的向量示意。
  • from keras.preprocessing.text import Tokenizer引入模块
  • tokenizer = Tokenizer()

生成词典tokenizer.fit_on_texts()

string = ['他 毕业 于 哈佛大学', '他 就职 于 工科院计算机研究所']# 构建单词索引tokenizer = Tokenizer()tokenizer.fit_on_texts(samples)print(tokenizer.word_index)

将句子序列转换成token矩阵tokenizer.texts_to_matrix()

tokenizer.texts_to_matrix(samples)  #如果string中的word出现在了字典中,那么在矩阵中出现的位置处标1
tokenizer.texts_to_matrix(string,mode='count') #如果string中的word出现在了字典中,那么在矩阵中出现的位置处标记这个word出现的次数

句子转换成单词索引序列tokenizer.texts_to_sequences

sequences = tokenizer.texts_to_sequences(samples)print(sequences)

分词器被训练的文档(文本或者序列)数量tok.document_count

依照数量由大到小Order排列的token及其数量tok.word_counts

完整代码:

from keras.preprocessing.text import Tokenizersamples = ['他 毕业 于 哈佛大学', '他 就职 于 工科院计算机研究所']# 构建单词索引tokenizer = Tokenizer()tokenizer.fit_on_texts(samples)word_index = tokenizer.word_indexprint(word_index)print(len(word_index))sequences = tokenizer.texts_to_sequences(samples)print(sequences)one_hot_results = tokenizer.texts_to_matrix(samples)print(one_hot_results)

运行结果

来源地址:https://blog.csdn.net/qq_44795788/article/details/126451564

--结束END--

本文标题: one-hot编码

本文链接: https://www.lsjlt.com/news/393083.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • one-hot编码
    one-hot编码 什么是one-hot编码 one-hot编码,又称独热编码、一位有效编码。其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位...
    99+
    2023-09-04
    人工智能 python 机器学习
  • 在Python中进行One-Hot编码
    目录1.介绍​2.什么是One-Hot编码?​3.实现-Pandas​​4.实现-Scikit-Learn​5.​One-hot编码在机器学习领域的应用​1.介绍​   &...
    99+
    2024-04-02
  • One Hot编码指的是什么
    这篇文章给大家介绍One Hot编码指的是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。导读  当你在玩ML模型的时候,你会在任何地方遇到这个“One hot encoding”的术语。当你在玩ML模型...
    99+
    2023-06-19
  • 机器学习数据预处理之独热One-Hot编码及其代码详解
    目录1. 为什么使用 one-hot 编码?问题:目的:瓶颈:2. 什么是 one-hot 编码?定义:理解:举例1:举例2:3. one-hot 编码优缺点?优点:缺点:1. 为什...
    99+
    2024-04-02
  • python label与one-hot之间的互相转换方式
    目录label与one-hot之间的互相转换label 转 one-hotone-hot 转labellabel:one-hot 与 标量转化标量 转化为 one-hot 向量one...
    99+
    2023-02-01
    python label python one-hot label与one-hot互相转换
  • RAW图像编辑转换器Capture One 20 Pro for Mac
    capture one 20 mac 特别是一款集所有必备功能和强大工具于一体的高端图像编辑转换软件。Capture One Pro 20 for Mac拥有无限制的批量冲洗功能,给你最好的转换质量!capture one mac特别版是一...
    99+
    2023-06-05
  • linux之系统编码,python编码,
    如果你对python2和python3的中编解码很清楚,这里我认为你很清楚。具体参考文档:“python2 encode和decode函数说明.docx”“字符编码——从ASCII开始.docx”以上所有文档均为本地文档。sys.getde...
    99+
    2023-01-31
    系统 linux python
  • Quoted-printable 编码介绍、编码解码转换
    Quoted-printable(引用打印)是一种用于在电子邮件和其他文本协议中编码非ASCII字符的方法。该编码将非ASCII字符...
    99+
    2023-09-12
    转换
  • python编码总结(编码类型、格式、转码)
    本文详细总结了python编码。分享给大家供大家参考,具体如下: 【所谓unicode】 unicode是一种类似于符号集的抽象编码,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。也就是...
    99+
    2022-06-04
    类型 格式 python
  • 编码-2
    最近在socket中遇到了一个偶现bug,那就是与websocket建立连接后,进行数据传输后,在linux平台的终端下用socket_read()读取出来后,再用echo打印出来的就是乱码。因为我做的只是一个数据中转,而另一端的C++则...
    99+
    2023-01-31
  • Python HTML编码解码
    >>> import HTMLParser >>> h = HTMLParser.HTMLParser() &g...
    99+
    2023-01-31
    Python HTML
  • Python编码规范摆脱Python编码噩梦
    目录1. Python 3 中 str 与 bytes2. Python 2 中 str 与 unicode3. 如何检测对象的编码4. 编码与解码的区别5. 如何设置文件编码博客原...
    99+
    2024-04-02
  • 字符编码
    计算机基础 文本编辑器存取文件的原理 1.打开编辑器就打开启动了一个进程,是在内存中,所以,用编码器编写的内容也都存放在内存中的,断电后数据丢失。 2.要想永久保存,需要点击保存按钮:编辑器把内存的数据拴到硬盘上。 3.早我们编写一个...
    99+
    2023-01-31
    字符
  • 规范-编码
    c++编码规范 c++11, xcode, vistual studio 编码规范 http://zh-google-styleguide.r... 常用库 标准库: http://en.cppreference.com/w/ 日志:...
    99+
    2023-01-31
  • Python Unicode编码
    使用技巧事实上,只要遵守以下规则,可以规避90%由于Unicode字符串处理引起的bug,剩下的10%通过python的库和模块能够解决。程序中出现字符串时一定要加个前缀u。不要用str()函数,用unicode()代替。不要用过时的str...
    99+
    2023-01-31
    Python Unicode
  • Python3的URL编码解码
    博主最近在用python3比较强大的Django开发web的时候,发现一些url的编码问题,在浏览器提交请求api时,如果url中包含汉子,就会被自动编码掉。呈现的结果是 ==> %xx%xx%xx。如果出现3个百分号为一个原字符则...
    99+
    2023-01-31
    URL
  • PHP 会话编码解码
    在 PHP 中,会话是一种跨网页处理数据的方式。会话编码和解码操作是存储或读取会话数据时的要求。 在 PHP 中演示使用 session_encode() 和 session_decode 内...
    99+
    2024-02-27
  • Android 怎么用Lame编码器编码mp3文件
    这篇文章主要介绍“Android 怎么用Lame编码器编码mp3文件”,在日常操作中,相信很多人在Android 怎么用Lame编码器编码mp3文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android...
    99+
    2023-06-14
  • IntelliJ IDEA 统一设置编码为utf-8编码
    今天教大家如何设置IDEA的编码为utf-8编码 第一步:File->Settings->Editor->File Encodings 第二步:如果你的IDEA是老版本的话,在File->Other...
    99+
    2023-09-07
    intellij-idea java
  • mysql中Base64编码与解码
    在mysql中,有些数据我们不想让别人直观的看到,这时可以使用Base编码与解码。 MySQL在5.6版本的时候增加了to_base64和from_base64函数,在此之前没有内部函数, 用法举例:  1、to_base64  编...
    99+
    2019-10-07
    mysql中Base64编码与解码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作