OrdinalEncoder中handle_unknown='use_encoded_values'作用及用法咨询
OrdinalEncoder中use_encoded_value参数详解
核心含义
use_encoded_value是OrdinalEncoder的关键参数,用于定义模型遇到训练阶段未出现过的未知类别时的填充规则,目的是避免因未知类别导致的运行报错,提升模型对新数据的兼容性。
是否需要传入编码值参数?
- 当
use_encoded_value设为True时,必须配套指定unknown_value参数,明确未知类别对应的编码值; - 若保持默认值
False,则无需额外传编码值,此时遇到未知类别会直接抛出错误。
用法实例
实例1:默认行为(不处理未知类别)
from sklearn.preprocessing import OrdinalEncoder import numpy as np # 训练数据仅包含三类动物 X_train = np.array([['cat'], ['dog'], ['bird']]) encoder = OrdinalEncoder() encoder.fit(X_train) # 测试数据含未知类别'fish' X_test = np.array([['cat'], ['fish']]) # 执行transform会直接报错,因为默认不支持未知类别 # encoder.transform(X_test)
实例2:指定固定值填充未知类别
from sklearn.preprocessing import OrdinalEncoder import numpy as np X_train = np.array([['cat'], ['dog'], ['bird']]) # 初始化编码器,指定未知类别用-1填充 encoder = OrdinalEncoder(use_encoded_value=True, unknown_value=-1) encoder.fit(X_train) X_test = np.array([['cat'], ['fish'], ['dog']]) encoded_result = encoder.transform(X_test) print(encoded_result) # 输出:[[0.] [-1.] [1.]]
实例3:用训练集最大编码值+1作为填充值
from sklearn.preprocessing import OrdinalEncoder import numpy as np X_train = np.array([['cat'], ['dog'], ['bird']]) encoder = OrdinalEncoder() encoder.fit(X_train) # 训练集最大编码值为2(对应bird),设置填充值为3 encoder = OrdinalEncoder(use_encoded_value=True, unknown_value=encoder.categories_[0].size) X_test = np.array([['fish'], ['bird']]) encoded_result = encoder.transform(X_test) print(encoded_result) # 输出:[[3.] [2.]]
内容的提问来源于stack exchange,提问作者Remian-Feral
相关产品推荐
相关产品推荐

