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 02 Python
Python实现GUI学生信息管理系统
Apr 05 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
Feb 21 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
python通过实例讲解反射机制
Oct 17 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
Feb 13 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 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
利用js调用后台php进行数据处理原码
2006/10/09 PHP
删除数组元素实用的PHP数组函数
2008/08/18 PHP
php记录日志的实现代码
2011/08/08 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
php实现登陆模块功能示例
2016/10/20 PHP
浅谈Javascript事件处理程序的几种方式
2012/06/27 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
vue中监听返回键问题
2019/08/28 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
python开发之文件操作用法实例
2015/11/13 Python
Zabbix实现微信报警功能
2016/10/09 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
争论的故事教学反思
2014/02/06 职场文书
舞蹈毕业生的自我评价
2014/03/05 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
现场活动策划方案
2014/08/22 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery