我用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)
有人有解决此问题的想法吗?
答案 0 :(得分:0)
我建议将预处理器放在管道内部。 public function attachAnyChoice()
{
return false;
}
会尝试复制估算器的参数,当估算器在调用Cross_val_score
时无法返回参数时,它将中断。
我不确定您的管道参数是否为Sklearn管道,因为管道对象不可迭代。
答案 1 :(得分:0)
正如一些评论所建议的,此错误是因为 import { RouterModule } from '@angular/router';
@NgModule({
...
imports: [
...
RouterModule.forRoot(appRoutes)
],
...
})
export class AppModule{}
无法被深克隆。
因此,此错误的解决方法是从此类中删除预处理步骤,并将其作为独立的预处理步骤或在管道本身内部移动。