当你在处理分类问题时,数据集的标签(类别)可能是从0到n-1的整数,其中n是类别的总数。有时候,在进行模型训练之前,你可能想要改变类别的顺序或者重新编号。这可以通过class_order数组来实现。
问题描述:已知有数据集,将其原有的标签ori_class_order映射为新的标签new_class_order
# 原始类别顺序
ori_class_order = ['cat':0, 'dog':1, 'bird':2, 'fish':3]
# 训练数据集的原始目标标签
train_targets = ['dog', 'cat', 'bird', 'fish', 'dog', 'cat']
# 测试数据集的原始目标标签
test_targets = ['bird', 'fish', 'dog']
print("原始的训练目标标签:", train_targets)
print("原始的测试目标标签:", test_targets)
原始的训练目标标签: [1, 0, 2, 3, 1, 0]
原始的测试目标标签: [2, 3, 1]
将类别重新映射为新的顺序:
# 新的类别顺序
new_class_order = {'cat': 1, 'dog': 0, 'bird': 3, 'fish': 2}
# 使用class_order重新映射训练数据集和测试数据集的目标标签
new_train_targets = [new_class_order[label] for label in train_targets]
new_test_targets = [new_class_order[label] for label in test_targets]
print("重新映射后的训练目标标签:", new_train_targets)
print("重新映射后的测试目标标签:", new_test_targets)
重新映射后的训练目标标签: [0, 1, 3, 2, 0, 1]
重新映射后的测试目标标签: [3, 2, 0]