如何在Python中将标记集转换为属性元组(“多热”编码)?

时间:2017-07-04 08:49:41

标签: python one-hot-encoding

我有一组标记tags以及所有可能标记taglist的有序列表。现在我想将一组标签转换为“多热”编码,即获得一个与taglist长度相同的列表或元组,其中有一个位于其中的所有标签所在的位置和其他平台中的零。< / p>

目前我做的是直截了当:

        multihot = []
        for i in range(len(taglist)):
            tag = taglist[i]
            if tag in tags:
                multihot.append(1)
            else:
                multihot.append(0)

是否可以写一个班轮?

3 个答案:

答案 0 :(得分:2)

library(zoo)
df$new_col <- na.locf(df$value, maxgap = 7, na.rm = FALSE)

multihot现在包含True或False条目。在Python中,True的行为与1完全相同,False为0;所以这相当于你的解决方案。

答案 1 :(得分:1)

你可以通过列表理解来达到它,添加条件是否标签在标签中,如果是,则插入1否则为0.

multihot = [1 if tag in tags else 0 for tag in taglist]

答案 2 :(得分:0)

给我的声音就像您正在执行多标签编码一样。 sklearn可以为您做到这一点:

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MultiLabelBinarizer.html#sklearn.preprocessing.MultiLabelBinarizer