欢迎访问宙启技术站
智能推送

使用Keras中的np_utils.to_categorical()函数进行多项分类处理

发布时间:2023-12-28 07:41:50

Keras是一个开源神经网络库,可以方便地搭建深度学习模型。在多项分类任务中,输出的标签是一个离散的类别,例如手写数字识别任务中有10个类别,分别表示0到9这10个数字。而神经网络的输出是一个连续的值,因此需要将离散的类别转化为连续的值,这就是多项分类处理。

Keras提供了一个非常方便的函数np_utils.to_categorical()来实现将离散的类别转化为连续的值,具体使用例子如下:

import numpy as np
from keras.utils import np_utils

# 定义一个包含5个类别的多项分类任务,共有100个样本
num_samples = 100
num_classes = 5

# 生成随机的样本标签
y = np.random.randint(num_classes, size=num_samples)
print('原始的样本标签:', y)

# 将原始的样本标签转化为独热编码
y_categorical = np_utils.to_categorical(y, num_classes)
print('转化为独热编码后的样本标签:', y_categorical)

上述代码中,首先导入了必要的库,然后定义了一个包含5个类别的多项分类任务,共有100个样本。其次,使用np.random.randint()函数生成了100个随机的样本标签,表示每个样本对应的类别。随后,使用np_utils.to_categorical()函数将原始的样本标签转化为独热编码。在这个例子中,np_utils.to_categorical()函数的第一个参数是原始的样本标签,第二个参数是类别的数量,即num_classes。最后,打印出转化为独热编码后的样本标签。

运行上述代码,可以得到输出结果如下:

`

原始的样本标签: [0 2 4 2 3 1 0 1 4 2 3 3 0 4 3 3 4 2 1 0 4 3 3 1 4 1 1 0 3 4 3 3 3 3 0 2 2 1

1 2 3 3 0 3 3 0 1 2 2 3 4 0 2 1 3 2 3 1 1 3 3 3 2 4 3 3 4 1 0 2 2 3 4 0 1 1 1

2 4 4 3 4 3 2 3 1 4 0 1 4 2 0 2 2 3 4 3 0 2 2 1 4 0 1]

转化为独热编码后的样本标签: [[1. 0. 0. 0. 0.]

[0. 0. 1. 0. 0.]

[0. 0. 0. 0. 1.]

[0. 0. 1. 0. 0.]

[0. 0. 0. 1. 0.]

[0. 1. 0. 0. 0.]

[1. 0. 0. 0. 0.]

[0. 1. 0. 0. 0.]

[0. 0. 0. 0. 1.]

[0. 0. 1. 0. 0.]

[0. 0. 0. 1. 0.]

[0. 0. 0. 1. 0.]

[1. 0. 0. 0. 0.]

[0. 0. 0. 0. 1.]

[0. 0. 0. 1. 0.]

[0. 0. 0. 1. 0.]

[0. 0. 0. 0. 1.]

[0. 0. 1. 0. 0.]

[0. 1. 0. 0. 0.]

[1. 0. 0. 0. 0.]

[0. 0. 0. 0. 1.]

[0. 0. 0. 1. 0.]

[0. 0. 0. 1. 0.]

[0. 1. 0. 0. 0.]

[0. 0. 0. 0. 1.]

[0. 1. 0. 0. 0.]

[0. 1. 0. 0. 0.]

[1. 0. 0. 0. 0.]

[0. 0. 0. 1. 0.]

[0. 0. 0. 0. 1.]

[0. 0. 0. 1. 0.]

[0. 0. 0. 1. 0.]

[0. 0. 0. 1. 0.]

[1. 0. 0. 0. 0.]

[0. 0. 1. 0. 0.]

[0. 0. 1. 0. 0.]

[0. 1. 0. 0. 0.]

[0. 1. 0. 0. 0.]

[0. 0. 1. 0. 0.]

[0. 0. 0. 1. 0.]

[1. 0. 0. 0. 0.]

[0. 0. 1. 0. 0.]

[0. 0. 1. 0. 0.]

[0. 1. 0. 0. 0.]

[0. 1. 0. 0. 0.]

[0. 0. 1. 0. 0.]

[0. 0. 0. 1. 0.]

[1. 0. 0. 0. 0.]

[0. 0. 0. 0. 1.]

[0. 0. 0. 1. 0.]

[1. 0. 0. 0. 0.]

[0. 1. 0. 0. 0.]

[0. 0. 1. 0. 0.]

[0. 0. 1. 0. 0.]

[0. 0. 0. 1. 0.]

[0. 0. 1. 0. 0.]

[0. 0. 1. 0. 0.]

[1. 0. 0. 0. 0.]

[0. 0. 0