怎么把数据集的输出值转换成只含有0,1的标签向量

幽映每白日,清辉照衣裳。这篇文章主要讲述怎么把数据集的输出值转换成只含有0,1的标签向量相关的知识,希望能为你提供帮助。


举个例子:
某神经网络有5个输出值,分别对应1-5每个数字的输出概率,先有数据集x(i)x^(i)x(i),其输出值为,y=[1223444]y=\\beginbmatrix1\\\\2\\\\2\\\\3\\\\4\\\\4\\\\4\\\\\\endbmatrixy=??????????1223444??????????。但是我们在神经网络中计算代价函数的时候需要将其转换成对应的标签值(即,若x(i)的预期输出值为3,则ylabel=[00100]x^(i)的预期输出值为3,则y_label=\\beginbmatrix0\\\\0\\\\1\\\\0\\\\0\\endbmatrixx(i)的预期输出值为3,则ylabel=??????00100??????),那么该如何转换呢?
思路就是:
先建立一个单位矩阵,然后根据输出值y的,来选择其中对应的行

> > ey=eye(5)%建立一个5x5的单位矩阵(因为输出值有5种)

ey =

10000
01000
00100
00010
00001

> > y=[1 2 2 3 4 4 4]%y的原始输出值

label = ey(:,y)

label =

1000000
0110000
0001000
0000111
0000000

解释一下label=ey(:,y):
%ey(:,y)等价于ey(:,[1 2 2 3 4 4 4])等价于ey(:,[1; 2; 2; 3; 4; 4; 4])
%意思就是从单位矩阵ey中,选取第1,2,2,3,4,4,4列,赋值个label,这样恰好得到便签矩阵






【怎么把数据集的输出值转换成只含有0,1的标签向量】


    推荐阅读