示例,假定给定的 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