如何从已保存的ML模型中加载训练及测试集数据用于拼接
合并已保存模型的历史数据集与新数据集的可行方案
通常训练完成的ML模型文件(如.h5、.pkl格式)仅存储模型结构与权重,不会自动绑定训练/测试集数据——你直接调用模型的x_train等属性是无效的。要实现数据集合并,需先将历史数据集单独存储,再加载后与新数据拼接。
第一步:存储历史数据集(若未提前保存)
在训练原模型的环境中,把历史训练/测试集单独存为数据文件:
- 用Pickle存储(适配数组、结构化数据):
import pickle # 假设历史数据集变量为x_train_old、y_train_old、x_test_old、y_test_old with open('historical_train.pkl', 'wb') as f: pickle.dump((x_train_old, y_train_old), f) with open('historical_test.pkl', 'wb') as f: pickle.dump((x_test_old, y_test_old), f)
- 用CSV存储(适配表格型数据):
import pandas as pd # 若数据集为DataFrame格式 x_train_old.to_csv('x_train_old.csv', index=False) y_train_old.to_csv('y_train_old.csv', index=False) x_test_old.to_csv('x_test_old.csv', index=False) y_test_old.to_csv('y_test_old.csv', index=False)
第二步:加载并合并数据集
加载历史数据
- Pickle方式加载:
import pickle with open('historical_train.pkl', 'rb') as f: x_train_old, y_train_old = pickle.load(f) with open('historical_test.pkl', 'rb') as f: x_test_old, y_test_old = pickle.load(f)
- CSV方式加载:
import pandas as pd x_train_old = pd.read_csv('x_train_old.csv') y_train_old = pd.read_csv('y_train_old.csv') x_test_old = pd.read_csv('x_test_old.csv') y_test_old = pd.read_csv('y_test_old.csv')
合并历史与新数据
假设下月新数据集变量为x_train_new、y_train_new、x_test_new、y_test_new,需保证新旧数据的特征维度、结构完全一致:
- 数组/矩阵格式(如NumPy数组):
import numpy as np x_train_combined = np.concatenate([x_train_old, x_train_new], axis=0) y_train_combined = np.concatenate([y_train_old, y_train_new], axis=0) x_test_combined = np.concatenate([x_test_old, x_test_new], axis=0) y_test_combined = np.concatenate([y_test_old, y_test_new], axis=0)
- DataFrame格式:
x_train_combined = pd.concat([x_train_old, x_train_new], axis=0, ignore_index=True) y_train_combined = pd.concat([y_train_old, y_train_new], axis=0, ignore_index=True) x_test_combined = pd.concat([x_test_old, x_test_new], axis=0, ignore_index=True) y_test_combined = pd.concat([y_test_old, y_test_new], axis=0, ignore_index=True)
关键注意事项
- 必须保证新旧数据的特征顺序、数据类型、缺失值处理规则完全一致,否则合并后模型训练会出现异常。
- 若原模型使用了预处理管道(如Scikit-learn的Pipeline),需同时保存预处理组件,确保新数据的预处理逻辑与历史数据完全匹配。
内容的提问来源于stack exchange,提问作者Navya Raj
相关产品推荐
相关产品推荐

