Keras.utils.to_categorical()

发布时间:2023-05-22

一、简介

keras.utils.to_categorical(y, num_classes=None, dtype='float32') Keras提供了一个非常方便的方法to_categorical()将类向量(整数)转换为二进制类矩阵,从而更好地在神经网络中使用。作为一个机器学习工程师,解决分类问题是一个基本任务。to_categorical()函数是一个非常实用的工具,能够方便地将类转换为独热编码,以便分类模型更好地学习。

二、函数参数

1. y:整数列表或Numpy数组。要转换为独热编码的类别,需要是非负整数值的向量。
2. num_classes:期望的输出类别数。如果不指定,则会通过y值自动确定。
3. dtype:输出数组的数据类型。

三、函数功能

这个函数的主要功能就是把原始的类别标签转换为独热编码的形式,使得我们可以将它们当做分类问题中的特征输入到深度学习模型中进行训练。

四、代码示例

1、针对二分类问题的代码

from keras.utils import to_categorical
y_train_binary = to_categorical(y_train)                
y_test_binary = to_categorical(y_test)
print(y_train_binary)
print(y_test_binary)

上面的代码中,如果原始的类别标签是0或1,那么使用to_categorical()函数后,会得到一个包含2个列(对应0或1)的矩阵。

2、针对多分类问题的代码

y_train_categorical = to_categorical(y_train, num_classes=10)     
y_test_categorical = to_categorical(y_test, num_classes=10)
print(y_train_categorical)
print(y_test_categorical)

上面的代码中,将原始的类别标签转换为了一个包含10个列的矩阵,其中对应的位置上为1的列就是该样本所属的类别。

3、从NumPy数组获得独热编码的代码

import numpy as np
np_arr = np.array([1, 2, 3, 4, 5])
print(to_categorical(np_arr))

上面的代码中,独热编码基于类别标签创建由0和1组成的新数组。这个新数组的尺寸与原始的数据尺寸是相等的,但是新的数组将有n列,其中n是唯一的类完全的数量,而每一行(每个数据实例)则将具有一个1,其中列索引将是该数据实例的类别标签。

五、总结

Keras.utils.to_categorical()是一个非常方便的工具函数,能够将类别转换为独热编码,以方便深度学习模型学习。该函数可以处理多分类和二分类问题,并且可以处理NumPy数组和列表数据。