如果你想在管道的中间步骤上拟合和转换数据,那么重用相同的管道并且更好地使用你指定的新管道是没有意义的,因为调用fit()会忘记以前学过的所有数据.
但是,如果您只想转换()并在已安装的管道上查看中间数据,则可以通过访问named_steps参数来实现.
new_pipe = sklearn.pipeline.Pipeline([('transformer1':
old_pipe.named_steps['transformer1']),
('transformer2':
old_pipe.named_steps['transformer2'])])
或直接使用内部变量步骤,如:
transformer_steps = old_pipe.steps
new_pipe = sklearn.pipeline.Pipeline([('transformer1': transformer_steps[0]),
('transformer2': transformer_steps[1])])
然后调用new_pipe.transform().
更新:
如果您具有0.18或更高版本,则可以将管道内的非必需估计器设置为None,以将结果输入到同一管道中.它在this issue at scikit-learn github年讨论过
在您的情况下用于上述:
pipe.set_params(clusterer=None)
pipe.transform(df)
但请注意,可能会将拟合的clusterer存储在其他位置,否则在需要使用该功能时需要再次适合整个管道.