【问题标题】:Map classes to Pandas one hot encoding将类映射到 Pandas 一种热编码
【发布时间】:2021-12-17 16:25:27
【问题描述】:

给定以下顺序:

[I, Z, S, I, I, J, N, J, I]

并给出以下 Pandas 数据框:

char  fricative  nasal  lateral  labial  coronal  dorsal  frontal
I             0      0        0       0        0       0        1
J             0      0        1       0        1       0        1
N             0      1        0       0        0       1        0
S             1      0        0       0        1       0        0
Z             1      0        0       0        1       0        0

如何将序列中的每个字符映射到数据帧中对应的一个热向量?

【问题讨论】:

    标签: python pandas dataframe one-hot-encoding multilabel-classification


    【解决方案1】:

    用途:

    df = df.set_index("char")
    res = df.loc[sequence, :].to_numpy().tolist()
    

    输出

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

    更新

    如果您还想要活动类别,您可以使用布尔掩码直接索引到列中,如下所示:

    df = df.set_index("char")
    res = [df.columns[row.astype(bool)].tolist() for row in df.loc[sequence, :].to_numpy()]
    print(res)
    

    输出

    [['frontal'], ['fricative', 'coronal'], ['fricative', 'coronal'], ['frontal'], ['frontal'], ['lateral', 'coronal', 'frontal'], ['nasal', 'dorsal'], ['lateral', 'coronal', 'frontal'], ['frontal']]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-02
      • 2021-04-11
      • 1970-01-01
      • 2011-05-30
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      相关资源
      最近更新 更多