如何解决带有管道和 cross_val_score 的 OneHotEncoder
我正在做以下事情:
def make_trans(verbose=False):
ct = ColumnTransformer(
[
('num',StandardScaler(),num_cols),('cat',TestEncoder(),cat_cols)
],verbose=verbose
)
return ct
def make_pipe(clf,verbose=False):
ct = make_trans(verbose)
pipe = Pipeline([("transformer",ct),("classifier",clf)],verbose=verbose)
return pipe
lr3 = LogisticRegression()
lr3p = make_pipe(lr3)
scores = cross_val_score(lr3p,df,target,cv=cvFoldsNo,error_score="raise")
但它给了我这个错误: “ValueError:在转换期间在第 7 列中发现未知类别 ['some_val']”
我在 OneHotEncoder 之上制作了自定义转换器类,它只打印输入参数的形状并调用基类。 输入数据集的形状是 (32561,14)。 在 cross_val_score 通话期间,我得到了这个:
fit_transform (26048,8)
fit (26048,8)
transform (26048,8)
transform (6513,8)
据我所知,这意味着 OneHotEncoder 从未在整个数据集上进行过训练。并且数据集以这样一种方式分离,即在部分 (26048,8) 上训练没有这个 'some_val' 值,但在最后一次转换 (6513,8) 中使用的部分 - 拥有它。
将此编码器与管道和 cross_val_score 一起使用的正确方法是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。