我正在做以下工作:
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)中使用的部分有这个值。
用管道和交叉值分数使用这个编码器的正确方法是什么?
暂无答案!
目前还没有任何答案,快来回答吧!