做分类任务的时候,对类别进行编码
示例,假定给定的 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