怎么把数据集的输出值转换成只含有0,1的标签向量
Posted 月来客栈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么把数据集的输出值转换成只含有0,1的标签向量相关的知识,希望对你有一定的参考价值。
举个例子:
某神经网络有5个输出值,分别对应1-5每个数字的输出概率,先有数据集 x ( i ) x^(i) x(i),其输出值为, y = [ 1 2 2 3 4 4 4 ] y=\\beginbmatrix1\\\\2\\\\2\\\\3\\\\4\\\\4\\\\4\\\\\\endbmatrix y=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡1223444⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤。但是我们在神经网络中计算代价函数的时候需要将其转换成对应的标签值(即,若 x ( i ) 的 预 期 输 出 值 为 3 , 则 y l a b e l = [ 0 0 1 0 0 ] x^(i)的预期输出值为3,则y_label=\\beginbmatrix0\\\\0\\\\1\\\\0\\\\0\\endbmatrix x(i)的预期输出值为3,则ylabel=⎣⎢⎢⎢⎢⎡00100⎦⎥⎥⎥⎥⎤),那么该如何转换呢?
思路就是:
先建立一个单位矩阵,然后根据输出值y的,来选择其中对应的行
>> ey=eye(5)%建立一个5x5的单位矩阵(因为输出值有5种)
ey =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
>>y=[1 2 2 3 4 4 4]%y的原始输出值
label = ey(:,y)
label =
1 0 0 0 0 0 0
0 1 1 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 1 1 1
0 0 0 0 0 0 0
解释一下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的标签向量的主要内容,如果未能解决你的问题,请参考以下文章
thinkphp模板html中用php输出html的标签中含有变量,怎么才能输出?
matlab里如何把一个矩阵相同列向量的列序号依次输出出来?