支持的数据集格式¶
本页列出了支持的数据集格式及其潜在限制。
在 YDF 中,传递数据集有两种方式
- Python 数据集对象,例如 Pandas DataFrame。
- 类型化路径 (typed-path),例如 "csv:/path/to/dataset"。
使用 Python 对象数据集具有灵活性,您可以轻松对数据应用预处理操作。但是,对于大型数据集效率较低,因为整个数据集需要加载到内存中。一般来说,Python 对象数据集最适合少于 1 亿个样本的数据集。
另一方面,类型化路径 (typed-path) 更节省内存,并且分布式训练需要使用它们。然而,它们不够灵活(预处理需要具体化输出),并且对某些格式和特征语义的支持有限。
提供 Python 数据集的推荐方法是使用 NumPy 数组字典。Pandas DataFrame 也受到良好支持。对于类型化路径数据集,目前的推荐是使用 TensorFlow Records,但这将来可能会改变。
格式 | 可用性 | 作为 Python 对象 | 类型化路径前缀 | 备注 |
---|---|---|---|---|
NumPy 数组字典 | 公开 | 原生 | 高效;推荐用于小型数据集 | |
Pandas DataFrame | 公开 | 原生 | ||
csv | 公开 | csv | 不支持多维特征。 | |
TensorFlow Records (gzip 压缩) | 公开 | 使用 ydf.util.read_tf_recordio | tfrecord | 高效;推荐用于大型数据集 |
TensorFlow Records (非压缩) | 公开 | 使用 ydf.util.read_tf_recordio | tfrecordv2 | 效率低;应避免使用 |
TensorFlow Tensor | 公开 | 原生 | 效率低;应避免使用 | |
TensorFlow Dataset | 公开 | 原生 | 效率低;应避免使用 | |
Xarray | 公开 | 原生 | ||
TF Examples 的 SSTable | 内部 | sstable+tfe | ||
TF Examples 的 RecordIO | 内部 | recordio+tfe | 高效;推荐用于大型数据集 | |
YDF Examples 的 RecordIO | 内部 | recordio+ygge | 非常高效;适用于高级用户 | |
Capacitor | 内部 | capacitor | 非常高效;不支持多维特征。 |