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,但这仅适用于数字或逻辑。我也遇到过这个,但不确定它是否适用于分类。在这种情况下使用什么函数才是正确的?
如果您想从分类向量转换为逻辑数组,您可以使用该unique函数生成列索引,然后使用此相关问题中的任何选项执行编码:
% 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\nRun Code Online (Sandbox Code Playgroud)\n