在 Python 中,to_categorical 是 Keras 库中的一个函数,用于将标签数据转换为独热编码(One-Hot Encoding)格式,它常用于分类任务中,特别是在使用 Keras 进行深度学习模型训练时。
🔹 基本用法
from keras.utils import to_categorical labels = [0, 1, 2, 3, 4] num_classes = 5 one_hot_labels = to_categorical(labels, num_classes) print(one_hot_labels)
输出:
[[1. 0. 0. 0. 0.] [0. 1. 0. 0. 0.] [0. 0. 1. 0. 0.] [0. 0. 0. 1. 0.] [0. 0. 0. 0. 1.]]
🔹 参数说明
y:输入标签,可以是整数数组或列表。num_classes:类别总数(可选),如果不提供,Keras 会自动根据最大标签值加 1 来确定。
🔹 示例:图像分类任务
假设你有一个包含 1000 张图像的数据集,每张图片属于 10 个类别之一:
import numpy as np from keras.utils import to_categorical # 假设 y 是形状为 (1000,) 的标签数组,每个元素是 0~9 的整数 y = np.random.randint(0, 10, 1000) # 转换为 one-hot 编码 y_one_hot = to_categorical(y, num_classes=10) print(y_one_hot.shape) # 输出: (1000, 10)
🔹 注意事项
to_categorical返回的是浮点型数组(float32),这是为了兼容神经网络中的损失函数(如categorical_crossentropy)。- 如果你使用的是
sparse_categorical_crossentropy,则不需要进行 one-hot 编码,可以直接使用原始整数标签。
🔹 替代方法(不使用 Keras)
如果你不想依赖 Keras,可以用 NumPy 手动实现类似功能:
import numpy as np
def to_categorical_manual(labels, num_classes):
return np.eye(num_classes)[labels]
labels = [0, 1, 2]
one_hot = to_categorical_manual(labels, num_classes=5)
print(one_hot)
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/476823.html



