You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置PyCaret的train_size=1.0仅训练全量数据集时遇错误,求指导

PyCaret 全数据集训练最优二分类模型方案

为什么设置train_size=1.0会报错

PyCaret的setup()默认依赖测试集完成模型评估与排序,当设置train_size=1.0时,没有剩余数据作为测试集,后续模型比较、指标计算步骤会因缺少测试数据触发错误。

正确实现全数据训练的两种方案

方案1:用交叉验证替代测试集评估

通过指定交叉验证折数,让PyCaret用全量数据的交叉验证结果评估模型,而非依赖划分出的测试集:

from pycaret.classification import setup, compare_models, finalize_model, predict_model

# df为你的全量训练数据集
clf_setup = setup(
    data=df,
    target='你的目标列名',
    test_data=None,  # 不预留测试集
    fold=10,  # 设置交叉验证折数,用于模型性能评估
    verbose=False
)

# 搜索最优二分类模型
best_model = compare_models()

# 用全量数据重新训练最优模型(交叉验证阶段模型仅在训练折上训练)
final_best_model = finalize_model(best_model)

# 对未见过的数据进行预测
predictions = predict_model(final_best_model, data=unseen_data)

方案2:指定空测试集强制全数据训练

如果上述方案仍有问题,可以手动创建与训练集结构一致的空DataFrame作为测试集,避免PyCaret尝试划分测试数据:

import pandas as pd
from pycaret.classification import setup, compare_models, finalize_model, predict_model

# 创建与训练集结构一致的空测试集
empty_test = pd.DataFrame(columns=df.columns)

clf_setup = setup(
    data=df,
    target='你的目标列名',
    test_data=empty_test,
    fold=5,  # 交叉验证评估模型
    verbose=False
)

# 后续步骤同方案1
best_model = compare_models()
final_best_model = finalize_model(best_model)
predictions = predict_model(final_best_model, data=unseen_data)

关键注意事项

  • 若仅需训练单个模型而非搜索最优模型,可跳过compare_models(),直接用create_model()指定模型类型,再通过finalize_model()完成全量数据训练。
  • 交叉验证折数可根据数据集大小调整,数据量小则设小折数(如5),数据量大可设10或更高,保证评估结果可靠。

内容的提问来源于stack exchange,提问作者Han

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:35:11