Matlab onehot到整数

时间:2018-05-15 12:32:19

标签: matlab machine-learning indexing one-hot-encoding

我想在MATLAB中将onehot数组转换为整数值数组。给出:

Y =  1     0     0
     0     1     0
     0     1     0

我想回来:

new_y = 1
        2
        2

2 个答案:

答案 0 :(得分:5)

您可以使用find并仅返回列索引,如此

Y = [1 0 0; 0 1 0; 0 1 0];

[~, new_y] = find(Y);   % output: [1; 2; 2] is the col indices of your 1s

同样,如果您的输入是转置

,则可以返回行索引
[new_y, ~] = find(Y);   % output: [1; 2; 3] is the row indices of your 1s

答案 1 :(得分:1)

MATLAB的神经网络工具箱具有内置函数,用于在单热矢量和索引之间进行转换:ind2vec()以创建单热矩阵,以及vec2ind()来转换单热矩阵回到指数矢量。

注意:ind2vec返回稀疏矩阵。要将其转换为完整矩阵,您必须使用full()函数。

>> Y = full(ind2vec([1, 2, 3]))

Y =    

     1     0     0
     0     1     0
     0     0     1

>> new_y = vec2ind(Y)

new_y =

     1     2     3