keras.utils.to_categorical和one hot格式解析


Posted in Python onJuly 02, 2020

keras.utils.to_categorical这个方法,源码中,它是这样写的:

Converts a class vector (integers) to binary class matrix.

E.g. for use with categorical_crossentropy.

也就是说它是对于一个类型的容器(整型)的转化为二元类型矩阵。比如用来计算多类别交叉熵来使用的。

其参数也很简单:

def to_categorical(y, num_classes=None): 
Arguments 
y: class vector to be converted into a matrix 
(integers from 0 to num_classes). 
num_classes: total number of classes.

说的很明白了,y就是待转换容器(其类型为从0到类型数目),而num_classes则是类型的总数。

这样这一句就比较容易理解了:

先通过np生成一个1000*1维的其值为0-9的矩阵,然后再通过keras.utils.to_categorical方法获取成一个1000*10维的二元矩阵。

y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)

说了这么多,其实就是使用onehot对类型标签进行编码。下面的也都是这样解释。

one hot编码是将类别变量转换为机器学习算法易于利用的一种形式的过程。

通过例子可能更容易理解这个概念。

假设我们有一个迷你数据集:

公司名 类别值 价格
VW 1 20000
Acura 2 10011
Honda 3 50000
Honda 3 10000

其中,类别值是分配给数据集中条目的数值编号。比如,如果我们在数据集中新加入一个公司,那么我们会给这家公司一个新类别值4。当独特的条目增加时,类别值将成比例增加。

在上面的表格中,类别值从1开始,更符合日常生活中的习惯。实际项目中,类别值从0开始(因为大多数计算机系统计数),所以,如果有N个类别,类别值为0至N-1.

sklear的LabelEncoder可以帮我们完成这一类别值分配工作。

现在让我们继续讨论one hot编码,将以上数据集one hot编码后,我们得到的表示如下:

VW Acura Honda 价格
1 0 0 20000
0 1 0 10011
0 0 1 50000
0 0 1 10000

简单来说:**keras.utils.to_categorical函数是把类别标签转换为onehot编码(categorical就是类别标签的意思,表示现实世界中你分类的各类别),

而onehot编码是一种方便计算机处理的二元编码。**

补充知识:序列预处理:序列填充之pad_sequences()和one-hot转化之keras.utils.to_categorical()

tensorflow文本处理中,经常会将 padding 和 one-hot 操作共同出现,所以以下两种方法为有效且常用的方法:

一、keras.preprocessing.sequence.pad_sequences()

keras.utils.to_categorical和one hot格式解析

实例:

>>>list_1 = [[2,3,4]]
>>>keras.preprocessing.sequence.pad_sequences(list_1, maxlen=10)
array([[0, 0, 0, 0, 0, 0, 0, 2, 3, 4]], dtype=int32)

>>>list_2 = [[1,2,3,4,5]]
>>>keras.preprocessing.sequence.pad_sequences(list_2, maxlen=10)
array([[0, 0, 0, 0, 0, 1, 2, 3, 4, 5]], dtype=int32)

二、keras.utils.to_categorical()

to_categorical(y, num_classes=None, dtype='float32')

将整型标签转为onehot。y为int数组,num_classes为标签类别总数,大于max(y)(标签从0开始的)。

返回:如果num_classes=None,返回len(y) * [max(y)+1](维度,m*n表示m行n列矩阵,下同),否则为len(y) * num_classes。说出来显得复杂,请看下面实例。

import keras

ohl=keras.utils.to_categorical([1,3])
# ohl=keras.utils.to_categorical([[1],[3]])
print(ohl)
"""
[[0. 1. 0. 0.]
 [0. 0. 0. 1.]]
"""
ohl=keras.utils.to_categorical([1,3],num_classes=5)
print(ohl)
"""
[[0. 1. 0. 0. 0.]
 [0. 0. 0. 1. 0.]]
"""

以上这篇keras.utils.to_categorical和one hot格式解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python登录QQ邮箱发信的实现代码
Feb 10 Python
python获得图片base64编码示例
Jan 16 Python
python flask 多对多表查询功能
Jun 25 Python
Python 多核并行计算的示例代码
Nov 07 Python
python得到qq句柄,并显示在前台的方法
Oct 14 Python
python2与python3的print及字符串格式化小结
Nov 30 Python
Python生成器的使用方法和示例代码
Mar 04 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
Kmeans均值聚类算法原理以及Python如何实现
Sep 26 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 Python
python 使用多线程创建一个Buffer缓存器的实现思路
Jul 02 #Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 #Python
Python使用OpenPyXL处理Excel表格
Jul 02 #Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 #Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 #Python
如何基于Python爬取隐秘的角落评论
Jul 02 #Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 #Python
You might like
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
用于table内容排序
2006/07/21 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python实现自动上京东抢手机
2018/02/06 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
Python matplotlib可视化实例解析
2020/06/01 Python
写给女生的道歉信
2014/01/08 职场文书
课改先进个人汇报材料
2014/01/26 职场文书
家长建议怎么写
2014/05/15 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
实名检举信范文
2015/03/02 职场文书
七年级英语教学反思
2016/02/15 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
深入理解redis中multi与pipeline
2021/06/02 Redis