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

如何在PyCaret中导出转换前后的训练集与测试集?

解决PyCaret中获取训练/测试集及NameError问题

为什么会出现NameError: name 'X_train' is not defined

PyCaret执行setup()后不会自动生成X_train/X_test这类全局变量,直接调用未定义的变量自然会触发错误。需要通过PyCaret提供的get_config()方法提取训练集、测试集等内部对象。

导出转换前后的训练集和测试集

1. 获取**未预处理(转换前)**的原始数据集

import pandas as pd

# 从setup的配置中提取原始特征和标签
X_train_raw = get_config('X_train')
y_train_raw = get_config('y_train')
X_test_raw = get_config('X_test')
y_test_raw = get_config('y_test')

# 合并特征与标签,得到完整的原始训练/测试集
train_raw = pd.concat([X_train_raw, y_train_raw], axis=1)
test_raw = pd.concat([X_test_raw, y_test_raw], axis=1)

2. 获取**预处理后(转换后)**的数据集

如果你需要导出经过编码、特征工程、去共线性等操作后的数据集,可以提取X_train_transformed和X_test_transformed:

# 获取预处理后的特征矩阵
train_transformed = get_config('X_train_transformed')
test_transformed = get_config('X_test_transformed')

# 合并标签(转换后的特征是numpy数组,需转为DataFrame后再合并)
train_transformed = pd.DataFrame(train_transformed, columns=get_config('X_transformed_columns'))
train_transformed['final_label'] = y_train_raw.values

test_transformed = pd.DataFrame(test_transformed, columns=get_config('X_transformed_columns'))
test_transformed['final_label'] = y_test_raw.values

修正你的predict_model代码

用上面获取到的原始数据集替换未定义的X_train/X_test即可:

# 假设rft是你通过create_model('rf')训练得到的模型
train_data = predict_model(rft, data=train_raw, raw_score=True)
train_data['phase'] = 'train'

test_data = predict_model(rft, data=test_raw, raw_score=True)
test_data['phase'] = 'test'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:30:10