我已经编写了一个带有fit
和transform
方法的自定义估计器类。我能够创建模型、训练并使用模型进行预测。
然而,在进行交叉验证时,我遇到了这个错误:TypeError: cannot deepcopy this pattern object
。
这是CustomEstimator
的代码样子:
class DefaultEstimator(BaseEstimator, TransformerMixin): def __init__(self, preprocessor, pipelines): self.preprocessor = preprocessor self.pipelines = pipelines def fit(self, X, y=None): for each_pipeline in self.pipelines: each_pipeline.fit(self.preprocessor.apply(X), y) return self def transform(self, X): transformed_data = [] for each_pipeline in self.pipelines: transformed_data.append(each_pipeline.transform(self.preprocessor.apply(X))) return sp.hstack(transformed_data)
有谁对解决这个问题有想法吗?
回答:
正如一些评论中建议的,这个错误是因为self.processor
无法进行深度克隆。
因此,解决这个错误的方法是将预处理步骤从这个类中移除,并将其作为独立的预处理步骤或移动到管道本身中。