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 相关文章推荐
python3使用tkinter实现ui界面简单实例
Jan 10 Python
pycharm 使用心得(二)设置字体大小
Jun 05 Python
python实现根据ip地址反向查找主机名称的方法
Apr 29 Python
简介Django中内置的一些中间件
Jul 24 Python
python更新列表的方法
Jul 28 Python
Python中的super()方法使用简介
Aug 14 Python
Python数据可视化正态分布简单分析及实现代码
Dec 04 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
使用Python实现 学生学籍管理系统
Nov 26 Python
python 三种方法实现对Excel表格的读写
Nov 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
BBS(php & mysql)完整版(七)
2006/10/09 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
php自定义session示例分享
2014/04/22 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
JS精确判断数据类型代码实例
2019/12/18 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
js实现小时钟效果
2020/03/25 Javascript
在Django的视图中使用form对象的方法
2015/07/18 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
django框架自定义用户表操作示例
2018/08/07 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
Python之指数与E记法的区别详解
2019/11/21 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
个人简历中自我评价
2014/02/11 职场文书
银行求职信范文
2014/05/26 职场文书
集体生日活动方案
2014/08/18 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
英语复习计划
2015/01/19 职场文书
运动会宣传稿100字
2015/07/23 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL