Python 如何在Scikit learn中使用不同的数据对管道进行再培训?

Python 如何在Scikit learn中使用不同的数据对管道进行再培训?,python,machine-learning,scikit-learn,pipeline,Python,Machine Learning,Scikit Learn,Pipeline,我使用管道进行机器学习模型培训,使用Python和sklearn对我所有历史数据的子集进行K-fold交叉验证(省略测试集),如下所示: pipeline = Pipeline([("combiner", PolynomialFeatures()), ("dimred", PCA()), ("classifier", RandomForestClassi

我使用管道进行机器学习模型培训,使用Python和sklearn对我所有历史数据的子集进行K-fold交叉验证(省略测试集),如下所示:

pipeline = Pipeline([("combiner", PolynomialFeatures()),
                     ("dimred", PCA()),
                     ("classifier", RandomForestClassifier())])

parameters = [...]

CV = GridSearchCV(pipeline, parameters, cv=5, scoring="f1_weighted", refit=True, n_jobs=-1)
CV.fit(train_X, train_y)

到目前为止,一切顺利。然而,在最后,我想在我完整的X和y上重新训练获胜的管道超参数组合,而不需要任何交叉验证。我怎么会有这个?简单地再次应用
CV.fit(X,y)
将使用CV重新执行整个交替过程,这显然是不必要的。我还可以解析CV.get_params()以获得最佳组合超参数,并相应地重新构建管道,但这似乎有些笨拙和不专业…

您的问题的答案在中。请参阅属性部分:
best\u estimator\u
是存储最佳模型的位置,因此您可以在完成拟合后从那里访问它。您可以通过直接调用“CV.best\u Estimaty”来使用它,您可以对它进行新的引用或对其进行pickle以供以后使用,即:

稍后,您可以加载模型以进行进一步的工作:

import joblib
my_pipeline = joblib.load('my_pipeline.pkl')
如果不需要模型,而只需要其超参数,则可以从
最佳参数
属性访问这些参数,即:

CV.best_params_

哪一个词典是构建新管道的最佳设置。

保存简历并加载以备日后使用如何?这不会改变管道中估计器的权重(或者,在本例中是:决策),而只会应用管道。我想要的是,根据CV的获胜公式,使用管道中的特定组件和超参数(因此保持不变),并根据新的、更大/更完整的数据重新计算管道中估计器的权重/决策逻辑,当然,不需要任何CV或进一步评估)。现在我只能手工操作(检查CV的报告并用最佳设置重新定义新管道)。
best\u estimator\u
是实际培训过程的结果。我不想使用这个管道#1,而是在另一个数据上使用管道#1的元素和超参数训练另一个管道#2。然后使用
最佳参数
,就像我在编辑后提到的那样。你应该阅读文档,看看你还能从CV结果中得到什么。是的,这是我想做的,但是有一个特定的管道,带有备选方案,best_params_uuu不知何故不起作用,不能返回完整的参数dict。请看:关于
CV.best_estimator_uu.get_params()
,就像公认的答案建议的那样?
CV.best_params_