【问题标题】:Generate one-hot vector from a nx1 array of binary labels从 nx1 二进制标签数组生成 one-hot 向量
【发布时间】:2016-12-09 23:17:18
【问题描述】:

我有一个这样的数组:

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

我想创建一个 nx2 的 one-hot 编码器向量

one_hotX = [[1,0],[1,0],[0,1],[0,1],[1,0]...]

有没有简单的方法来做到这一点? OneHotEncoder 和 LabelEncoder 似乎不起作用。

【问题讨论】:

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


    【解决方案1】:

    自己构造向量怎么样:

    [[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]])
    

    【讨论】:

    • @ayhan 确实。 X 不需要是数组。
    猜你喜欢
    • 1970-01-01
    • 2019-06-20
    • 2020-03-12
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2017-07-27
    相关资源
    最近更新 更多