做分类任务的时候,对类别进行编码

示例,假定给定的 15 数据集类别是这样

1 1 2 5 3 5 3 1 4 1 2 2 4 3 1

想要编码为

1    1    0    0    0    0    0    1    0    1    0    0    0    0    1
0    0    1    0    0    0    0    0    0    0    1    1    0    0    0
0    0    0    0    1    0    1    0    0    0    0    0    0    1    0
0    0    0    0    0    0    0    0    1    0    0    0    1    0    0
0    0    0    1    0    1    0    0    0    0    0    0    0    0    0

便于后续处理,

matlab代码如下

    T = [1 1 2 5 3 5 3 1 4 1 2 2 4 3 ];
    NumberofTrainingData = length(T):
    label = unique(T);
    number_class = length(label);  %类别数
    temp_T=zeros(number_class, NumberofTrainingData);  %每一列代表训练集的一个数据
    for i = 1:NumberofTrainingData
        j = int32(T(1,i));       % T(1,i)就是第i个示例的类别(它默认为double,所以加了强制转换)
        % j = int32(T(1,i))+1;   % T(1,i)就是第i个示例的类别(它默认为double,所以加了强制转换),加一是因为matlab从1开始索引,如果我们的类别是0开始的
        temp_T(j,i)=1;     %第i个示例的类别是第j个类别,赋值为1
    end 
posted on 2021-06-12 10:25  雾恋过往  阅读(106)  评论(0编辑  收藏  举报

Live2D