从标签生成矢量矩阵,用于多类分类(矢量化)

eth*_*day 4 matlab vector matrix linear-algebra octave

我正在为多类分类器(m个数据点,k个类)构建输入.在我的输入中,我将训练数据的标签作为向量y中的整数(即ym维,y中的每个条目是1和k之间的整数).

我想将其转换为m x k矩阵.每行在索引处对应于该数据点的标签处为1,否则为0(例如,如果数据点具有标签3,则该行看起来像[0 0 1 0 0 0 0 ...]).

我可以通过构造一个矢量a = [1 2 3 4 ... k]然后计算来做到这一点

M_ = y*(1./b)
M = M_ .== 1
Run Code Online (Sandbox Code Playgroud)

(./元素划分在哪里,.==元素逻辑等于).这通过将中间矩阵中的所有内容设置为不完全为1到0来实现我想要的.

但这个解决方案似乎很愚蠢.有没有更直接的方式让我失踪?

Mar*_*sch 9

您可以使用逻辑数组:

M = [1:k] == y;
Run Code Online (Sandbox Code Playgroud)