python - 从标签编码器获取标签映射

标签 python python-3.x machine-learning scikit-learn

我正在使用以下代码将字符串标签列表映射到单热编码值列表:

from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder  
labelEncoder = LabelEncoder()
targets = ["blue","green","blue","blue","green"]    
integerEncoded = labelEncoder.fit_transform(targets)

在稍后阶段,我需要确切地知道哪些字符串标签映射到哪些整数值。

即我需要这样的东西:

integerMapping = GetIntegerMapping(labelEncoder)

在哪里

integerMapping["blue"]

应该返回所有“蓝色”标签映射到的 int 值

integerMapping["green"]

应该返回所有“绿色”标签映射到的 int 值。

我怎样才能得到 integerMapping 字典?

最佳答案

您可以使用 LabelEncoder.classes_LabelEncoder.transform() 来获得您所要求的关系。以下函数应该可以满足您的需求。

def get_integer_mapping(le):
    '''
    Return a dict mapping labels to their integer values
    from an SKlearn LabelEncoder
    le = a fitted SKlearn LabelEncoder
    '''
    res = {}
    for cl in le.classes_:
        res.update({cl:le.transform([cl])[0]})

    return res

示例用法:

classes = ['blue', 'green']
le = LabelEncoder()
le.fit(classes)
integerMapping = get_integer_mapping(le)

integerMapping['blue']  # Returns 0
integerMapping['green']  # Returns 1

如果您有大量的类,由于 for 循环,这可能不会很快,但它应该适用于少量的类。

更新:

刚刚在适合 10,000 个类的 LabelEncoder 上计时。以下是结果:

%timeit get_integer_mapping(le)
1 loop, best of 3: 17.1 s per loop

它实际上比我预期的更高效。

关于python - 从标签编码器获取标签映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50834820/

相关文章:

python - 经过一些迭代后,损失突然变成了 Nan

python-3.x - 如何使用LSTM对图像进行时间序列预测?

sql-server - 从 Python 连接到 SQL Server

python - django + uwsgi,在哪里放置我的启动代码?

python - 用Python画一颗有 turtle 的星星

python - 如何在 Windows 7 的虚拟环境中运行 py 文件?

machine-learning - 如何针对噪声(分散)数据选择回归算法?

python - 张量运算的导数

python - SCons- *** 未找到 SConstruct 文件

python - 使用 item[n-1] + item[and] 内存的生成器