Matlab One Hot Encoding - 将带有分类的列转换为几列逻辑值

Sek*_*oul 5 arrays statistics matlab data-analysis

语境

我有大量带有分类的列,所有列都有不同的、不可排名的选择。为了让我的分析更容易,我想将它们中的每一个都转换为具有逻辑的多个列。例如:

1   GENRE
2   Pop
3   Classical
4   Jazz
Run Code Online (Sandbox Code Playgroud)

……会变成……

1   Pop Classical Jazz
2   1       0      0
3   0       1      0
4   0       0      1
Run Code Online (Sandbox Code Playgroud)

问题

我尝试过使用ind2vec,但这仅适用于数字或逻辑。我也遇到过这个,但不确定它是否适用于分类。在这种情况下使用什么函数才是正确的?

gno*_*ice 3

如果您想从分类向量转换为逻辑数组,您可以使用该unique函数生成列索引,然后使用此相关问题中的任何选项执行编码:

\n\n
% Sample data:\ndata = categorical({\'Pop\'; \'Classical\'; \'Jazz\'; \'Pop\'; \'Pop\'; \'Jazz\'});\n\n% Get unique categories and create indices:\n[genre, ~, index] = unique(data)\n\ngenre = \n\n     Classical \n     Jazz \n     Pop \n\n\nindex =\n\n     3\n     1\n     2\n     3\n     3\n     2\n\n% Create logical matrix:\nmat = logical(accumarray([(1:numel(index)).\' index], 1))\n\nmat =\n\n  6\xc3\x973 logical array\n\n   0   0   1\n   1   0   0\n   0   1   0\n   0   0   1\n   0   0   1\n   0   1   0\n
Run Code Online (Sandbox Code Playgroud)\n