2

我正在使用带有 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_
  • 或者这将代表一个训练有素的管道,从最好的得分分裂

此外,有没有办法访问与获胜/优化管道的拆分集相对应的完整训练模型集?

4

1 回答 1

2

TPOT 将适合整个训练集的最终“最佳”管道:代码

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

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

此外,有没有办法访问与获胜/优化管道的拆分集相对应的完整训练模型集?

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

于 2018-08-24T16:40:40.497 回答