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实现的udp协议Server和Client代码实例
Jun 04 Python
python中查看变量内存地址的方法
May 05 Python
django框架如何集成celery进行开发
May 24 Python
Python中表示字符串的三种方法
Sep 06 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
Python中修改字符串的四种方法
Nov 02 Python
详解Python读取yaml文件多层菜单
Mar 23 Python
Python中的asyncio代码详解
Jun 10 Python
python getpass模块用法及实例详解
Oct 07 Python
django 实现简单的插入视频
Apr 07 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 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的ob_start();控制您的浏览器cache!
2007/02/14 PHP
PHP 多维数组排序实现代码
2009/08/05 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
对angular4子路由&辅助路由详解
2018/10/09 Javascript
jQuery实现轮播图效果demo
2020/01/11 jQuery
浅析TypeScript 命名空间
2020/03/19 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
Python 解析XML文件
2009/04/15 Python
Python中的魔法方法深入理解
2014/07/09 Python
基于MTCNN/TensorFlow实现人脸检测
2018/05/24 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
自学python用什么系统好
2020/06/23 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
求职简历中的自我评价分享
2013/12/08 职场文书
高一军训口号
2015/12/25 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python