我正在使用带有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.fitted_pipeline_中之前,tpot会使用整个数据集来调整优化后的管道吗?
还是说这代表了训练中最佳得分的训练


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

最佳答案

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

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

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


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


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

关于python - 使用TPOT CV进行拟合时,是否在整个数据集中重新训练了fit_pipeline_?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52008298/

10-09 18:22