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 中整型对象存储的位置
May 16 Python
Python实现爬虫爬取NBA数据功能示例
May 28 Python
Python代码块批量添加Tab缩进的方法
Jun 25 Python
Python函数参数操作详解
Aug 03 Python
python traceback捕获并打印异常的方法
Aug 31 Python
django框架模板语言使用方法详解
Jul 18 Python
python 提取文件指定列的方法示例
Aug 07 Python
python爬虫中多线程的使用详解
Sep 23 Python
python 成功引入包但无法正常调用的解决
Mar 09 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
Scrapy爬虫文件批量运行的实现
Sep 30 Python
pandas按条件筛选数据的实现
Feb 20 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中array_slice函数用法实例详解
2014/11/25 PHP
php创建多级目录的方法
2015/03/24 PHP
如何离线执行php任务
2017/02/21 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
详解vue axios二次封装
2018/07/22 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python strip lstrip rstrip使用方法
2008/09/06 Python
python显示天气预报
2014/03/02 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
运动会入场词100字
2014/02/06 职场文书
公司总经理岗位职责
2014/03/15 职场文书
社区居务公开实施方案
2014/03/27 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书