我正在为一个多类分类器(m 个数据点,k 个类)构建我的输入。在我的输入中,我将训练数据的标签作为向量 y 中的整数(即 y 是 m 维,并且 y 中的每个条目strong>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
(其中 ./
是按元素除法,.==
是按元素逻辑等于)。这通过设置中间矩阵中不完全为 1 到 0 的所有内容来实现我想要的。
但是这个解决方案看起来很愚蠢而且迂回。有没有我想念的更直接的方法?
最佳答案
您可以使用逻辑数组:
M = [1:k] == y;
关于matlab - 从用于多类分类的标签生成向量矩阵(向量化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25109239/