matlab - 从用于多类分类的标签生成向量矩阵(向量化)

标签 matlab matrix vector octave linear-algebra

我正在为一个多类分类器(m 个数据点,k 个类)构建我的输入。在我的输入中,我将训练数据的标签作为向量 y 中的整数(即 ym 维,并且 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/

相关文章:

matlab - MATLAB 中的向量串联

C++ vector.push_back() 使 m 程序崩溃

matlab - MATLAB 中使用马哈拉诺比斯距离的 T SNE 算法的错误

r - 来自矩阵的 Spearman 相关性

matlab - 如何在不在 Matlab 中制作副本的情况下提取子矩阵

matlab - 如何根据每一行将矩阵转换为一堆对角矩阵?

iphone - 这是制作指南针的方法吗?

matlab - 为什么在 Matlab 脚本中使用 gpuArray 时 a*b*a 比 (a'*(a*b )')' 花费的时间更长?

matlab - 绘制随机数的非满矩阵

python - num2cell() 的 python/numpy 等价物是什么?