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数据结构树和二叉树简介
Apr 29 Python
30分钟搭建Python的Flask框架并在上面编写第一个应用
Mar 30 Python
Python随机生成带特殊字符的密码
Mar 02 Python
python 字典(dict)按键和值排序
Jun 28 Python
python多进程实现进程间通信实例
Nov 24 Python
python实现泊松图像融合
Jul 26 Python
Django框架的中的setting.py文件说明详解
Oct 15 Python
pandas DataFrame 行列索引及值的获取的方法
Jul 02 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
Python中对象的比较操作==和is区别详析
Feb 12 Python
python中redis包操作数据库的教程
Apr 19 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实现文件安全下载
2006/10/09 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
jQuery cdn使用介绍
2013/05/08 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python实现中值滤波去噪方式
2019/12/18 Python
python datetime处理时间小结
2020/04/16 Python
Python中Selenium库使用教程详解
2020/07/23 Python
python爬虫请求头的使用
2020/12/01 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
关于工资低的辞职信
2014/01/14 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
教师工作决心书
2015/02/04 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
城南旧事读书笔记
2015/06/29 职场文书
学习心得体会
2019/06/20 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书
七年级作文之游记
2019/12/11 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python