TensorFlow 2.7下UNSW_NB15数据集处理后张量的高效存重载方法咨询
处理UNSW_NB15数据集后的保存与重载最优方案
针对你的需求,推荐两种适配Python+TensorFlow 2.7场景的方案,都能避免手动整理列数据类型:
方案一:用Parquet格式保存Pandas DataFrame(最通用高效)
Parquet是列式存储格式,压缩率高、读写速度快,能完整保留所有列的数据类型,加载时无需手动指定,非常适合UNSW_NB15这类中型数据集。
步骤:
- 安装依赖:需要pyarrow或fastparquet作为引擎,执行:
pip install pyarrow
- 保存处理后的数据:
import pandas as pd # 假设df是你清洗/预处理后的UNSW_NB15数据集 df.to_parquet("processed_unsw_nb15.parquet", engine="pyarrow")
- 重载数据(自动保留类型):
df = pd.read_parquet("processed_unsw_nb15.parquet", engine="pyarrow") # 直接使用即可,所有列的类型和保存时完全一致
方案二:直接保存TensorFlow Dataset(适配TF流水线)
如果你的数据已经转换成tf.data.Dataset对象用于后续模型训练,可以用TensorFlow自带的方法保存,加载时只需复用元素结构即可。
步骤:
- 保存Dataset:
import tensorflow as tf # 假设ds是处理好的tf.data.Dataset tf.data.experimental.save(ds, "processed_unsw_nb15_tfds") # 同时保存元素结构(避免加载时手动指定) import pickle with open("dataset_element_spec.pkl", "wb") as f: pickle.dump(tf.data.experimental.get_element_spec(ds), f)
- 重载Dataset:
import tensorflow as tf import pickle # 加载元素结构 with open("dataset_element_spec.pkl", "rb") as f: element_spec = pickle.load(f) # 加载Dataset,自动恢复数据和类型 ds = tf.data.experimental.load("processed_unsw_nb15_tfds", element_spec=element_spec)
不推荐的方案
- Pickle:虽然能保留类型,但文件体积大,压缩效率低,不适合大数据集。
- CSV:会丢失数值类型(比如整数转字符串)、日期类型等,加载时必须手动指定每列的dtype,非常繁琐。
内容的提问来源于stack exchange,提问作者Alvinus Melius
相关产品推荐
相关产品推荐

