使用defaultdict中的LabelEncoder时,如何获取LabelEncoder.classes_?
如何获取defaultdict中LabelEncoder的类别信息?
嘿,这个问题其实很直接!你用defaultdict(LabelEncoder)构建的label_dict里,每个键都是DataFrame的列名,对应的值是已经完成fit的LabelEncoder实例——所以直接通过列名访问对应实例的**classes_**属性就可以拿到该列的所有类别了。
举个具体的例子:
假设你的DataFrame有一列叫product_type,要获取这一列的训练类别,只需要写:
label_dict['product_type'].classes_
这会返回一个包含该列所有唯一类别的numpy数组。
如果想要批量查看所有列的类别,可以遍历这个defaultdict:
for column_name, encoder in label_dict.items(): print(f"列 {column_name} 的训练类别: {encoder.classes_}")
另外,针对你提到的测试集新类别处理的需求,这里给个实用小技巧:拿到classes_后,你可以先判断测试集的样本是否属于训练过的类别,再做编码,比如把未知类别映射为一个特定值(比如-1):
import numpy as np # 处理测试集的某一列 test_column = test_df['product_type'] encoder = label_dict['product_type'] # 将不在训练类别中的值映射为-1,其余正常编码 encoded_test_col = np.where( test_column.isin(encoder.classes_), encoder.transform(test_column), -1 )
内容的提问来源于stack exchange,提问作者user2086002
相关产品推荐
相关产品推荐

