机器学习中,经常需要将label matrix (0-1)与 label 向量(为类别标签)进行相互转换。前者是在机器学习的模型中广泛使用,后者在分类(聚类)结果的评价中使用。下面提供python和matlab的两个平台上面的函数代码。
1、python code
import numpy as np
# label vector converted to label matrix
def label2matrix(label):
label = np.array(label)
uq_la = np.unique(label)
c = uq_la.shape[0]
n = label.shape[0]
label_mat = np.zeros((n,c))
for i in range(c):
index = (label == i+1)
label_mat[index,i]=1
return label_mat
# label matrix converted to label vector
def matrix2label(label_mat):
label_mat = np.array(label_mat)
n,c = label_mat.shape
label = np.zeros((n,))
for i in range(c):
label[label_mat[:,i]==1] = i+1
return label
2、matlab
function label_mat = label2matrix(label)
uq_label = unique(label);
n = length(label);
c = length(uq_label);
label_mat = zeros(n,c);
for i = 1:c
index = label == i;
label_mat(index,i) = 1;
end
end
function label_vec = matrix2label(matrix)
[n,c] = size(matrix);
label_vec = zeros(1,n)
for i = 1:c
label_vec(matrix(:,i)==1) = i
end
end