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使用poplib模块和smtplib模块收发电子邮件的教程
Jul 02 Python
Python科学画图代码分享
Nov 29 Python
windows下python和pip安装教程
May 25 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
python 获取utc时间转化为本地时间的方法
Dec 31 Python
python画图--输出指定像素点的颜色值方法
Jul 03 Python
如何在mac环境中用python处理protobuf
Dec 25 Python
python函数map()和partial()的知识点总结
May 26 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
pyqt5实现井字棋的示例代码
Dec 07 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
Python中的 No Module named ***问题及解决
Jul 23 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
ext读取两种结构的xml的代码
2008/11/05 Javascript
javascript 表单验证常见正则
2009/09/28 Javascript
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
js点击选择文本的方法
2015/02/09 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
2018/01/13 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
vue将单页面改造成多页面应用的方法
2018/11/25 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
python selenium xpath定位操作
2020/09/01 Python
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
大学生创业项目方案
2014/03/08 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
社区文明倡议书
2015/04/28 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书