以下是与问题相关的一部分代码。如果需要完整代码,这里有一个可以下载数据的完整可重现代码:https://github.com/ageron/handson-ml2/blob/master/02_end_to_end_machine_learning_project.ipynb
我有一个管道:
prepare_select_and_predict_pipeline = Pipeline([ ('preparation', full_pipeline), ('feature_selection', TopFeatureSelector(feature_importances, k)), ('svm_reg', SVR(**rnd_search.best_params_))])
现在,我只想执行上述管道中的这部分:
('preparation', full_pipeline),('feature_selection', TopFeatureSelector(feature_importances, k)),
我尝试了prepare_select_and_predict_pipeline.fit(housing, housing_labels)
,但它也执行了SVM部分。
最终,我需要从上述管道中获得与下面代码执行相同的结果:
preparation_and_feature_selection_pipeline = Pipeline([ ('preparation', full_pipeline), ('feature_selection', TopFeatureSelector(feature_importances, k))])housing_prepared_top_k_features = preparation_and_feature_selection_pipeline.fit_transform(housing)
我该如何做到这一点?
回答:
FeatureUnion
可以解决这个问题:
from sklearn.pipeline import FeatureUnion, Pipelineprepare_select_pipeline = Pipeline([ ('preparation', full_pipeline), ('feature_selection', TopFeatureSelector(feature_importances, k))])feats = FeatureUnion([('prepare_and_select', prepare_select_pipeline)])prepare_select_and_predict_pipeline = Pipeline([('feats', feats), ('svm_reg', SVR(**rnd_search.best_params_))])
您可以在深入了解Sklearn管道中找到更多相关信息