利用分类器做有监督学习时,需要将手工标定的类别转化为单位向量。下面介绍两个不依赖循环实现的版本。
例如,手头有标记向量,需要转化成类别矩阵M。即当 y(c) = r 时 M(r, c) 为1,否则为0。
numCases = size(labels,1); %样本个数
版本1:利用命令eye:
label = eye(numCases);
groundTruth = label(labels, :);
版本2:利用命令sparse和full:
命令 M = sparse(r, c, v) 创建一个稀疏矩阵,使得对所有i,有M(r(i), c(i)) = v(i)。即,向量r(i)、c(i)给出需要置v(i)值的位置。
接着对此稀疏矩阵使用full命令,会获得对应的完全矩阵版本。
groundTruth = full(sparse(labels, 1:numCases, 1));
例如,手头有标记向量,需要转化成类别矩阵M。即当 y(c) = r 时 M(r, c) 为1,否则为0。
numCases = size(labels,1); %样本个数
版本1:利用命令eye:
label = eye(numCases);
groundTruth = label(labels, :);
版本2:利用命令sparse和full:
命令 M = sparse(r, c, v) 创建一个稀疏矩阵,使得对所有i,有M(r(i), c(i)) = v(i)。即,向量r(i)、c(i)给出需要置v(i)值的位置。
接着对此稀疏矩阵使用full命令,会获得对应的完全矩阵版本。
groundTruth = full(sparse(labels, 1:numCases, 1));
本文介绍了两种高效的方法,用于将已标记的数据集从类别标签形式转换为单位向量形式,适用于有监督学习任务。第一种方法利用了MATLAB中的eye命令;第二种方法则结合使用了sparse和full命令来创建和展开稀疏矩阵。
3万+

被折叠的 条评论
为什么被折叠?



