使用TPOT CV进行拟合时,是否在整个数据集中重新训练了fit_pipeline_?

时间:2018-08-24 16:16:49

标签: python machine-learning scikit-learn tpot

我正在使用带有TPOTRegressor的LeaveOutGroupOut CV策略

from tpot import TPOTRegressor
from sklearn.model_selection import LeaveOneGroupOut

tpot = TPOTRegressor(
    config_dict=regressor_config_dict,
    generations=100,
    population_size=100,
    cv=LeaveOneGroupOut(),
    verbosity=2,
    n_jobs=1)

tpot.fit(XX, yy, groups=groups)

优化后,最佳得分训练有素的管道存储在tpot.fitted_pipeline_中,并且tpot.fitted_pipeline_.predict(X)可用。

我的问题是:将对装配好的管道进行哪些培训?例如

  • tpot在将其存储到tpot.fitted_pipeline_之前是否使用整个数据集对优化后的管道进行了调整?
  • 或者这将代表在训练期间获得最佳评分的训练有素的管道

此外,是否有一种方法可以访问与获胜/优化管道的拆分组相对应的完整训练模型集?

1 个答案:

答案 0 :(得分:2)

TPOT将适合完整训练集上的最终“最佳”流程:code

因此,如果您打算通过TPOT对象直接与“最佳”管道进行交互,建议不要将测试数据传递给TPOT拟合函数。

如果这对您来说是个问题,则可以直接通过tpot.fitted_pipeline_属性来重新训练管道,该属性只是一个sklearn Pipeline对象。另外,您可以使用export函数将“最佳”管道导出到其相应的Python代码并与TPOT外部的管道进行交互。

  

此外,是否有一种方法可以访问与获胜/优化管道的拆分组相对应的完整训练模型集?

不。 TPOT在评估管道时使用sklearn的cross_val_score,因此它从CV流程中排除了一组经过训练的管道。但是,您可以通过tpot.evaluated_individuals_属性访问TPOT评估的每个管道的得分结果。