matlab给矩阵的某几列打one-hot标签的代码
时间: 2023-12-10 18:38:33 浏览: 91
假设你要给矩阵 `A` 的第 `cols` 列打 one-hot 标签。可以使用以下代码:
```matlab
% 定义要打标签的列
cols = [2, 4, 6];
% 获取这些列的数据
B = A(:, cols);
% 获取每列的唯一值
uniques = unique(B);
% 创建一个全零矩阵,行数与 A 相同,列数为所有唯一值的个数
onehot = zeros(size(A, 1), numel(uniques));
% 给每行对应的位置赋值为 1
for i = 1:numel(cols)
onehot(:, B(:, i) == uniques) = 1;
end
% 将 onehot 矩阵插入到 A 矩阵中
A = [A(:, 1:cols(1)-1), onehot, A(:, cols(end)+1:end)];
```
在以上代码中,首先定义了要打标签的列 `cols`,然后获取这些列的数据。接着获取每列的唯一值,并创建一个全零矩阵 `onehot`。最后,遍历每个要打标签的列,给每行对应的位置赋值为 1。最后将 `onehot` 矩阵插入到 `A` 矩阵中。
阅读全文