从nx1二进制标签数组生成单热矢量

时间:2016-12-09 23:17:19

标签: python machine-learning scikit-learn one-hot-encoding

我有一个这样的数组:

X = [0,0,1,1,0,0,1,1,1,0,0,0]

我想创建一个nx2

的单热编码器向量
one_hotX = [[1,0],[1,0],[0,1],[0,1],[1,0]...]

有一种简单的方法吗? OneHotEncoder和LabelEncoder似乎无法正常工作。

1 个答案:

答案 0 :(得分:3)

如何自己构建矢量:

[[0, 1] if i else [1, 0] for i in X]

#[[1, 0],
# [1, 0],
# [0, 1],
# [0, 1],
# [1, 0],
# [1, 0],
# [0, 1],
# [0, 1],
# [0, 1],
# [1, 0],
# [1, 0],
# [1, 0]]

如果您正在使用numpy,您也可以执行此类操作(矢量化方法):

import numpy as np
code = np.array([[1,0],[0,1]])
arrX = np.array(X)

code[arrX]

#array([[1, 0],
#       [1, 0],
#       [0, 1],
#       [0, 1],
#       [1, 0],
#       [1, 0],
#       [0, 1],
#       [0, 1],
#       [0, 1],
#       [1, 0],
#       [1, 0],
#       [1, 0]])