我正在使用带有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/