onehotcoder,带管道和交叉值

ngynwnxp  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(194)

我正在做以下工作:

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\u val']”
我在onehotencoder上定制了transformer类,它只打印输入参数的形状并调用基类。输入数据集的形状是(32561,14)。在交叉评分过程中,我得到以下信息:

fit_transform (26048, 8)
fit (26048, 8)
transform (26048, 8)
transform (6513, 8)

据我所知,这意味着onehotencoder从未在整个数据集上进行过训练。数据集是以这样一种方式分离的,即在部件(26048,8)上训练的部分没有这个“some_val”值,但在上一次变换(6513,8)中使用的部分有这个值。
用管道和交叉值分数使用这个编码器的正确方法是什么?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题