一个热编码列表列,包括附加置信度十进制数

Posted

技术标签:

【中文标题】一个热编码列表列,包括附加置信度十进制数【英文标题】:One hot encode columns of lists including additional confidence decimal number 【发布时间】:2021-12-06 10:09:09 【问题描述】:

我有一张表,我想对其进行一次热编码。我可以使用 pandas get_dummiessklearn MultiLabelBinarizer 来做到这一点,如 e.g. this *** post。正常的做法是这样的:

    categories              a   b   c   e
0   [a, b, c]           0   1   1   1   0
1   [c]          --->   1   0   0   1   0
2   [b, c, e]           2   0   1   1   1

但是,就我而言,我也对我的类别有信心。

    categories
0   [a:0.3, b:0.4, c:0.5]
1   [c:0.8]
2   [b:1, c:1, e:0.1]

我想将这些知识整合到我的决策树分类器中。 IE。我想以这种格式获取我的数据:

    a   b   c   e
0   0.3 0.4 0.5 0
1   0   0   0.8 0
2   0   1.0 1.0 0.1

我可以先构建一个普通的热编码表,然后通过遍历所有行来更改值。不过,我希望有更简单的方法。

如何对上表进行热编码并结合类别置信度的附加信息?

【问题讨论】:

【参考方案1】:

使用字典推导来扁平化字典的值:

df = (pd.DataFrame([k: v for d in x for k, v in d.items() for x in df['categories']])
        .fillna(0))
print (df)
     a    b    c    e
0  0.3  0.4  0.5  0.0
1  0.0  0.0  0.8  0.0
2  0.0  1.0  1.0  0.1

【讨论】:

以上是关于一个热编码列表列,包括附加置信度十进制数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将浮点数列表输出到二进制文件

编码

检查列是不是具有正确的十进制数

2.1数制与编码

字符编码

2.1 数值与编码