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实现简单的TCP代理服务器
Oct 08 Python
Python求两个list的差集、交集与并集的方法
Nov 01 Python
在Python编程过程中用单元测试法调试代码的介绍
Apr 02 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
不可错过的十本Python好书
Jul 06 Python
python3爬虫之设计签名小程序
Jun 19 Python
Python 确定多项式拟合/回归的阶数实例
Dec 29 Python
Django REST framework 分页的实现代码
Jun 19 Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 Python
Python (Win)readline和tab补全的安装方法
Aug 27 Python
浅谈Django中的QueryDict元素为数组的坑
Mar 31 Python
Matlab如何实现矩阵复制扩充
Jun 02 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编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
vue实现动态数据绑定
2017/04/28 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
Python ORM编程基础示例
2020/02/02 Python
python读写文件write和flush的实现方式
2020/02/21 Python
如何在python中实现线性回归
2020/08/10 Python
医学毕业生自荐信
2013/10/11 职场文书
门卫岗位安全职责
2013/12/13 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
初中学生评语大全
2014/04/24 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
火锅店的活动方案
2014/08/15 职场文书
教师个人发展总结
2015/02/11 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
MySQL 分组查询的优化方法
2021/05/12 MySQL
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers