如何查询分类变量的各取值与其对应编码标签的映射关系?
分类值与编码映射关系的查询方法
不同编码工具的映射存储逻辑不同,以下是主流场景下的查询方案:
场景1:使用pandas内置Categorical类型自动编码
如果你是通过astype('category')转换列类型后用cat.codes生成编码,可通过.cat.categories属性获取映射关系,属性返回值的索引就是对应分类的编码值:# 假设分类列名为level print(df['level'].cat.categories) # 输出示例:Index(['Bad', 'Good', 'Medium'], dtype='object') # 对应映射:Bad→0、Good→1、Medium→2如需直接生成
分类值:编码的字典,可使用以下代码:value_to_code = {val: idx for idx, val in enumerate(df['level'].cat.categories)}注意:pandas默认按字符串字典序生成分类顺序,如需按业务逻辑(如Bad→0、Medium→1、Good→2)排序,转换分类类型时需手动指定
categories参数场景2:使用sklearn的LabelEncoder编码
编码完成后,编码器的classes_属性存储了分类值的顺序,索引即为对应编码:# 假设你初始化的编码器对象名为le print(le.classes_) # 生成映射字典 value_to_code = {val: idx for idx, val in enumerate(le.classes_)}场景3:使用sklearn的OrdinalEncoder编码
OrdinalEncoder支持多列同时编码,categories_属性为列表,每个元素对应输入时每一列的分类顺序:# 假设你初始化的编码器对象名为oe,要查询的是输入时的第0列 print(oe.categories_[0])场景4:自定义map映射编码
如果是通过手动定义字典+map()方法生成编码,直接打印你之前定义的映射字典即可:# 示例自定义映射 custom_map = {'Bad':0, 'Medium':1, 'Good':2} df['level_code'] = df['level'].map(custom_map) # 直接打印custom_map就能拿到映射关系
内容的提问来源于stack exchange,提问作者Diksha Nasa
相关产品推荐
相关产品推荐

